Presenting three types of test cases and advising the optimal timing of writing each type of test case.
I bet you heard different definitions for test case. I know that test case has only one clear definition. Test case is a set of activities which allow the tester or developer detecting defects. That’s it! Extremely speaking, I don’t care if one of the set activities is paining the office wall if eventually all high and critical defects will be reported.
Different groups using different types of test cases.
Unit test case –
Unit test cases are being used by development team. When developer is completed the code writing he will start running unit test cases. These cases are more technical and usually contain certain activities which executing and checking queries, loops, compilations etc. A unit test case is mostly running on a local developer environment.
Optimal timing of writing unit test case:
The best timing to write unit test case is during development. Although each code line is a potential to be a defect, not each code line should be written as tests case. Selectively choose the line/s which can cause severe defects.
Subsystem test case –
Subsystem test cases are being used by both developers and testers. These test cases are necessary to perform, but some organizations are skipping directly to system test due to effort constraints. The test cases of subsystem test are focusing in the correctness of applications or outputs such as GUI windows, invoices, web sites, generation of files etc. The cases are checking the end results of the software. There are two main important tasks of subsystem cases:
1. Testing that back-end and front-end of the same functionality are working correctly.
2. Testing that two integrated front-end applications or two integrated back-end applications are working correctly.
Example for task number one, the set of subsystem test case activities will be the following: Testing the retrieval of the correct data of parameters in window application or in web site application which defined dynamically in tables or even hard-coded in the code lines.
Window or web site = front-end
Dynamic tables or hard-coded code lines = back-end
I can agree that in some extent system test is also performing end software output tests and integrated applications tests, but the difference is huge, see both below and system test article.
Optimal timing of writing subsystem test case:
The most efficient time to write subsystem test cases is during code review activity. The review of the code as one package is providing the ability to understand what integration constraints of this code can be. It is no longer a local isolated query which is running stand alone but rather wide and correlated one.
System test case –
System test cases are being used by testers. The cases are detailed and covering the entire system functionality, therefore the total number of cases is much bigger than unit or subsystem tests. The effort or writing system test cases is almost the same as the effort of executing them, because the analysis of many important cases is required time and resources.
In software, several applications are integrated. Some of them are internal and others are external. A complex system will have many different interfaces, some of them are GUI applications others are receiving flat files etc. An output of one application is an input of another one and so on.
Following are four important elements of system test cases:
1. Each test case will simulate a real live scenario.
2. The cases will execute with priorities according to the real live volume of each scenario.
3. Cross application scenarios will test carefully.
4. Test execution will run on environments which close to the production platform from data and infrastructure point of views.
Optimal timing of writing system test cases:
In order to gain both time and knowledge system test cases should be prepared from the moment development finished the design. In other words, once development team knows how and what is going to be changed system test should be involved and cases should be written.