Page 227 -
P. 227

210   Chapter 8   Software testing




                                    Test                Test                Test                Test
                                    Cases               Data               Results             Reports

                        Design Test         Prepare Test       Run Program        Compare Results
                          Cases               Data             with Test Data      to Test Cases


                                      Typically, a commercial software system has to go through three stages of testing:
                  Figure 8.3  A model
                  of the software testing
                  process           1.  Development testing, where the system is tested during development to discover
                                        bugs and defects. System designers and programmers are likely to be involved
                                        in the testing process.
                                    2.  Release testing, where a separate testing team tests a complete version of the
                                        system before it is released to users. The aim of release testing is to check that
                                        the system meets the requirements of system stakeholders.
                                    3.  User testing, where users or potential users of a system test the system in their
                                        own environment. For software products, the ‘user’ may be an internal market-
                                        ing group who decide if the software can be marketed, released, and sold.
                                        Acceptance testing is one type of user testing where the customer formally tests
                                        a system to decide if it should be accepted from the system supplier or if further
                                        development is required.

                                      In practice, the testing process usually involves a mixture of manual and auto-
                                    mated testing. In manual testing, a tester runs the program with some test data and
                                    compares the results to their expectations. They note and report discrepancies to the
                                    program developers. In automated testing, the tests are encoded in a program that is
                                    run each time the system under development is to be tested. This is usually faster
                                    than manual testing, especially when it involves regression testing—re-running pre-
                                    vious tests to check that changes to the program have not introduced new bugs.
                                      The use of automated testing has increased considerably over the past few years.
                                    However, testing can never be completely automated as automated tests can only
                                    check that a program does what it is supposed to do. It is practically impossible to use
                                    automated testing to test systems that depend on how things look (e.g., a graphical
                                    user interface), or to test that a program does not have unwanted side effects.




                              8.1 Development testing


                                    Development testing includes all testing activities that are carried out by the team
                                    developing the system. The tester of the software is usually the programmer who
                                    developed that software, although this is not always the case. Some development
                                    processes use programmer/tester pairs (Cusamano and Selby, 1998) where each
   222   223   224   225   226   227   228   229   230   231   232