7 Principles of Software Testing
1. Testing shows presence of defects
Meaning: Testing helps you find bugs, not prove there are none.
Example: Even if you test something many times and don't find an issue, that doesn't mean it's
100% bug-free.
2. Exhaustive testing is impossible
Meaning: You can't test all possible inputs, combinations, or paths.
Example: You can't check every feature on every browser, every device, and every condition - it
would take forever!
3. Early testing saves time and money
Meaning: Start testing as soon as possible in the software life cycle.
Example: It's cheaper to fix a bug found in the design stage than after release.
4. Defect clustering
Meaning: Most bugs are usually found in a small number of modules.
Example: One page or feature may have many bugs, while others have few or none.
5. Pesticide paradox
Meaning: Running the same tests again and again won't find new bugs.
Example: Just like using the same pesticide stops working after a while, your tests must be updated
regularly to catch new issues.
6. Testing is context dependent
Meaning: The way you test depends on the type of software.
Example: A banking app needs more security testing than a calculator app.
7. Absence-of-errors fallacy
Meaning: Just because a system has no bugs doesn't mean it meets user needs.
Example: A perfectly working app that doesn't do what the user wants is still a failure.