Testing fundamentals & the 7 principles
Software testing is the process of evaluating a software product's quality and finding defects. Testing is not only bug hunting: it provides information about the product, reduces risk and supports decision making.
QA (Quality Assurance), QC (Quality Control) and Testing are different concepts:
- QA — focuses on processes, prevents defects
- QC — focuses on the product, checks quality
- Testing — is part of QC, detects defects
| Principle | Meaning |
|---|---|
| 1. Testing shows presence of defects | Testing can find defects but cannot prove their absence |
| 2. Exhaustive testing is impossible | You cannot test everything — risk-based selection is needed |
| 3. Early testing | The earlier you start, the cheaper defects are to fix |
| 4. Defect clustering | Most defects cluster in a few modules (Pareto) |
| 5. Pesticide paradox | Repeating the same tests stops finding new bugs — tests must evolve |
| 6. Testing is context dependent | A banking system and a mobile game are not tested the same way |
| 7. Absence-of-errors fallacy | A bug-free system that misses user needs still fails |
In interviews, explaining principles with real examples beats reciting them. E.g.: "Our regression suite had gone stale and stopped catching new bugs — a real case of the pesticide paradox."
📚 Sources and documentation
- ISTQB Glossaryofficialglossary.istqb.org
The official definitions — the reference point when a term is disputed in an interview.