The most important consideration in program
testing is the design and creation of effective test cases.
Testing, however creative and seemingly complete, cannot
guarantee the absence of all errors. Test-case design is so
important because complete testing is impossible; a test of
any program must be necessarily incomplete. The obvious
strategy, then, is to try to make tests as complete as
possible.Given constraints on time and cost, the key issue of
testing becomes,
What subset of all possible test cases has the
highest probability of detecting the most errors?
The study of test-case-design methodologies
supplies answers to this question.
In general, the least effective methodology
of all is random-input testing-the process of testing a
program by selecting, at random, some subset of all possible
input values. In terms of the likelihood of detecting the most
errors, a randomly selected collection of test cases has
little chance of being an optimal, or close to optimal,
subset. In this chapter we want to develop a set of thought
processes that let you select test data more
intelligently.
Previous articles showed that exhaustive
black-box and white-box testing are, in general, impossible,
but suggested that a reasonable testing strategy might be
elements of both. This is the strategy developed in this
chapter. You can develop a reasonably rigorous test by using
certain black-box-oriented test-case-design methodologies and
then supplementing these test cases by examining the logic of
the program, using white-box methods.
Black box testing include
1. Equivalence partitioning
2. Boundary-value analysis
3. Cause-effect graphing
4. Error guessing White box testing includes,
1. Statement coverage
2. Decision coverage
3. Condition coverage
4. Decision-condition coverage
5. Multiple-condition coverage
Nobody ever promised that software testing
would be easy. To quote an old sage, "If you thought designing
and coding that program was hard, you ain't seen nothing
yet."
The recommended procedure is to develop test
cases using the black-box methods and then develop
supplementary test cases as necessary with white-box methods.
We'll discuss the more widely known white-box methods
first. |