|Despite quality improvement, the IT industry is still far from delivering zero defect software. Testing will remain an important activity in software development and maintenance, often taking more than 30 – 40% of the total budget. The increasing importance of software in the society and the costs involved in testing confirm the need for structuring the testing process.
Overview. Sogeti's Test Management Approach (TMap®) provides a solid foundation for structured testing. It helps deliver quality software faster. TMap is based on 4 cornerstones:
- A Lifecycle of test activities consistent with the software development lifecycle (L);
- A test team Organization where everyone is given tasks and responsibilities and incorporated in the project organization (O);
- The right Infrastructure and tools (I);
- Usable Techniques (T).
Lifecycle. The TMap lifecycle consist of the following phases:
- Planning & Control. It involves the creation of a test plan which defines the "Who, What, When, Where and How" of executing testing activities;
- Preparation. It determines whether the software specifications are of sufficient quality to achieve successful specification and execution of the tests;
- Specification. It involves specifying the test cases and setting up the infrastructure;
- Execution. During this phase test cases are executed, any difference between the predicted results and the achieved results are analyzed and, if applicable, defects are reported;
- Completion. It consists of conserving the test materials for future re-use, creating a final report and evaluating the test process.
V-Model. The V Model is probably the best-known testing model; it has been around a long time and shares certain attributes with the waterfall development model.
The V proceeds from left to right, depicting the basic sequence of development and testing activities. The model is valuable because it highlights the existence of several levels of testing and depicts the way each relates to a different development phase.
- Unit Testing. Unit testing is code-based and performed primarily by developers to demonstrate that their smallest pieces of executable code function suitably.
- Integration Testing. Integration testing demonstrates that two or more units or other integrations work together properly, and tends to focus on the interfaces specified in detailed design.
- System Testing. When all the units and their various integrations have been tested, system testing demonstrates that the system works end-to-end in a production-like environment to provide the business functions specified in the high-level design.
- Acceptance Testing. Finally, when the technical organization has completed these tests, the business or users perform acceptance testing to confirm that the system does, in fact, meet their business requirements.
Testing is more than executing tests. The testing process also involves identifying what to test (test conditions) and how they'll be tested (designing test cases), building the tests, executing them and finally, evaluating the results, checking completion criteria and reporting progress. Early test design is certainly recommended, as soon as some descriptions are available, you should identify test conditions and design test cases, which can apply to any or all levels of testing, eg when requirements are
available, you need to identify high-level test conditions to test those requirements