625_Hitex_TESSY_cyclomatic-complexity

Tessy zeigt für die Testobjekte die jeweilige zyklomatische Komplexität an. (Bild: Hitex)

Eine Metrik, die „Komplexität“ bereits im Namen trägt, ist die zyklomatische Komplexität (Cyclomatic Complexity) nach McCabe. Die Messung der zyklomatischen Komplexität ist eine sehr gebräuchliche Maßnahme zur Komplexitätskontrolle. Sie misst die Komplexität des Quellcodes auf Grundlage des Kontrollflussgraphen. Sie gibt auch die Anzahl der linear unabhängigen vollständigen Pfade durch den Code an. Diese Metrik wächst linear mit der Anzahl der binären Entscheidungen in einem Programm; allerdings berücksichtigt sie beispielsweise Berechnungen nicht. McCabe gibt 10 als das Maß für die zyklomatische Komplexität an, das gerade noch akzeptiert werden kann. Bei höheren Werten schlägt McCabe vor, die Software zu überarbeiten.

In Version V4.1 von Tessy, einem Werkzeug zum dynamischen Modul-/Unit-Test von eingebetteter Software, ist nun erstmals eine originäre statische Analyse enthalten, denn Tessy ermittelt im Rahmen der statischen Analyse des Testobjekts dessen zyklomatische Komplexität. Daraus werden verschiedene Werte abgeleitet, beispielsweise die absolute Gesamt-Komplexität (Total CC), die durchschnittliche Komplexität (Average CC) und die größte Komplexität (Maximum CC). Für die zyklomatische Komplexität können auch zwei Schwellwerte eingestellt werden, bei deren Überschreiten die Werte gelb (Warnung) beziehungsweise rot (Fehler) unterlegt werden. Bleiben die Werte unter dem kleineren Limit, werden sie grün unterlegt. Weiterhin wird noch das Verhältnis der Anzahl der Testfälle zu seiner Komplexität dargestellt. Da die zyklomatische Komplexität die Anzahl der linear unabhängigen Pfade durch den Code angibt, braucht man mindestens so viele Testfälle, wie die zyklomatische Zahl angibt, um alle linear unabhängigen Pfade zu durchlaufen. Deshalb stellt Tessy das Verhältnis der vorhandenen Testfälle zur zyklomatischen Zahl dar. Solange dieses Verhältnis kleiner als 1 ist, hat man auf jeden Fall noch nicht genügend Testfälle, um alle linear unabhängigen Pfade zu durchlaufen, was notwendig ist, um 100 % Codeüberdeckung zu erreichen. In diesem Fall ist der Wert rot unterlegt, ansonsten grün.

Das Bild zeigt für das Testobjekt „is_equilateral“ den Wert 2, was akzeptabel und deshalb grün unterlegt ist. Für das Testobjekt „is_isoceles“ ist er 12, was über dem von McCabe vorgegebenen Wert von 10 liegt und deshalb gelb unterlegt ist. Für das Testobjekt „is_right“ ist er 22, was über dem eingestellten Fehler-Schwellwert von 20 liegt und deshalb rot unterlegt ist. Für das Modul Triangle ergibt sich die Gesamt-Komplexität von 38 (=2+12+22+2), die durchschnittliche Komplexität von 9.50, die größte vorkommende Komplexität ist 22 (für „is_right“) und das Verhältnis der Testfälle zur zyklomatischen Komplexität ist mit 0.23 viel zu klein, es fehlen noch Testfälle.

Frank Büchner

Principal Engineer Software Quality, HItex

(ah)

Sie möchten gerne weiterlesen?

Unternehmen

Hitex GmbH

Greschbachstr. 12
76229 Karlsruhe
Germany