Analisi mutazionale

Una evoluzione del bebugging è l’analisi mutazionale. Dato un programma \(P\) e un test \(T\) (insieme di casi di test), viene generato un insieme di programmi \(\Pi\) simili al programma \(P\) in esame: tali programmi prendono il nome di mutanti.
Si esegue poi il test \(T\) su ciascun mutante: se \(P\) era corretto i programmi in \(\Pi\) devono essere sbagliati, ovvero devono produrre un risultato diverso per almeno un caso di test \(t \in T\). Se così non fosse, infatti, vorrebbe dire che il programma \(P\) non viene opportunamente testato nell’aspetto in cui si discosta dal mutante che non ha sollevato errori, per cui non si può essere sicuri della sua correttezza. Non viene cioè testata la correttezza del programma, ma piuttosto quanto il test è approfondito.

Si può quindi valutare la capacità di un test di rilevare le differenze introdotte nei mutanti tramite un nuovo criterio di copertura, che prende il nome di criterio di copertura dei mutanti.