Test di mutazione - Eccezioni e cicli infiniti

1

Sto scrivendo un sistema di test di mutazioni per Clojure e mi chiedevo a cosa serva il consenso generale quando un test fa in modo che un mutante lanci un'eccezione o entri in un ciclo "infinito" (il mio sistema giudica qualsiasi esecuzione di un mutante è significativamente più lungo della media per aver inserito un ciclo infinito) che non avrebbe dovuto farlo nel programma originale (cioè come risultato diretto di una mutazione).

Personalmente, direi che in questo caso il test ha ucciso il mutante, dal momento che ha esposto la mutazione, tuttavia non sono un esperto e quindi non ne sono del tutto sicuro.

    
posta OParry 07.10.2018 - 09:40
fonte

1 risposta

2

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.

    
risposta data 07.10.2018 - 10:57
fonte

Leggi altre domande sui tag