Relative correctness is the property of a program to be more-correct than
another with respect to a given specification. Whereas the traditional
definition of (absolute) correctness divides candidate program into two classes
(correct, and incorrect), relative correctness arranges candidate programs on
the richer structure of a partial ordering. In other venues we discuss the
impact of relative correctness on program derivation, and on program
verification. In this paper, we discuss the impact of relative correctness on
program testing; specifically, we argue that when we remove a fault from a
program, we ought to test the new program for relative correctness over the old
program, rather than for absolute correctness. We present analytical arguments
to support our position, as well as an empirical argument in the form of a
small program whose faults are removed in a stepwise manner as its relative
correctness rises with each fault removal until we obtain a correct program.Comment: In Proceedings PrePost 2016, arXiv:1605.0809