Sto lavorando su diverse applicazioni, principalmente 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 è realizzata in mare aperto in India) per quanto riguarda le esclusioni di pacchetti o classi per Cobertura (il nostro strumento di copertura del codice, anche se stiamo migrando a JaCoCo ).
Il loro punto di vista è il seguente: poiché non scriveranno alcun test unitario su alcuni strati 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 che è testato o dovrebbe essere testato .
Inoltre, quando lavorano su un test unitario per una classe complessa, i benefici - puramente in termini di copertura del codice - non saranno notati a causa di un'applicazione di grandi dimensioni. Ridurre lo scopo della copertura del codice renderà questo tipo di sforzo più visibile ...
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 in qualche modo stiamo simulando le cifre. Questa soluzione è un modo semplice per raggiungere un livello superiore di copertura del codice senza alcuno sforzo. Un altro punto che mi disturba è il seguente: se mostriamo un aumento della copertura da una settimana all'altra, come possiamo dire se questa buona notizia è dovuta al buon lavoro degli sviluppatori, o semplicemente a causa di nuove esclusioni?
Inoltre, non saremo in grado di sapere esattamente cosa viene considerato nella misura di copertura del codice. Ad esempio, se ho 10.000 righe di codice con il 40% di copertura del codice, posso dedurre che il 40% del mio codice base è testato (2) . Ma cosa succede se impostiamo le esclusioni? Se la copertura del codice è ora del 60%, cosa posso dedurre esattamente? Che il 60% del mio codice "importante" è stato testato? Come posso
Per quanto mi riguarda, preferisco mantenere il valore di copertura del codice "reale", anche se non possiamo esserne contenti. Inoltre, grazie a Sonar, possiamo navigare facilmente nella nostra base di codice e sapere, per ogni modulo / pacchetto / classe, la sua copertura di codice. Ma ovviamente la copertura del codice globale sarà ancora bassa.
Qual è la tua opinione su questo argomento? Come fai nei tuoi progetti?
Grazie.
(1) Questi livelli sono generalmente correlati ai fagioli UI / Java, ecc.
(2) So che non è vero. In realtà, significa solo che il 40% della mia base di codice