TL;DR
In the previous post, we introduced test preconditions and postconditions. Today we answer the question is test case an obsolete artifact in modern software testing. We will introduce you to software testing based on the remarkable book, Introduction To Software Testing by Paul Ammann and Jeff Offutt.
Test Case
A test case is composed of the test case values, expected results, prefix values, and postfix values necessary for a complete execution and evaluation of the software under test [Paul Ammann and Jeff Offutt].
The greatest critique in modern testing on test cases is that test cases do not support software testing activities. Does that imply that we should forget about test cases for good?
We need to understand the difference between verification and validation:
The main question in verification is: was something implemented correctly?
The main question invalidation is: are we building the right thing?
Test Cases are still needed artifacts in the verification process. Note that in the above definition there is no single word about the steps, but a lot of values: test case values, expected values, prefix, and postfix values. We can call them test data. Based on my experience, project teams very often forget the importance of test data. A test case is not necessary a Word Document, it could be a wiki page, JSON file, or SQL script. Their greatest value is a reference point for the project team to find information about test data.
Test Set
A test set is simply a set of test cases.
With the test set, we define our verification coverage value.
Executable Test Script
A test case that is prepared in a form to be executed automatically on the test software and produce a report.
The value of the executable test case or test script is for regression testing for features that did not change in the current release. It could be in any form that the computer could run it: shell script, any programming language framework, or proprietary tool for software testing.
Which test cases we should automate? The rule is very simple:
If you are going to execute a test case more than three times in the future, you should automate it.
Remember
It is important to understand the difference between verification and validation. They require a different skill set for software testers.