t2informatik » Wissen kompakt » Codeüberdeckung

Codeüberdeckung

Die Qualität von Testfällen bewerten

Die Codeüberdeckung 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 das Entwicklungsrisiko. Es gibt verschiedene Metriken zur Bestimmung der Codeüberdeckung:

  • getestete Anweisungen / Anweisungen. Diese Metrik wird als Anweisungsüberdeckung bzw. C0-Coverage bezeichnet.
  • getestete Verzweigungen / Verzweigungen. Diese Metrik wird als Zweigüberdeckung bzw. C1-Coverage bezeichnet und bezieht sich auf Programmschleifen.
  • getestete Pfade / Pfade. Diese Metrik wird als Pfadüberdeckung  bzw. 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 bzw.  C1p-Coverage bezeichnet und adressiert alle Prädikate (also alle Terme und Teilterme).

Die Metriken bestimmen also 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.

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.

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.

“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