7️Testing Principles
Last updated
Last updated
The 7 Testing Principles are the fundamental principles that guide an effective testing approach.
The goal is to design a thorough yet feasible set of test cases that exercises the system as thoroughly as possible within time and resource constraints.
🔁 Testing shows the presence of defects
Testing can only identify the presence of defects, not their absence
Testing should be continued to ensure that all defects are caught and resolved
A defect is found during testing, corrected, and then retested
❌ Exhaustive Testing is not possible
A black box testing technique where you systematically test all possible combinations of inputs and conditions to uncover errors.
To "exhaust" 💯 all possibilities in order to have high confidence ✅ in the stability and robustness of the system.
Test valid values 🟢, invalid values 🔴, edge cases 🟠, repetition of valid/invalid values 🎡, and different combinations.
🚀 Early testing
Start testing early in the SDLC to capture and eliminate defects in the early stages
By identifying and resolving issues early on, the cost and time required for testing and rework can be significantly reduced
Testing during the requirement gathering and design phases
🔍 Defect clustering
A small number of modules usually contain most of the defects detected during pre-release testing or operation
More testing efforts can be focused on these modules, which can help to reduce the number of defects in the software
Modules that contain most of the defects are identified and more testing is focused on them
🤝 The pesticide paradox
Vary the testing techniques and methods used to ensure that all defects are caught and resolved
Repeating the same testing techniques may not catch defects that were caught and resolved initially
Using a variety of testing techniques such as unit testing, integration testing, and system testing
👨👩👦👦 Testing is context-dependent
Consider the context in which the software is being developed and tested
The testing approach and techniques used may vary depending on the context
Testing approaches and techniques used for web-based software may differ from those used for mobile applications
📈 Pareto principle
80% of the defects are likely to be caused by 20% of the modules
Focusing on this 20% of modules can help to improve the quality of the software
Identifying and focusing on the 20% of modules that are likely to have the most defects