Wodel-Test for FA

A mutation testing tool for FA generated via Wodel-Test

View on GitHub Update-site Wodel project .zip FA ecore Meta-model Standalone Eclipse+MuT for FA

Here is a list of the identified Finite Automata mutation operators useful for mutation testing:

Creates a final state

s = create State with {isFinal = true}
create Transition with {tar = s, symbol = one Symbol}

Creates a connected state

s = create State with {name = random-string(1, 4)}
t = create Transition with {tar = s, symbol = one Symbol}

Deletes a transition

remove one Transition

Deletes a state and adjacent transitions

remove one State where {isInitial = false}
remove all Transition where {src = null}
remove all Transition where {tar = null}

Changes the symbol in a transition

modify target symbol from one Transition to other Symbol

Change a final state to non-final

modify one State where {isFinal = true} with {reverse(isFinal)}

Changes the initial state to a different one

s0 = modify one State where {isInitial = true} with {isInitial = false}
s1 = modify one State where {self <> s0} with {isInitial = true}

Swaps the the symbols of two sibling transitions

t = select one Transition
modify one Transition where {self <> t and src = t->src}
  with {swapref(symbol, t->symbol)}

Redirects transition to a new final state

s = create State with {name = 'f', isFinal = true}
modify target tar from one Transition to s

Combination of adding a new transition and changing the initial state

s0 = modify one State where {isInitial = true} with {reverse(isInitial)}
s1 = modify one State where {self <> s0} with {isInitial = true}
create Transition with {src = s1, tar = s0, symbol = one Symbol}

Creates a lambda transition

create Transition

Creates a transition with the same symbol from a state to a different one

t = select one Transition where {symbol <> null}
create Transition
  with {src = t->src, symbol = t->symbol, tar = one State where {self <> t->tar}}

Creates a transition

create Transition with {symbol = one Symbol}

Changes the initial state to a different one

s0 = modify one State where {isInitial = true} with {isInitial = false}
s1 = modify one State where {self <> s0} with {isInitial = true}

Deletes a transition

remove one Transition

Swaps the direction of a transition

modify one Transition with {swapref(src, tar)}

Combination of adding a new transition and changing the initial state

s0 = modify one State where {isInitial = true} with {reverse(isInitial)}
s1 = modify one State where {self <> s0} with {isInitial = true}
create Transition with {src = s1, tar = s0, symbol = one Symbol}

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").