|
|
Manage Testing as a Continuous Process
|
||||||
|
|
"As a practical matter, the level of effort devoted to testing should reflect the importance of the software to the enterprise that maintains or uses it." --Howard Rubin and Brian Robbins Manage Testing as a Continuous Process The test program is one of the most valuable resources available
to a program manager. Like a diamond mine or an oil field, the
test program can be the source of vast riches for the program
manager trying to gauge the success of his/her program. Unfortunately,
it is often a resource that goes untapped. Few program managers
exploit the information available to them through their test
program. Rather, they view testing as a necessary evil - something
that must be "endured" with as little pain as possible.
This attitude often clouds their horizon and effectively shrouds
the valuable information available via the test program. This is not to say that testing is a panacea for all program
problems. For software systems of any significance, it is a practical
impossibility to test every possible sequence of inputs and situations
that might be encountered in an operational environment. The
objective of a test program is to instill confidence in users
and developers that the software product will operate as expected
when put into service. Because it is impossible to check all
possible situations, testing is, by its very nature, a sampling
discipline. A typically small number of test cases will be executed
and, from the results, the performance of the system will be
forecast. Testing is by its very nature a focused snapshot of
a system. It is also inherently inefficient. Like the oil field
mentioned earlier, for all the logic and analysis done beforehand,
many probes come up "dry", with the system operating
exactly as expected.
In organizing a test program, four key principles should be followed.
Preparation of test cases is something that should start very
early in a program. The best place to start them is during requirements
definition. During the infancy stages of a program, focus on
testing provides significant advantages. Not only does it ensure
that the requirements are testable, but the process of constructing
test cases forces the developer to clarify the requirement, providing
for better communication and understanding. As test cases are
designed, they should be documented along with their assumptions.
These test products should become contract deliverables and should
form the basis for regression tests needed during the maintenance
phase of the software life cycle. However, test cases are not
immune to errors. As such they, too, should be inspected to eliminate
defects. |