Mutation Testing
Mutation testing (or mutation analysis) is a fault based testing technique used to measure the quality of a test set. In mutation testing, for a program p, a set of faulty programs p', called mutants, is generated by small changes to the original program p. A transformation rule that generates a mutant from the original program is known as a mutation operator. Mutants can be classified into two types: First Order Mutants (FOMs) and Higher Order Mutants (HOMs). FOMs are generated by applying mutation operators only once. HOMs are generated by applying mutation operators more than once.
In traditional mutation testing, only FOMs will be adopted. Each FOM p' will be run against a test set T. If the result of running p0 is different from the result of running p for any test case in T, then the mutant p0 is said to be “killed”, otherwise it is said to have “survived”. The adequacy level of the test set T can be measured by a mutation score that is computed in terms of the number of mutants killed by T.
In higher order mutation testing we use the full range of
mutants, including higher order (where the order is greater
than one) and first order (a special case of higher orderin which the order is simply one). The HOMs used by
MILU in our approach to higher order mutation testing are
called subsuming HOMs; ones that are harder to kill than
the FOMs from which they are constructed. The full detail
and motivation for higher order mutation testing can be
found elsewhere.