Mutation testing is a well-known technique of assessing the quality of test suites. Whilst support for mutation analysis exists for test techniques that operate on lower levels of system abstraction, i.e. code-level mutation operators, there is not a lot of support available for model-level mutation analysis.
We have developed a mutation tool for UML Class Diagrams called MutUML (Mutation for UML).
The tool applies 18 mutation operators to generate first order mutants. MutUML is separated into three distinct parts:
|#||Code||Mutation Operator Rule|
|1||UPA2||Adds an extraneous Parameter to an Operation|
|2||WCO1||Changes the constraint by deleting the references to a class Attribute|
|3||WCO3||Change the constraint by deleting the calls to specific operation|
|4||WCO4||Changes an arithmetic operator for another and supports binary operators: +, -,*,/|
|5||WCO5||Changes the constraint by adding the conditional operator ?not?|
|6||WCO6||Changes a conditional operator by another and supports operators: or, and|
|7||WCO7||Changes the constraint by deleting the conditional operator ?not?|
|8||WCO8||Changes a relational operator by another and supports operators: <, <=, >, >=, ==, !=|
|9||WCO9||Changes a constraint by deleting a unary arithmetic operator (-)|
|10||WAS1||Interchange the members (memberEnd) of an Association|
|11||WAS2||Changes the association type (i.e. normal, composite)|
|12||WAS3||Changes the memberEnd multiplicity of an Association (i.e. *-*, 0..1-0..1, *-0..1|
|13||WCL1||Changes visibility kind of the Class (i.e. private)|
|14||WOP2||Changes the visibility kind of an operation.
Restriction:WOP2 has to be applied to operations that are not related with any constraints
|15||WPA||Changes the Parameter data type (i.e. String, Integer, Boolean, Date, Real).
Restriction:WPA has to be applied to parameters that are not related with attributes in a constructor operation. To reduce mutants only a change for operation is counted
|16||MCO||Deletes a constraint (i.e. pre-condition, post-condition constraint, body constraint)|
|17||MAS||Deletes an Association.
Restriction: MAS has to be applied to associations that are not related with any constraints.
|18||MPA||Deletes a Parameter from an Operation.
Restriction: This mutation operator has to be applied to operations without related constraints