A Model-based Framework for Language-independent Mutation Testing

View on GitHub

Wodel-Test is built on top of Wodel, a domain-specific language to define and execute model mutations.

Wodel is language independent, enabling the creation of mutation operators for any language defined by a meta-model.

Once the mutation operators are defined, Wodel-Test generates a complete Mutation Testing (MT) environment for the language as an Eclipse plugin.

This MT tool parses the program representing it as a model conformant to the language meta-model, applies the mutation operators, and evaluates the test suite on the generated mutants, offering a rich collection of metrics about the MT process.

This is an example of a Wodel program to replace a constructor call by a null literal in a Java program:

generate 2 mutants
in "data/out/"
from "data/model/"
metamodel "data/model/java.ecore"
description "Simple mutation operator for Java"

with blocks {
	cir "Replaces a call to a constructor by null" {
		a = select one Assignment
			where {rightHandSide is typed ClassInstanceCreation}
		create NullLiteral in a->rightHandSide

MT tools generated with Wodel-Test:
Wodel-Test for FA FA ecore Meta-model
Wodel-Test for Java Java ecore Meta-model
Wodel-Test for ATL ATL ecore Meta-model

This is a short video demo of Wodel-Test for Java execution:

This video shows Wodel-Test environment features useful for MT tools:

This work has been funded by the Spanish Ministry of Science (RTI2018-095255-B-I00, project "MASSIVE") and the R&D programme of Madrid (P2018/TCS-4314, project "FORTE").