100% Coverage is Possible

It doesn’t tell us anything about what the programmers intended, what the user desired, or what the tester observed. It says nothing about the tester’s engagement with the testing; whether the tester was asleep or awake.

Quelle: 100% Coverage is Possible | Developsense Blog

Ich bin ja auch ein Gegner dieser Code-Coverage-Diskussion, schon immer, denn ein Programm läuft auf etwas (OS, Hardware) und mit etwas (Framework, Webserver, …) und niemals alleine. Was nützt es 100% Code abzudecken, wenn der im Kontext wieder mal nur 10% des Universums ausmacht? Genau – nichts! Michael Bolton beschreibt das m.E. sehr gut:

Here’s just one example: code coverage is usually described in terms of the code that we’ve written, or that we have available to evaluate. Yet every program we write interacts with some platform that might include third-party libraries, browsers, plug-ins, operating systems, file systems, firmware. Our code might interact with our own libraries that we haven’t instrumented this time. So “code coverage” refers to some code in the system, but not all the code in the system.

Codeabdeckung ist ein Indikator um zu schauen, ob die Entwicklung versucht hat selbst festzustellen, ob sie das richtige Stück Software entwickelt hat – so verklausuliere ich das für mich. Man kann das unterschiedlich versuchen, bspw. sagt man in einem Projekt das einem die Geschäftsprozesse wichtig sind und man schreibt für diese aufwendige Tests, damit die bei jeder Codeänderung nach wie vor wie gewünsccht funktionieren. Selbst wenn die Codeabdeckung dort 100% erreichen würde, so sind die Außeneinflüsse unberücksichtigt, aber man hat sich mal für einen Weg entschieden (<schmerzliche> Erfahrungen tragen oft auch dazu bei), da man so den Kunden immer glücklich machen konnte und wenig bis gar keine Rückläufer (Fehler) bekam. Darauf kommt es letztendlich an.

Es wird mir wohl immer ein Rätsel bleiben, warum Projektlenker sehr oft auf diese Metrik schauen, ohne zu sehen was dahinter steckt, denn kluge Köpfe haben es auch nicht geschafft und warten darauf, das es ihnen jemand sagt, wie es geht:

James Bach doesn’t know how to do it. Jerry Weinberg doesn’t know how to do it. Cem Kaner doesn’t know how to do it. Other than what I’ve said above, to my knowledge, no one knows how to do it. So, it would be up to the client to explain how they think I could do it.