Software-Test Acht Irrtümer über Code Coverage

Autor / Redakteur: Frank Büchner* / Martina Hafner

Über die Ermittlung und den Nutzen von Code-Coverage sind Halbwahrheiten und Irrtümer verbreitet, die leicht zu Verwirrung und Fehlannahmen führen können. Die häufigsten klärt Testingenieur Frank Büchner vom Toolspezialisten Hitex auf.

Anbieter zum Thema

Irrtum 1: Man kann immer 100% Abdeckung erreichen

Natürlich nicht. Es lassen sich leicht Fälle finden, bei denen bedingt durch die Struktur des Codes oder die Zusammensetzung von Entscheidungen nicht 100% erreicht werden können.

Bild 1: Ein Beispiel, bei dem 100% Zweigabdeckung nicht erreicht werden kann (Archiv: Vogel Business Media)

Bild 1 zeigt ein Code-Schnipsel, bei dem 100% Zweigabdeckung nicht erreicht werden kann. (Dies ist ein Beispiel aus der Praxis, das hier vereinfacht dargestellt ist.) Woran liegt das? Es liegt am fehlenden Durchlauf des „default:“ case in der Switch-Anweisung. Dieser „default“-Zweig existiert immer, egal ob er explizit programmiert wurde oder nicht.

Irrtum 2: Ein Coverage-Maß hat nur einen Namen

Leider nein. Je nach Standard, Buch, Werkzeug oder Web-Seite werden für ein und dasselbe Maß unterschiedliche Namen verwendet. Beispielsweise verwendet Spillner den englischen Begriff „modified branch condition decision testing“ für Minimale Mehrfachbedingungsüberdeckung, während Liggesmeyer dieses Maß (mehr an die deutsche Bezeichnung angelehnt) „minimal multiple condition coverage“ nennt.

Irrtum 3: Ein Name bezeichnet immer dasselbe Coverage-Maß

Leider nein. Insbesondere wenn Abkürzungen wie C0, C1, C2 oder gar C1+ verwendet werden, ist Vorsicht geboten. So verwendet beispielsweise Beizer C1 zur Bezeichnung der Anweisungsüberdeckung, während Spillner C0 verwendet .

Irrtum 4: Es ist klar, wie Coverage gemessen wird

Durchaus nicht. In den Bildern 2 und 3 sind Zweifelsfälle aufgeführt, links jeweils das fragliche Code-Schnipsel, und rechts das Messergebnis des Unit-/Modul-Testwerkzeugs Tessy.

Bild 2: Aus wie vielen Zweigen besteht diese Switch-Anweisung? (Archiv: Vogel Business Media)

Die Switch-Anweisung auf der linken Seite in Bild 2 könnte aus zwei oder aus vier Zweigen bestehen. Falls nur zwei Zweige gezählt werden, kennzeichnen die Label „case 0“, „case 1“ und „case 2“ ein und denselben Zweig, was damit begründet werden könnte, dass ja alle drei zur Ausführung derselben Anweisung führen. Falls jedes Label als eigener Zweig gezählt wird, gibt es vier Zweige.

Der Unterschied wird deutlich, wenn ein Testfall mit (i==1) ausgeführt wird. Ergeben sich dadurch 25% oder 50% Zweigüberdeckung? Auf der rechten Seite des obigen Bilds erkennt man, dass für Tessy die Switch-Anweisung aus 4 Zweigen besteht; der Testfall ergibt 25% Zweigüberdeckung (und nicht 50%).

Begründet werden kann dies damit, dass anstelle der Zuweisung „a = 700“ ja auch z.B. „a = 1/(2-i)“ stehen könnte. Dann würde ein Testfall mit (i==2) zur Division durch 0 führen. Ein solcher Testfall kann aber leicht unterbleiben, wenn schon mit (i==1) die vollständige Coverage erreicht wird.

Artikelfiles und Artikellinks

(ID:332085)