t2informatik » Wissen kompakt » Codeüberdeckung

Codeüberdeckung

Die Qualität von Testfällen bewerten

„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 – 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.

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 Codeüberdeckung 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überdeckung.

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.

Hinweis:

Einen Blogbeitrag zur Einschätzung einer Unittest Coverage finden Sie hier  »

“Das Fachwissen zu Softwarearchitekturen, die Expertise in der Softwareentwicklung und die sehr flexible Arbeitsweise waren ideal für uns.“

„Ich brauche Freiheit und Vertrauen. Und ich möchte Verantwortung übernehmen und dabei Spaß haben!“

Share This