Principles of Software Testing (Pesticide Paradox, etc.)
1) Testing shows presence of defects
Section titled “1) Testing shows presence of defects”Testing can prove bugs exist.
It cannot prove there are no bugs.
2) Exhaustive testing is impossible
Section titled “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
Section titled “3) Early testing saves time and money”Shift-left testing:
- clarify requirements early
- test during development
4) Defect clustering
Section titled “4) Defect clustering”Most bugs appear in a small number of modules.
This helps you focus on:
- hotspots
- high-change areas
5) Pesticide paradox
Section titled “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
Section titled “6) Testing is context-dependent”Testing strategies differ for:
- banking apps
- games
- embedded devices
7) Absence-of-errors fallacy
Section titled “7) Absence-of-errors fallacy”A “bug-free” app that doesn’t meet user needs is still a failure.
Diagram: principle → practice
Section titled “Diagram: principle → practice”graph LR A[Principles] --> B[Test strategy] B --> C[Test design] C --> D[Automation + Manual] D --> E[Feedback / Improve]
pch.coffeeTagline
pch.coffeeCtapch.feedbackHeading
pch.feedbackSubheading