Skip to content

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 coffee

Was this page helpful?

Let us know how we did