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