Code, Learn

Stryker Mutator: creiamo mutanti dei nostri test!

12 Novembre 2020 - 2 minuti di lettura

I test di un software sono utili, se fatti bene e con criterio, ma come possiamo dimostrare tutto ciò?

Capita spesso, parlando con clienti o colleghi, di discutere di code coverage [1]. Per alcuni è una luce, un faro di speranza; per altri è un macigno da portare sulla schiena. Parlando di percentuali, 70%, 80%, 90% sono numeri che sembrano certificare una purezza del programma che spesso viene però disattesa.

No panic, per usare un’espressione rubata all’inglese: da qualche tempo ci viene in aiuto Stryker Mutator [2], una libreria di mutation testing.

Scopriamo di cosa si tratta.

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.

Conclusioni

Questo articolo non è stato scritto con l’intenzione di rendere inutile lo strumento di calcolo della copertura dei test ma anzi, invita il programmatore coscienzioso a provare questa libreria in modo da poter rendere i propri sforzi in fase di test efficaci e di valore.

Articolo scritto da