1. All tests should be traceable to customer requirements. This is in order to uncover any defects that might cause the program or system to fail to meet the client’s requirements.
2. Tests should be planned long before testing begins. Soon after the requirements model is completed, test planning can begin. Detailed test cases can begin as soon as the design model is designed.
3. The Pareto principle applies to software testing. Stated simply, the Pareto principle implies that 80 percent of all errors uncovered during testing will likely be traceable to 20 percent of all program components. The problem, of course, is to isolate these suspect components and to thoroughly test them.
4. Testing should begin “in the small” and progress toward testing “in the large.” The first tests planned and executed generally focus on individual components. As testing progresses, focus shifts in an attempt to find errors in integrated clusters of components and ultimately in the entire system.
5. Exhaustive testing is not possible. The number of path permutations for even a moderately-sized program is exceptionally large. For this reason, it is impossible to execute every combination of paths during testing. It is possible,however, to adequately cover program logic and to ensure that all conditions in the component-level design have been exercised.
6. To be most effective, testing should be conducted by an independent third party. The software engineer who has created the system is not the best person to conduct all tests for the software.