Guidelines for Success
Remember: Work expands to fill available time.
Few tests are completed ahead of schedule, but many projects are extended because of problems found at the end. Considering the effect of secondary testing, such as regression tests, it is possible to see how a two-week test can easily turn into a four- or six-week test.
Have a plan—and plan for the unexpected.
Count on the possibility that you will need to perform regression testing, or that a new version of the software will be delivered in the middle of the test, and so forth.
- “He who every morning plans the transaction of the day and follows out the plan carries a thread that will guide him through the labyrinth of the most busy life. . . . But where no plan is laid, where the disposal of time is surrendered merely to the chance of incidents, chaos will soon reign.”
- —Victor Hugo
Control your scope.
The scope of the test should be clearly defined in the test plan. This lets you set reasonable test objectives that you can accomplish within the project schedule. Prioritize the scope based on risk.
- “Besides the noble art of getting things done, there is the noble art of leaving things undone. The wisdom of life consists in the elimination of nonessentials.”
- —Lin Yutang
Test early and often.
In this context, we are also considering reviews and inspections as static tests performed early in the project. Defects found at the end of a project (or even worse, in production) are costly, and they are a major contributor to project failure. Therefore, it makes sense to perform requirements, design, and code reviews to catch defects before they are built into the system.
Use techniques that leverage your time and resources.
There are techniques that can help you deal with the infinite number of possible test case combinations. One very effective technique is cause-effect graphing based on requirements, which not only reduces the number of test cases, but also increases test coverage.