Tests and Proofs
Bernhard Beckert and Reiner Hähnle (eds).
This volume contains those research papers presented at the Second
International Conference on Tests and Proofs (TAP 2008) that were not
included in the main conference proceedings.
TAP was the second conference devoted to the convergence of proofs and
tests. It combines ideas from both areas for the advancement of software
quality.
To prove the correctness of a program is to demonstrate, through impeccable
mathematical techniques, that it has no bugs; to test a program is to run it
with the expectation of discovering bugs. On the surface, the two techniques
seem contradictory: if you have proved your program, it's fruitless to comb it
for bugs; and if you are testing it, that is surely a sign that you have given
up on any hope to prove its correctness. Accordingly, proofs and tests have,
since the onset of software engineering research, been pursued by distinct
communities using rather different techniques and tools.
And yet the development of both approaches leads to the discovery of common
issues and to the realization that each may need the other. The emergence of
model checking has been one of the first signs that contradiction may yield to
complementarity, but in the past few years an increasing number of research
efforts have encountered the need for combining proofs and tests, dropping
earlier dogmatic views of their incompatibility and taking instead the best of
what each of these software engineering domains has to offer.