L'obiettivo del test delle mutazioni è verificare che una suite di test sia in grado di rilevare il tipo di errori introdotti dal sistema di test delle mutazioni nel codice in esame. Ciò significa che il sistema di test delle mutazioni esercita due software: il codice sotto test soggetto a mutazioni e una serie di test che tenta di stabilire se il codice in prova funzioni correttamente.
Un buon framework di testing segna una testcase come fallita quando si verifica un'eccezione imprevista (mentre un framework errato dovrebbe interrompere la corsa a causa di un'eccezione non gestita). Ciò significa che se il mutante genera un'eccezione, ciò dovrebbe comportare un risultato di test diverso e l'eccezione non dovrebbe essere visibile al sistema di test delle mutazioni.
La non-terminazione di un banco di prova non è in genere catturata dal framework di testing, sebbene alcuni possano prenderlo in base a funzioni simulate che vengono chiamate troppo spesso.
Per il sistema di test delle mutazioni, vorrei trattare la mancata esecuzione di un test come difetto che fa viene rilevato dalla combinazione di testsuite e operatore umano.
A mio avviso, se un'eccezione raggiunge il sistema di test delle mutazioni, dovrebbe essere segnalato come problema nella suite di test, non nel codice in prova.
In entrambi i casi, il mutante può essere considerato come ucciso.