Page 58 -
P. 58
2.2 Process activities 41
Component Acceptance
Testing System Testing Testing
Figure 2.6 Stages
of testing
approach, leaving familiar components till last because they know how to develop
them. Some developers like to define data early in the process then use this to drive
the program development; others leave data unspecified for as long as possible.
Normally, programmers carry out some testing of the code they have developed. This
often reveals program defects that must be removed from the program. This is called
debugging. Defect testing and debugging are different processes. Testing establishes the
existence of defects. Debugging is concerned with locating and correcting these defects.
When you are debugging, you have to generate hypotheses about the observable
behavior of the program then test these hypotheses in the hope of finding the fault that
caused the output anomaly. Testing the hypotheses may involve tracing the program
code manually. It may require new test cases to localize the problem. Interactive
debugging tools, which show the intermediate values of program variables and a trace
of the statements executed, may be used to support the debugging process.
2.2.3 Software validation
Software validation or, more generally, verification and validation (V&V) is
intended to show that a system both conforms to its specification and that it meets
the expectations of the system customer. Program testing, where the system is exe-
cuted using simulated test data, is the principal validation technique. Validation may
also involve checking processes, such as inspections and reviews, at each stage of the
software process from user requirements definition to program development.
Because of the predominance of testing, the majority of validation costs are incurred
during and after implementation.
Except for small programs, systems should not be tested as a single, monolithic
unit. Figure 2.6 shows a three-stage testing process in which system components are
tested then the integrated system is tested and, finally, the system is tested with the
customer’s data. Ideally, component defects are discovered early in the process, and
interface problems are found when the system is integrated. However, as defects are
discovered, the program must be debugged and this may require other stages in the
testing process to be repeated. Errors in program components, say, may come to light
during system testing. The process is therefore an iterative one with information
being fed back from later stages to earlier parts of the process.
The stages in the testing process are:
1. Development testing The components making up the system are tested by the
people developing the system. Each component is tested independently, without
other system components. Components may be simple entities such as functions