|
Mutation Testing
What is mutation testing?
Being S the system under test, mutation generates a set of mutants M={M1, M2, … Mn} from S, each one containing one or more syntactic changes, most of which will be faults. The original idea of mutation is to build a test suite that finds all the faults injected into the mutants. Each syntactic change is seeded into the mutant using a "mutation operator":
The test case corresponding to test data (1, 1) produces different outputs for the original program (whose output is correct) and for the Mutant 1: thus, this test case found the fault introduced in the mutant, and it is said that the mutant is killed. On the other hand, since all the test cases give the same output as with the original program, it is said that Mutant 4 is alive. Moreover, this mutant will never be killed by any test case since it is "functionally equivalent" to the original code. Functionally-equivalent mutants may be considered as noises in the step of result analysis, since they impede knowing the quality of the test suite: they have a fault (actually, a syntactic change on the original code) that is impossible to find by any test case.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||

