Pokrycie Kodu (Code Coverage) nie jest wskaźnikiem dla kierownictwa

We wpisie o pokryciu kodu (Code Coverage) napisałem:

Należy pamiętać, że to są narzędzia dla programisty

Co przez to rozumiem? Code Coverage nie może być używany przez kierownictwo/zarząd/management/etc – a już pod żadnym pozorem nie może być związany finansowo z wypłatą programisty. Dlaczego? Przyciśnięty programista może bardzo łatwo wygenerować dowolne pokrycie kodu i to przy dosyć małej ilości pracy. Pisząc odpowiednią ilość testów jednostkowych bez asercji można uzyskać 100% pokrycie. Jednak testy bez asercji nie mają żadnej wartości poza podnoszeniem kosztów utrzymania kodu.

CodeCoverage nie może być traktowane jako wskaźnik jakości kodu ponieważ zbyt łatwo można nim manipulować. CodeCoverage powinien być tylko i wyłącznie narzędziem pomagającym programistom w sprawdzeniu czy coś im nie umknęło.

Zatem jakie powinienem mieć pokrycie kodu?

Uncle Bob mówi 100%. Ani mniej ani więcej. Dokładnie 100%. Oczywiście często nie jesteśmy w stanie uzyskać takiej wartości jednak jest to cel, do którego  powinniśmy dążyć. Pod tymi słowami podpisuję się obiema rękami. Jeśli założymy że akceptowalną wartością jest np. 80% to poza faktem, że nie mamy żadnej pewności co do bezbłędności 20% naszego kodu to zostawiamy sobie lukę mentalną, w sumie 79% to też nie jest źle, 75% też nieźle, i tak można powoli przesuwać sobie granicę.

W ramach lektury OBOWIĄZKOWEJ polecam dwa krótkie filmiki:

http://cleancoder.posterous.com/100-test-coverage

http://cleancoder.posterous.com/100-code-coverage-again-3984