E' un software che aggiunge (di nascosto) informazioni nel codice compilato per tenere traccia SE, durante l'esecuzione, si e' passati per la corrispondente linea di codice sorgente.
In generale, usando questi tool, esiste una relazione 1:N tra linea di codice sorgente e codice compilato.
Per il C/C++ il compilatore ha una direttiva dedicata (dipende dal compilatore, cerca nella documentazione).
Per Java, C#, Python ecc, ci sono dei tool che INIETTANO del codice opportuno nel bytecode.
Quando tu esegui il codice (che diventera' evidentemente molto piu' lento), praticamente viene incrementato un contatore ogni volta che si passa per il codice relativo ad una determinata linea di codice sorgente.
Alla fine puoi avere un report oppure, con certi IDE, puoi vedere quali linee di codice sorgente sono state eseguite e quali no, e delle statistiche che ti dicono quanto del codice sorgente e' stato testato (il 50%, il 20%, il 99%, ecc).
Tu, a partire dalle linee di codice NON ESEGUITE devi inventarti un caso di test che passa PROPRIO per quelle linee.
Non e' facile, ma e' il sistema SERIO per testare un'applicazione
Cerca 'code coverage' con Google