1. Startseite
  2. Wissen kompakt
  3. Codeüberdeckung

Codeüberdeckung

Wissen kompakt: Die Codeüberdeckung bzw. Code Coverage drückt aus, welcher Anteil des Quellcodes – Anweisungen, Verzweigungen, Pfade und Bedingungen – durch Testfälle ausgeführt wird.

Codeüberdeckung – die Quellcode-Ausführung durch Testfälle

“Wie viel müssen wir testen?” – eine solche Frage muss jede Entwicklungsabteilung beantworten. Eine Antwort darauf liefert die sogenannte Codeüberdeckung. Sie drückt aus, welcher Anteil des Quellcodes – Anweisungen, Verzweigungen, Pfade und Bedingungen – durch Testfälle ausgeführt wird.

Die Codeüberdeckung, im Englischen als Code Coverage bezeichnet und im Deutschen oft auch Codeabdeckung oder Testabdeckung genannt, wird in Prozent ausgedrückt. Ohne Testfälle ist die Codeüberdeckung gleich 0 Prozent. Eine hohe Codeüberdeckung reduziert idealerweise das Entwicklungsrisiko, sagt allerdings im engeren Sinne wenig über die Qualität des getesteten Quellcodes, denn eine hohe Überdeckung kann auch einfach ein Zeichen für viele Testfälle sein.

Metriken zur Bestimmung der Codeüberdeckung

Es gibt verschiedene Metriken zur Bestimmung der Codeüberdeckung:

  • getestete Anweisungen / Anweisungen. Diese Metrik wird als Anweisungsüberdeckung, Statement Coverage oder C0-Coverage bezeichnet.
  • getestete Verzweigungen / Verzweigungen. Diese Metrik wird als Zweigüberdeckung, Branch Coverage oder C1-Coverage bezeichnet und bezieht sich auf Programmschleifen.
  • getestete Pfade / Pfade. Diese Metrik wird als Pfadüberdeckung, Path Coverage oder C∞-Coverage bezeichnet und bezieht sich auf Programmpfade. Aufgrund der Kombination aller Schleifen und Pfade, die in vielen Fällen auch mehrfach durchlaufen werden können, ist die Pfadanzahl potenziell unendlich groß und eine vollständige Pfadüberdeckung somit nicht realistisch.
  • getestete Bedingungen / Bedingungen. Diese Metrik wird als Prädikatsüberdeckung von Bedingungen, Condition Coverage bzw.  C1p-Coverage bezeichnet und adressiert alle Prädikate (also alle Terme und Teilterme).

Darüber hinaus werden in verschiedenen Publikationen auch die Entscheidungsabdeckung bzw. Decision Coverage als erweiterte Sicht der Zweigüberdeckung und die Multicondition Coverage als Abdeckung aller Bedingungskombinationen genannt.

Die Metriken bestimmen im wesentlichen das Verhältnis der Testfälle zum Code bzw. zu einzelnen Codebestandteilen und gelten als Indikator für die Qualität der Testfälle. Komplizierter Code ist schwierig zu testen, eine hohe Abdeckung ist somit ein Zeichen für gute Testfälle. Eine Kritik an dem Konzept der Codeüberdeckung ist die Vernachlässigung der tatsächlichen Testergebnisse. Ob ein Test erfolgreich war, ob und wie viele Fehler gefunden wurden, steht nicht im Fokus der Code Coverage.

Bei der Softwareentwicklung bietet es sich an, auf Basis von Anforderungen Testfälle zu definieren. Damit ist jedoch nicht sichergestellt, dass auch alle entsprechenden Codeteile überdeckt sind. Anforderungen lassen sich auf unterschiedliche Arten realisieren, so dass es entsprechend unterschiedliche Bezugspunkte für Tests gibt. Die Anforderungsüberdeckung ist also nicht identisch mit der Codeüberdeckung.

Das Prinzip der Überdeckung lässt sich auf zahlreiche Artefakte anwenden. So kann es bspw. eine Entwurfs-, eine Modul-, eine Architektur-, eine Daten- oder eine Funktionsüberdeckung geben. Sie lassen sich genau wie die Codeüberdeckung mit einem einfachen Verhältnis bestimmen: Überdeckung = getestete Elemente / spezifizierte Elemente.

Codeüberdeckung - die Quellcode-Ausführung durch Testfälle

Hinweise:

Die Inhalte auf dieser Seite dürfen Sie gerne teilen oder verlinken.

Die Analyse der Code Coverage wird auch als eine Praktik bei der Implementierung von Clean Code empfohlen.

Hier finden Sie ein Video Code Coverage Levels.

Übrigens: Wir suchen Softwareentwickler. Berufseinsteigerinnen, Entwickler mit einigen Jahren und Expertinnen mit vielen Jahren Erfahrung.

Was macht t2informatik?

Was macht t2informatik? Kleiner Tipp: Es hat etwas mit Softwareentwicklung zu tun!

Hier finden Sie ergänzende Informationen aus unserem Blog:

t2informatik Blog: Die Implementierung von Clean Code

Die Implementierung von Clean Code

t2informatik Blog: Sinn und Unsinn der Unittest Coverage

Sinn und Unsinn der Unittest Coverage