Limits of the discipline.
WHAT TESTING CANNOT ESTABLISH
That no defects remain That performance holds under conditions not tried That the software meets a need nobody articulated That it will behave correctly in environments not tested
WHAT MAKES SOME DEFECTS HARD TO FIND
Timing dependence Rare combinations of state Conditions occurring only at scale Interactions with other systems Environmental factors
WHAT RACE CONDITIONS REQUIRE
Deliberate concurrency testing, since they rarely appear otherwise.
WHAT SCALE-DEPENDENT DEFECTS REQUIRE
Testing at realistic volume.
WHY THAT IS FREQUENTLY SKIPPED
It is expensive, and the environment is difficult to create.
WHAT TO DO INSTEAD OF SKIPPING
Test at the largest scale practical, and monitor at full scale.
WHAT ENVIRONMENTAL DIFFERENCES CAUSE
Software working in testing and failing in production.
WHAT REDUCES THAT
Environments matching production closely Configuration managed identically Realistic data
WHAT TO ACCEPT
That some defects will only appear in production.
WHAT THAT REQUIRES
Rapid detection Rapid rollback Rapid fixing
WHAT TO BUILD
Those capabilities, deliberately.