Code coverage
E’ sufficiente misurare la code coverage per garantirci un prospetto chiaro di come abbiamo testato un programma?
Come avrete già capito la risposta è negativa.
La coverage, così come viene calcolata, calcola per l’appunto la copertura ovvero l’esecuzione del codice sotto esame durante l’esecuzione dei test.
Detto questo, per testare una funzione basterebbe essere sicuri di percorrere tutte le varie istruzioni/cammini (ovvero eseguire tutte le righe di codice) per garantire una percentuale molto alta.
Come si può notare dall’immagine, tale codice è testato alla perfezione secondo questo strumento di reportistica.
Stryker Mutator
Se sottoponiamo lo stesso codice all’analisi con Stryker Mutator, noteremo che il risultato apparirà molto diverso:
Improvvisamente sembra che il nostro lavoro svolto per assicurarci che il codice funzioni correttamente sia inutile, ed in parte è così effettivamente.
Stryker Mutator è una libreria che si preoccupa di creare delle mutazioni di codice (ad esempio cambiare l’operatore di confronto da <= a >= ), cosa che peraltro potrebbe capitare a ciascuno di noi durante la giornata lavorativa, e verifica che i test intercettino questa modifica segnalandone il malfunzionamento:
Analizzando il report di Stryker Mutator notiamo esattamente dove i nostri test sono lacunosi e dove, con criterio, non reputandolo opportuno non serve intervento.