Using the Intrinsic Redundancy of Software

Software is sometimes redundant, in the sense that some operations are designed to behave like others but their executions differ. This redundancy can be either deliberately introduced, as in the case of N-version programming, or intrinsically present due to common design and development practices.

In this talk we present and discuss the notion of intrinsic redundancy, we show that it exists and we argue that it can be exploited both to automatically recover from runtime failures, and to enhance software testing.

We then focus on a technique that exploits this redundancy to automatically generate test oracles. We also present the results of an experimental evaluation that shows that such oracles can be quite effective in reveling faults within automatically generated tests and that they can even improve good hand-written test suites.

Andrea Mattavelli is a PhD student in informatics at the University of Lugano, Switzerland. He got his master degree at the University of Milan-Bicocca, Italy. His research interests focus mainly on software redundancy, and on software testing and analysis.