Code Abdeckung

Veröffentlicht auf 23. Februar 2012

Viele Testmanager stellen sich die Fragen "Wie viel muss ich testen?" und "Wann ist mein Code ausreichend getestet?". Um diese Fragen zu beantworten, kann man sich eine bestimmte Codeabdeckung oder auch Code Coverage als Ziel setzen. Alternativ geben auch viele Richtlinien und Standards Abdeckungsgrade vor. Ich möchte die wichtigsten Testverfahren kurz zusammenfassen.

 

Anweisungsabdeckung / Statement Coverage
Das Verhältnis von ausgeführten Anweisungen während des Tests, zu allen Anweisungen im Code.
Zweigabdeckung / Branch Coverage
Das Verhältnis von getesteten Zweigen, zu allen vorhandenen Zweigen in einem Kontrollflussgraph eines Moduls.
Entscheidungsabdeckung / Decision Coverage
Eine erweiterte Sicht der Zweigabdeckung. Statt Zweigen werden die Knoten im Kontrollflussgraph oder eben die boolschen Werte von Ausdrücken (Schleifen, Verzweigungen, ...) ausgewertet. Wird oft auch der Zweigabdeckung gleich gesetzt, verschiedene Ansätze [FAASVS] bewerten aber die Entscheidungsabdeckung höher. Ein Grund dafür ist, dass Entscheidungen auch außerhalb von Ausdrücken bereits getroffen und gespeichert werden können. Die Prüfung dieses speziellen Sachverhalts ist allerdings stark werkzeugabhängig.
Somit das Verhältnis von getroffenen Entscheidungen während des Tests, zu allen möglichen Entscheidungen während der Programmausführung.
Bedingungsabdeckung / Condition Coverage
Das Verhältnis von ausgewerteten atomaren Werten (Term, Bedingung, ...) innerhalb von Ausdrücken zu allen vorhandenen atomaren Werten in einem Modul.
Abdeckung aller Bedingungskombinationen / Multicondition Coverage
Das Verhältnis von durchlaufenen atomaren Bedingungen während des Tests, zu allen möglichen Kombinationen von atomaren Bedingungen innerhalb eines Ausdrucks in einem Modul.
Modified Condition / Decision Coverage (MC/DC)
Abdeckung aller Bedingungskombinationen erfordert einen enormen Aufwand, dieses Testverfahren versucht dies zu minimieren. Jeder atomare Wert innerhalb eines Ausdrucks soll dazu mindestens einmal positiv und negativ den Wert des kompletten Ausdrucks entscheidend beeinflussen.
Somit vielleicht das Verhältnis von Auswirkungen von bewerteten atomaren Werten auf den Gesamtausdruck, zu allen möglichen Auswirkungen von atomaren Werten innerhalb eines Moduls.
Pfadabdeckung / Path Coverage
Das Verhältnis der getesteten Pfade (Wege im Kontrollflussgraph), zu allen möglichen Pfaden in einem Modul.

 

Die Testabdeckungsgrößen C0 – C4 sind nicht einheitlich definiert, ich würde daher von der Verwendung abraten.
Wenn Sie trotzdem diese Größen verwenden wollen, erscheint mir folgende Einteilung am sinnvollsten.
C0 Statement Coverage
C1 Branch / Decision Coverage
C2 Path Coverage
C3 Condition / Multicondition Coverage, MC/DC
Weitere Testverfahren sind entsprechend einzuordnen.

 

 

Wikipedia:
http://de.wikipedia.org/wiki/Kontrollflussorientierte_Testverfahren
Artikel eines Toolherstellers:
http://www.bullseye.com/coverage.html
Codeabdeckungswerkzeuge:
http://en.wikipedia.org/wiki/Code_coverage#Software_tools

 

[FAAASVS] US Federal Aviation Administration
http://www.tc.faa.gov/its/worldpac/techrpt/ar0654.pdf

Geschrieben von Robert Bullinger

Veröffentlicht in #Testmanagement, #Softwarequalität, #Softwaretest

Repost0
Um über die neuesten Artikel informiert zu werden, abonnieren:
Kommentiere diesen Post
A
Sie schreiben, dass Sie die Verwendung von C0-C4 nicht empfehlen, da sie nicht eindeutig spezifiziert sind.<br /> Zum einen frage ich mich dann nach dem Sinn dieses Artikels und zum Anderen, was Sie alternativ empfehlen?<br /> Wenn innerhalb einer Firma diese Überdeckungen spezifiziert werden und man diese dann auch verteidigt, ist es dann nicht möglich sie zu verwenden?<br /> Muss halt ein einheitliches Dokument erschaffen werden, in dem man diese Definition nachlesen kann.
Antworten
R
Hallo Alex,<br /> der Artikel bietet eine Zusammenfassung zum Thema, wie ich es während meiner Arbeit damals für angemessen hielt. Die Begriffe sind aber nirgends verbindlich definiert (wenn man Wikipedia nicht als Referenz sieht), weshalb ich besonders die Verwendung von C0-C4 nicht empfehle. Die Alternative haben Sie schon selbst beantwortet, selbst festlegen, damit man wenigstens in der eigenen Firma vom selben spricht.
I
<br /> sehr aufschlußreich, vielen Dank und grüße aus Freiburg<br />
Antworten
R
<br /> <br /> Gern geschehen. Grüße zurück!<br /> <br /> <br /> <br />