
7 Principles for Effective Testing
Hi, my name is Vladimir Serov, and I'm a QA engineer at Mish. I'm sharing with you the testing principles that we use in our work.
1. Testing shows the presence of defects, not their absence.
Testing can reveal errors, but it can never prove that a system is completely free of them. No matter how many tests pass, there may always be a case that exposes a hidden defect.
2. Exhaustive testing is impossible..
No matter how thorough testing may be, it's impossible to account for all possible scenarios, which means we cannot anticipate all possible errors.
3. The absence-of-errors fallacy.
Finding many bugs — or even reaching a point where no new bugs appear — doesn’t mean the product is flawless or ready for release. The truth is simple: no software is entirely free of defects.
4. Early testing saves time and money.
Defects get more expensive to fix the later they’re found in the development cycle. Identifying issues early makes them faster, easier, and cheaper to resolve.
5. Defect clustering.
In most systems, a small number of modules contain the majority of bugs. This follows the Pareto principle: 20% of modules can hold 80% of the defects.
6. Testing depends on context.
The right methods, techniques, and types of testing depend on the nature of the system. For example, testing medical software requires stricter checks than testing a game.
7. The pesticide paradox.
If you run the same tests over and over, their effectiveness decreases — just like pests develop resistance to a pesticide. To keep finding new defects, tests need to be reviewed and updated regularly.
