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.
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.
Wenn Ihnen der Beitrag gefällt, teilen Sie ihn gerne in Ihrem Netzwerk. Und falls Sie sich für Tipps aus der Praxis interessieren, dann testen Sie unseren vielfach gelobten Newsletter mit neuen Beiträgen, Downloads, Empfehlungen und aktuellem Wissen. Vielleicht wird er auch Ihr Lieblings-Newsletter.
Wir suchen Softwareentwickler und Softwareentwicklerinnen. Haben Sie Lust, unser Team zu verstärken? Ob Sie als Berufseinsteiger die ersten Schritte machen, bereits einige Jahre Erfahrung mitbringen oder als Expertin tief im Code stecken – bei uns finden Sie genau die Herausforderung, die zu Ihnen passt!
Hier finden Sie ergänzende Informationen aus unserem t2informatik Blog: