There is a big dispute in the software testing world. In general, a test case is a pair of an input and an expected output (or as many books say, it mostly has just a single step: do sth and check it). ISTQB seems to be compliant with this. Of course in order to perform a test, one often has to follow certain actions/steps (start a module, open a window, navigate somewhere...) but these supporting steps are not intended to have an expected result if the test is verifying e.g. correctness of a calculation. But most testers do the following:
TC1 - Verify that file bigger than 10 mb cannot be uploaded
Step 1 Open a window - Ex:Window is opened
Step 2 Invoke the file dialog - Ex: The dialog is shown
Step 3 Click on the Browse button - Ex: File browser window appears
...
Step N Select a file bigger than 10 mb and confirm - Ex: An error message appears
Steps 1-3 are generic and possibly repeated for any similar actions involving a file browser. They are necessary for the final step but I do not think they should be verified in the same test case. Because if step 2 fails, the test case fails even though the actual test condition checked in the last step is correct!
Strictly speaking, I would consider this a test procedure as it actually consists of a few test cases.
Or is there something I am missing? I do not have access to ISO 29119 but I have read that it defined input as "a comprehensive descriptions of the actions/and or data" - which would mean all the steps would be performed as a part of input and not verified separately.
What is the usage of steps then, does it really make sense to use them as I describe?