By Tryggvi Björgvinsson
Date: Sunday, 14 November 2010 11:30
Duration: 45 minutes
Target audience: Any
Tags: expressions hacking mutation regular testing

You can find more information on the speaker's site:

Testing software is a difficult but rewarding task. Software testers have to foresee all that can go wrong and viciously try to make software fail before it hits production in order to prevent failurs in a production environment. Various test procedures and approaches exist to aid the software tester and software developers in general. Unit tests, system integration tests, regression tests, black box testing, box testing, and white box testing.

Software quality matters and because all humans make mistakes we need to test our software. Tests are important but, like the code itself, tests are created by humans so how can we be sure that they can catch all defects in our code? This is an old philosophical question, initially raised by Plato in The Republic, but rephrased by Juvenal in his Satires: "Quis custodiet ipsos custodes?" Who guards the guardians? Who tests the tests?.

One approach to testing the tests is called mutation testing, an approach initially proposed by Richard Lipton. Mutation testing is about making slight modifications to the original software to see whether the tests will catch the modified versions. A popular tool for Java based mutation testing is Jeff Offut's µJava (muJava). This talk introduces the reimplementation of Offut's µJava in Perl. The answer to who tests the Java tests, can therefore be: Perl.