Code Coverage Tools - Einsatzmöglichkeiten und Erfahrungsberichte
Code Coverage Tools - Einsatzmöglichkeiten und Erfahrungsberichte Als Senior Software Controller hört man unter den Kollegen oft falsche Aussagen über Code Coverage. Diese soll nun folgendes Kompendium aufdecken, damit andere Programmierer nicht wieder dem selben Irrtum aufsitzen.
/wedata%2F0033312%2F2011-09%2FCode-Coverage-Tools.jpg)
Mit Code Coverage nicht immer 100 Prozent Abdeckung
So kann man etwa nicht immer 100 Prozent Abdeckung erreichen, bedingt durch den mangelnden Durchlauf des Case in der Switch-Anweisung.
Dieser Zweig besteht immer, egal ob er explizit programmiert wurde oder nicht.
Ein weiterer Irrglaube besteht darin, dass der Name immer dasselbe Coverage-Maß anführt. Insbesondere wenn Codes wie C0 oder C1+ verwendet werden, ist Sorgfalt angesagt. Aufpassen sollte man auch bei der Messung, denn es nicht deutlich, wie Coverage gemessen wird. So besteht berechtigter Zweifel, wenn als Messergebnis das Modul Tessy angeführt ist.
Beispielsweise wenn zwei Zweige berechnet werden, charakterisieren die Label „case 0“, „case 1“ und „case 2“ ein und denselben Zweig, was damit argumentiert werden könnte, dass ja alle drei desselben Befehl ausführen.
Falls jedes Label als eigener Zweig nummeriert wird, gibt es ja schon vier Zweige. Anzeige Die Verschiedenheit wird somit erst klar und eindeutig, wenn ein Testfall mit (i==1) erledigt wird. Ergeben sich dadurch 25 Prozent Zweigüberdeckung?
Die Switch-Anweisung besteht aus vier Zweigen; somit 25 Prozent Zweigüberdeckung.
Nicht richtig ist weiters, wie der Code verfasst ist.
Ein Code in derselben Programmiersprache kann zur Erzielung eines bestimmten Coverage-Maßes eine unterschiedliche Anzahl von Testfällen erfordern.
Man kann einfach aus dem Code Testfälle folgern, mit denen man eine 100 prozentige Code-Coverage erreicht. Tools vernichten dies automatisch. Allerdings muss man sich dabei Folgende bewusst sein: Durch aus dem Code konsequenter Testfälle kann man keine Auslassungen im Code aufspüren!
Wurde etwa „verschwitzt“, eine Abfrage einzubauen, kann natürlich aus dem Code auch kein Testfall angenommen werden, der diese Abfrage prüft.
Das Resultat von automatisch abgeleiteten Testfällen sollte explizit kontrolliert werden.
Versäumt man dies, werden bei ihrer Ausführung nur gravierende Probleme des Testobjekts, beispielsweise Bugs mit Total-Abstürzen, erfasst. Die Ableitung der Testergebnisse aus dem Code begrenzt die Testaussage ziemlich, denn dabei wird der Code als richtig und passend angenommen.
Fazit
Seien Sie sich immer sicher, dass Ihr Gesprächsteilnehmer unter einem Begriff aFazit uch dasselbe begreift und denkt wie Sie selbst. Wenn Sie ein Hilfsmittel zur Messung der Code-Coverage starten, testen Sie, wie dieses die obigen Zweifelsfälle behandelt.
Seien Sie sich nie ganz entspannt, nur weil Sie 100 Prozent Code-Coverage erzielt haben!
Diese Ratschläge sollten Sie beim Umgang mit Code-Coverage auf alle Fälle beherzigen! Code-Coverage Tools für Java sind somit etwa Clover oder EMMA.