La copertura del codice ti dice quanto del tuo codice è coperto dai test. Non ti dice molto sulla qualità dei test.
Ad esempio, una copertura del codice di, diciamo, il 70% potrebbe essere ottenuta da test automatici che esercitano funzionalità banali come getter e setter e tralasciare cose più importanti come verificare che un calcolo complesso fornisca risultati corretti, casi angolari e così via. Anche se la copertura del codice è al 100%, i test potrebbero non considerare input speciali per il codice che causano il fallimento.
Quindi, una copertura del codice relativamente alta non implica necessariamente che il codice sia ben testato e quindi i difetti non possono ancora essere rilevati dai test.
D'altra parte, una copertura di codice basso significa che gran parte del codice non è stato testato affatto , quindi può essere che alcuni moduli importanti non siano correttamente verificati. A volte ha senso avere una copertura del codice relativamente bassa per i test automatici, ad es. può essere più efficace fare clic su un pulsante GUI e verificare che venga visualizzata la finestra di dialogo appropriata (test manuale) piuttosto che scrivere un test automatico corrispondente. Tuttavia, anche in questo scenario la copertura combinata per i test automatici e manuali sarebbe alta.
Quindi, la copertura del codice IMO solo non è un buon indicatore della qualità dei test perché funziona solo in una direzione:
- un punteggio di copertura del codice basso può indicare correttamente il codice che non è stato testato e potrebbe essere bacato o persino codice guasto;
- un alto punteggio di copertura del codice può nascondere i test scadenti e può darti troppa fiducia nella qualità del tuo codice.
Nota
Grazie a GNAT per avermi indicato per la copertura del codice per i test manuali.