Musterlösung Aufgabe : Berechnen Sie die zyklomatische Komplexität

Werbung
Übung statische Analyse – Vorlesung : Prozesse und Methoden beim Testen von Software
Musterlösung Aufgabe : Berechnen Sie die zyklomatische
Komplexität
Berechnung :
Z(G) = e – n + 2
e Anzahl der Kanten von G
n Anzahl der Knoten von G
Übung statische Analyse – Vorlesung : Prozesse und Methoden beim Testen von Software
Typ
If Anweisung
If else
Anweisung
Zyklomatische
2
Komplexität
Kontrollflussgraph
2
Typ
do while
goto
Zyklomatische
Komplexität
2
1
Switch
Anweisung (2 x
case/break 1x
default)
3
While
Anweisung
2
Anmerkungen :
Modifizierter Kontrollflussgraph :
Sequenzen können in einem Knoten zusammengefaßt werden.
Es gibt keine Knoten n_in und n_out
Stark zusammenhängender Kontrollflussgraph :
n_final ist der Vorgängerknoten von n_start z.B. durch zyklischen
Programmaufruf (typisch für embedded Systeme)
Linear unabhängige Pfade :
Pfade durch einen Graphen, die nicht durch andere linear unabhängige Pfade
zusammengesetzt werden können.
Die zyklomatische Zahl für modifizierte, stark zusammenhängende Kontrollflußgraphen ist die Anzahl
der Entscheidungen +1 !
Die zyklomatische Zahl ist die Obergrenze für die Anzahl der Testfälle für eine vollständige
Zweigabdeckung.
Aufgabe1 : Geben Sie die zyklomatische Komplexität der Kontrollflussgraphen an :
Kontrollflussgraph
Switch
Anweisung (3 x
case/break 1x
default)
4
Aufgabe 2 : Welche Erkenntnisse folgern Sie aus den Ergebnissen der Aufgabe 1
Sequenzen können beliebig lang sein ohne die zyklomatische Komplexität zu
erhöhen.
Jede Verzweigung in einer Auswahl erhöht die zyklomatische Komplexität um 1.
Goto Anweisungen erhöhen die zyklomatische Komplexität nicht.
Dipl.-Ing. Peter Kock und Dr. Stefan Kriebel, TU München SS06
1
Dipl.-Ing. Peter Kock und Dr. Stefan Kriebel, TU München SS06
2
Übung statische Analyse – Vorlesung : Prozesse und Methoden beim Testen von Software
Übung statische Analyse – Vorlesung : Prozesse und Methoden beim Testen von Software
1
2
Aufgabe 3 : Erzeugen Sie einen modifizierten Kontrollflußgraphen für folgenden
Code :
3
4
void output( int selection, int y)
{
if (selection ==1)
printf(“\n 1”);
else
if (selection ==2)
printf(“\n 2”);
else
if (selection ==3)
printf(“\n 3”);
else
if (selection ==4)
if (y == 0)
{
printf(“\n 4”);
printf(“\n 5”);
}
else
printf(“\n 6”);
else
printf(“\n 7”);
}
5
6
7
8
9
n_start
if 1
print 1
else if 2
print 2
else if 3
print 3
else if 4
if y ==0
10
11
print 4,5
else
12
n_final }
print 6
13
else
14
print 7
15
Aufgabe 4 : Welche zyklomatische Komplexität hat der Graph ?
1. e =19 Kanten, n = 15 Knoten : Z= e – n + 2 = 6
2. Die Anzahl der Entscheidungen + 1 :
If else entspricht einer Entscheidung => 6
Aufgabe 5 : Geben Sie alle linear unabhängigen Pfade durch den Graphen an :
1
2
3
4
5
6
Dipl.-Ing. Peter Kock und Dr. Stefan Kriebel, TU München SS06
3
1,2,3,15
1,2,4,5,15
1,2,4,6,7,15
1,2,4,6,8,13,14,15
1,2,4,6,8,9,10,15
1,2,4,6,8,9,11,12,15
Dipl.-Ing. Peter Kock und Dr. Stefan Kriebel, TU München SS06
4
Herunterladen