Sto lavorando su diverse applicazioni, principalmente quelle legacy. Attualmente, la copertura del loro codice è piuttosto bassa: generalmente tra il 10 e il 50%.
Da diverse settimane, abbiamo discussioni ricorrenti con i team di Bangalore (la parte principale dello sviluppo viene effettuata in mare aperto in India) in merito alle esclusioni di pacchetti o classi per Cobertura (il nostro strumento di copertura del codice, anche se stiamo attualmente migrando verso JaCoCo).
Il loro punto di vista è il seguente: poiché non scriveranno alcun test unitario su alcuni livelli dell'applicazione (1) , questi livelli dovrebbero essere semplicemente esclusi dalla misura di copertura del codice. In altre parole, vogliono limitare la misura di copertura del codice al codice testato o che dovrebbe essere testato .
Inoltre, quando lavorano su unit test per una classe complessa, i vantaggi - puramente in termini di copertura del codice - saranno inosservati a causa di un'applicazione di grandi dimensioni. Ridurre l'ambito della copertura del codice renderà più visibile questo tipo di sforzo ...
L'interesse di questo approccio è che avremo una misura di copertura del codice che indica lo stato corrente della parte dell'applicazione che consideriamo testabile .
Tuttavia, il mio punto di vista è che stiamo in qualche modo falsificando le cifre. Questa soluzione è un modo semplice per raggiungere un livello più elevato di copertura del codice senza alcuno sforzo. Un altro punto che mi preoccupa è il seguente: se mostriamo un aumento della copertura da una settimana all'altra, come possiamo sapere se questa buona notizia è dovuta al buon lavoro degli sviluppatori o semplicemente a nuove esclusioni?
Inoltre, non saremo in grado di sapere esattamente cosa viene considerato nella misura di copertura del codice. Ad esempio, se ho un'applicazione di 10.000 righe di codice con il 40% di copertura del codice, posso dedurre che viene testato il 40% della mia base di codice (2) . Ma cosa succede se impostiamo esclusioni? Se la copertura del codice è ora del 60%, cosa posso dedurre esattamente? Che il 60% del mio "importante" codice di base è stato testato? Come posso
Per quanto mi riguarda, preferisco mantenere il valore "reale" della copertura del codice, anche se non possiamo essere felici. Inoltre, grazie a Sonar, possiamo facilmente navigare nella nostra base di codici e conoscere, per qualsiasi modulo / pacchetto / classe, la propria copertura di codice. Ma ovviamente, la copertura del codice globale sarà ancora bassa.
Qual è la tua opinione su questo argomento? Come fai sui tuoi progetti?
Grazie.
(1) Questi livelli sono generalmente correlati all'interfaccia utente / bean Java, ecc.
(2) So che non è vero. In realtà, significa solo che il 40% della mia base di codice