Automatic testing requires executable specifications. However, these executable specifications very often end up being as complicated as the programs they are meant to test. We propose a new method called "proof-based testing" that uses mathematical proof techniques to break up a complex specification which is hard to test directly, into smaller properties which together logically imply the original specification, but are easier to test. The proof techniques we have already found useful in this context are contrapositives, induction, and co-induction. The kind of programs that benefit most from this new approach are those with a high algorithmic content. Examples are optimization software, automated theorem provers, model checkers, and compilers. The project?s aim is to (1) investigate and classify the kind of programs that benefit from this technique, (2) develop a supporting theoretical framework for reasoning about the choices that must be made when applying this technique, and (3) evaluate experimentally the effectiveness of proof-based testing against more traditional methods.
Professor vid Software Technology (Chalmers)
Funding Chalmers participation during 2014–2017