at earlier stages in the programming process (such as at the end of each
design stage), but these are outside the scope of this book.
Before we begin the discussion of human testing techniques, take note
of this important point: Because the involvement of humans results in less
formal methods than mathematical proofs conducted by a computer, you
may feel skeptical that something so simple and informal can be useful.
Just the opposite is true. These informal techniques don’t get in the way of
successful testing; rather, they contribute substantially to productivity and
reliability in two major ways.
First, it is generally recognized that the earlier errors are found, the lower
the costs of correcting the errors and the higher the probability of correcting
them correctly. Second, programmers seem to experience a psychological
shift when computer-based testing commences. Internally induced pressures
seem to build rapidly and there is a tendency to want to ‘‘fix this darn bug
as soon as possible.’’ Because of these pressures, programmers tend to make
more mistakes when correcting an error found during computer-based testing
than they make when correcting an error found earlier.