Chapter 7 Testing and Verification
In this section, we investigate measures to make software more reliable. We first define formal notions of program correctness based on specifications. Then we discuss what failing programs and how we can detect failures. Afterwards we investigate different techniques to test programs. Finally, we discuss how our formal notions of correctness can be leveraged to design an automated program verification tool that is based on off-the-shelf solvers for logical formulas.