Mutation testing e AI
Perché i test verdi non bastano, e come gli agenti possono chiudere il loop
Due articoli, nati da un talk, su cosa significa davvero avere test affidabili. Si parte dalla differenza tra coverage e mutation score, con un bug reale rimasto in produzione per tre settimane, e si arriva a chiudere il loop: agenti che leggono il report dei mutanti per migliorarsi, con i primi numeri di produzione (Meta ACH e Just-in-Time testing).
Test verdi e codice sano non sono la stessa cosa
Diamo per scontata un'equazione: i test passano, quindi il codice funziona. Quasi sempre regge. Quando non regge, il conto arriva su codice coperto, testato e verde, e nessun test se n'era accorto.
La coverage risponde a una domanda sola: questo codice viene eseguito? Non risponde a quella che conta: se questo codice fosse sbagliato, i test se ne accorgerebbero? Il mutation testing risponde alla seconda, rompendo il codice apposta e contando quante rotture i test rilevano.
La serie parte da un bug rimasto tre settimane in produzione con il 93% di coverage, e arriva alla domanda che gli agenti AI rendono urgente: se i test li scrive una macchina, chi controlla che funzionino? La risposta è che serve un arbitro esterno e formale, e che quel ruolo il mutation score lo sa fare.
Cosa imparerai
- ✓ Distinguere coverage (il codice viene eseguito) da mutation score (i test verificano davvero)
- ✓ Riconoscere i buchi tipici di una suite: dato non discriminante, assertion incompleta, boundary non coperto
- ✓ Usare il report dei mutanti survived come prompt di ritorno per un agente
- ✓ Capire dove il mutation testing sta entrando in produzione (Meta ACH, Just-in-Time testing)
Articoli della serie
- 01Come il mutation testing mi ha fatto capire che la mia suite stava mentendo 7 min
93% di coverage, tutti verdi, e un terzo dei test non verificava niente. Cosa ha mostrato Stryker.NET, e come sono passato dal 65% al 92%.
→ - 02Gli agenti scrivono i test. Chi controlla che funzionino davvero? 6 min
Il mutation score correla con i bug reali a R² ≈ 0,70, la line coverage si ferma a 0,25. Come diventa l'arbitro dei test scritti dagli agenti.
→