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.)