1.2.4 When can we meet our test objective?
Testing Principle – Early testing
Testing activities should start as early as possible in the software or system development life cycle and should be focused on defined objectives.
We can use both dynamic testing and static testing as a means for achieving similar test objectives. Both provide information to improve both the system to be tested, and the development and testing processes. We mentioned above that testing can have different goals and objectives, which often include:
- Finding defects;
- Gaining confidence in and providing information about the level of quality;
- Preventing defects.
Many types of review and testing activities take place at different stages in the life cycle, as we’ll see in Chapter 2. These have different objectives. Early testing – such as early test design and review activities – finds defects early on when they are cheap to find and fix. Once the code is written, programmers and tester often run a set of tests so that they can identify and fix defects in the software. In this ‘development testing’ (which includes component, integration and system testing) , the main objective may be to cause as many failures as possible so that defects in the software are identified and can be fixed. Following that testing, the users of the software may carry out acceptance testing to confirm that the system works as expected and to gain confidence that it has met the requirements.
Fixing the defects may not always be the test objective or the desired outcome. Sometimes we simply want to gather information and measure the software. This can take the form of attribute measures, such as mean time between failures to asses reliability, or and assessment of the defect density in the software to assess and understand the risk of releasing it.
When maintaining software by enhancing it or fixing bugs, we are changing software that is already being used. In that case an objective of testing may be to ensure that we have not made errors and introduced defects when we changed the software. This is called regression testing – testing to ensure nothing has changed that should not have changed.
We may continue to test the system once it is in operational sue. In this case, the main objective may be to assess system characteristics as reliability or availability.
Testing Principle – Defect clustering
A small number of modules contain, most of the defects discovered during pre-release testing or show the most operational failures.