Page 248 -
P. 248

Chapter 8   Further reading  231


                      KEY POINTS



                           Testing can only show the presence of errors in a program. It cannot demonstrate that there are
                            no remaining faults.
                           Development testing is the responsibility of the software development team. A separate team
                            should be responsible for testing a system before it is released to customers. In the user testing
                            process, customers or system users provide test data and check that tests are successful.
                           Development testing includes unit testing, in which you test individual objects and methods;
                            component testing, in which you test related groups of objects; and system testing, in which
                            you test partial or complete systems.
                           When testing software, you should try to ‘break’ the software by using experience and guidelines
                            to choose types of test cases that have been effective in discovering defects in other systems.

                           Wherever possible, you should write automated tests. The tests are embedded in a program that
                            can be run every time a change is made to a system.
                           Test-first development is an approach to development where tests are written before the code to
                            be tested. Small code changes are made and the code is refactored until all tests execute
                            successfully.
                           Scenario testing is useful because it replicates the practical use of the system. It involves
                            inventing a typical usage scenario and using this to derive test cases.

                           Acceptance testing is a user testing process where the aim is to decide if the software is good
                            enough to be deployed and used in its operational environment.




                     FURTHER RE ADING

                         ‘How to design practical test cases’. A how-to article on test case design by an author from a
                         Japanese company that has a very good reputation for delivering software with very few faults.
                         (T. Yamaura, IEEE Software, 15(6), November 1998.) http://dx.doi.org/10.1109/52.730835.

                         How to Break Software: A Practical Guide to Testing. This is a practical, rather than theoretical, book
                         on software testing in which the author presents a set of experience-based guidelines on designing
                         tests that are likely to be effective in discovering system faults. (J. A. Whittaker, Addison-Wesley,
                         2002.)

                         ‘Software Testing and Verification’. This special issue of the IBM Systems Journal includes a number
                         of papers on testing, including a good general overview, papers on test metrics, and test
                         automation. (IBM Systems Journal, 41(1), January 2002.)
                         ‘Test-driven development’. This special issue on test-driven development includes a good general
                         overview of TDD as well as experience papers on how TDD has been used for different types of
                         software. (IEEE Software, 24 (3) May/June 2007.)
   243   244   245   246   247   248   249   250   251   252   253