Principles of Software Testing (Pesticide Paradox, etc.)
1) Testing shows presence of defects
Testing can prove bugs exist.
It cannot prove there are no bugs.
2) Exhaustive testing is impossible
You can’t test every input combination.
So you prioritize:
- risk
- critical paths
- common user workflows
3) Early testing saves time and money
Shift-left testing:
- clarify requirements early
- test during development
4) Defect clustering
Most bugs appear in a small number of modules.
This helps you focus on:
- hotspots
- high-change areas
5) Pesticide paradox
If you run the same tests forever, they stop finding new bugs.
You must:
- refresh test cases
- add tests for new risks
- include exploratory testing
6) Testing is context-dependent
Testing strategies differ for:
- banking apps
- games
- embedded devices
7) Absence-of-errors fallacy
A “bug-free” app that doesn’t meet user needs is still a failure.
Diagram: principle → practice
false
graph LR A[Principles] --> B[Test strategy] B --> C[Test design] C --> D[Automation + Manual] D --> E[Feedback / Improve]
false
If this helped you, consider buying me a coffee ☕
Buy me a coffeeWas this page helpful?
Let us know how we did
