Assertive Testing [Reliable Code]
Gerard J. Holzmann · IEEE Software · 2015
Standard software testing might not catch important defects, and formal methods can be difficult to use. But, there's a middle ground between the two. This middle ground involves adding five steps to standard testing and employing test randomization, model-based testing, and a more aggressive use of assertions (also called self-tests).