All’ultimo agile day ho sentito più volte l’affermazione che il Code Coverage, che è la percentuale di codice coperta dagli Unit Test, non è necessariamente un’indicazione che i test siano dei buoni test. In linea di massima questa affermazione mi trova complessivamente d’accordo. Essendo il Code Coverage il risultato di un’analisi statica non ha necessariamente significato qualitativo.
Ritengo però che il Code Coverage dia comunque informazioni utilissime, non è tanto la percentuale di copertura che ritengo importante, annche se mi piace tendere al 100%, quanto il fatto che ad esempio a volte il Code Coverage di Visual Studio si comporta in maniera apparentemente bizzarra, in alcuni casi infatti:
- se guardiamo i risultati “tabellari” abbiamo una copertura del 97% di un determinato metodo xyz;
- mentre se guardiamo la “colorazione” del codice è tutto completamente azzurro, indicando una copertura del 100% per lo stesso metodo xyz;
Tutte le volte che mi è capitato era dovuto ad una sovra preoccupazione/codice fondamentalmente inutile ad esempio nella validazione dei parametri in ingresso, nelle condizioni che determinavano una if/else o nella mancanza di alcune sottigliezze come il “default” di uno switch/case…
Tutto questo per dire che non sempre è importante la percentuale ma è interessante analizzare tutti i risultati e confrontandoli scoprire che stiamo scrivendoo codice che non ci serve… che nessuno ci ha chiesto.
In questa direzione approcci come il TDD, ove applicabili, aiutano a minimizzare questi “sprechi” ;-)
.m