First law: The pesticide paradox. Every method you use to prevent or find bugs leaves a residue of subtler bugs against which those methods are ineffective.
In programming, it’s often the buts in the specification that kill you.
A good threat is worth a thousand tests.
Bugs lurk in corners and congregate at boundaries.
A design remedy that prevents bugs is always preferable to a test method that discovers them.
Testing proves a programmer’s failure. Debugging is the programmer’s vindication.