Wish I’d read this far down before my first reply.
What you seem to be saying here is that it’s important, when testing, to be able to be specific. I agree.
I should point out that this emphatically has nothing to do with test cases in any sense I’ve heard of them.
If I am doing a session on this API I will look at all of these factors, collect them, note them down, then I will determine what level of functional coverage I’m going for, write them down in a grid or run them through a pairwise system or whatnot, and execute as I need to. I perform testing and I make notes to the degree of specificity and exactness that makes the most sense for my purposes. Too exact and I cannot get enough done, too vague and I cannot draw reliable conclusions, so I go back and forth between the two. A tester has to be able to think both broadly and narrowly as the situation requires.
Sometimes I am very specific in my testing. I can use lab conditions. I might collect specific data and use statistical analysis. Also every tester must be able to work with confounding variables and be able to make consciously specific observations with proportional inferences based on the reliability of the quality and quantity of variations of those heuristic observations (although they don’t have to actually know most of those words to do it).
I never used a test case to achieve any of those ends. They are appallingly wasteful and error-prone in their communication, for doing testing, and for training purposes and they are costly in their storage and maintenance. They are an impractical way to approach testing. Give me any example of their value and I’ll likely find you a better way to solve that problem.
Session-based testing actually doesn’t ban anyone from using any tool, including test cases, if you found some insane context that calls for it, because while test cases focus on the process a session focuses on the purpose and while test cases are instruction-driven sessions are tester-driven.
Edit:
I’m trying to get my head around the perspective that leads to the idea that lower-script testing (not using test cases, using stuff like sessions instead) is vague or undisciplined. If it’s because it looks unstructured, that’s because the structure is internal, in the mind of the tester. It exists, we just don’t write it all down.