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
   53   54   55   56   57   58   59   60   61   62   63