14-05-2014, 11:13 AM
Seven Principles of Software Testing
Seven Principles of Software.pdf (Size: 862.67 KB / Downloads: 41)
Other verification techniques such as static
analysis, model checking, and proofs
have great potential, but none is ripe
for overtaking tests as the dominant
verification technique. This makes it
imperative to understand the scope
and limitations of testing and per-
form it right.
The principles that follow emerged
from experience studying software
testing and developing automated
tools such as AutoTest (http://se.
inf.ethz.ch/research/autotest).
Defining testing
As a verification method, testing
is a paradox. Testing a program to
assess its quality is, in theory, akin to
sticking pins into a doll—very small
pins, very large doll. The way out of
the paradox is to set realistic expec-
tations.
Regression testing
A characteristic of testing as prac-
ticed in software is the deplorable
propensity of previously corrected
faults to resuscitate. The hydra’s old
heads, thought to have been long cut
off, pop back up. This phenomenon
is known as regression and leads to
regression testing: Checking that
what has been corrected still works.
A consequence is that once you have
uncovered a fault it must remain part
of your life forever
Assessment criteria
In applying the last principle, the
issue remains of which criteria to
use. The testing literature includes
measures such as “number of tests
to first failure.” For the practitio-
ner this is not the most useful: We
want to find all faults, not just one.
Granted, the idea is that the first
fault will be corrected and the cri-
terion applied again. But successive
faults might be of a different nature;
an automated process must trigger
as many failures as possible, not
stop at the first.