23
1 2 3 4 5 Geoinformation 3 6 7 8 9 10 11 12 13 14 15 16 17 18 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

Embed Size (px)

Citation preview

Page 1: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5Geoinformation3

6 7 8 9 10 11 12 13 14 15 16 17 18

Geoinformation III

Korrektheit von Programmen –Testen

Vorlesung 9b

Page 2: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

1

• für das im folgenden beschriebene Prinzip der Kantenüberdeckung wird das Konzept des Kontrollflussgraphen benötigt

• der Kontrollflussgraph eines Programms setzt sich aus den Kontrollflussgraphen der einzelnen Anweisungen zusammen:

2. Kantenüberdeckung

Page 3: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

2

A 6x

Kontrollflussgraph: Definition

if (Bedingung) then S1; else S2;

S1 S2

if (Bedingung)then S1;

S1

while (Bedingung) S1;

S1

S1;S2;

S1

S2

Kanten des Graphen

Knoten des Graphen

Knoten des Graphen

Page 4: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

3

2. Kantenüberdeckung

• wähle Testmenge so, dass jede Kante des Kontrollflussgraphen mindestens einmal durchlaufen wird

• Beispiel: if (x < 0)

then x = - x z = x;

(x = - 3), (x = 3) erfüllt Kantenüberdeckung(x = - 3) erfüllt Anweisungsüberdeckung,

aber nicht Kantenüberdeckung

x = -x

z = x

Page 5: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

4

• wähle Testmenge so, dass die Komponenten jeder Bedingung alle möglichen Kombinationen von wahr und falsch annehmen

• Beispiel (Suchen im Array):nicht_gefunden = true; zähler = 0;while (nicht_gefunden and zähler < anzahl){ if (array[zähler] == gesucht) then nicht_gefunden =

false; zähler = zähler + 1; }

A 1x

3. Bedingungsüberdeckung

zähler < anzahltruefalsetruefalse

nicht_gefundentruetruefalsefalse

Page 6: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

5

4. Pfadüberdeckung

A 9x

• wähle Testmenge so, dass alle Pfade des Kontroll-flussgraphen vom Anfangs-knoten bis zum Endknoten durchlaufen werden

• Beispiel:

if (x 0) then y = 5;else y = 8;

if (z > 1)then z = z/x;else z = 0;

y=5 z=z-x

z=z/x z=0

x = 0

z > 1

x 0

z 1

Kontrollflussgraph:

Division durch 0, falls x=0

Page 7: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

5

4. Pfadüberdeckung

A 9x

• wähle Testmenge so, dass alle Pfade des Kontroll-flussgraphen vom Anfangs-knoten bis zum Endknoten durchlaufen werden

• Beispiel:

if (x 0) then y = 5;else y = 8;

if (z > 1)then z = z/x;else z = 0;

y=5 z=z-x

z=z/x z=0

x = 0

z > 1

x 0

z 1

Testmenge: (x=0, z=1) links-rechts

Page 8: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

5

4. Pfadüberdeckung

A 9x

• wähle Testmenge so, dass alle Pfade des Kontroll-flussgraphen vom Anfangs-knoten bis zum Endknoten durchlaufen werden

• Beispiel:

if (x 0) then y = 5;else y = 8;

if (z > 1)then z = z/x;else z = 0;

y=5 z=z-x

z=z/x z=0

x = 0

z > 1

x 0

z 1

Testmenge: (x=0, z=1) links-rechts(x=3, z=8) rechts-links

Testmenge erfüllt Kantenüberdeckung, findet aber Fehler nicht

Page 9: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

5

4. Pfadüberdeckung

A 9x

• wähle Testmenge so, dass alle Pfade des Kontroll-flussgraphen vom Anfangs-knoten bis zum Endknoten durchlaufen werden

• Beispiel:

if (x 0) then y = 5;else y = 8;

if (z > 1)then z = z/x;else z = 0;

y=5 z=z-x

z=z/x z=0

x = 0

z > 1

x 0

z 1

Testmenge: (x=0, z=1) links-rechts(x=3, z=8) rechts-links(x=3, z=1) rechts-rechts

Page 10: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

5

4. Pfadüberdeckung

A 9x

• wähle Testmenge so, dass alle Pfade des Kontroll-flussgraphen vom Anfangs-knoten bis zum Endknoten durchlaufen werden

• Beispiel:

if (x 0) then y = 5;else y = 8;

if (z > 1)then z = z/x;else z = 0;

y=5 z=z-x

z=z/x z=0

x = 0

z > 1

x 0

z 1

Testmenge: (x=0, z=1) links-rechts(x=3, z=8) rechts-links(x=3, z=1) rechts-rechts(x=0, z=2) links-links

Pfadüberdeckung findet Fehler

Page 11: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

6

4. Pfadüberdeckung: Problem

A 1x

• Anzahl der Pfade steigt exponentiell mit Anzahl der Variablen/Verzweigungen

• Beispiel:if(x1 > .. ) then ...; else ...;if(x2 > .. ) then ...; else ...;...................if(xn-1 > .. ) then ...; else ...;if(xn > .. ) then ...; else ...;

n Verzweigungen/Variablen 2n Pfade

Page 12: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

7

White- vs. Black-Box Tests

• White-Box Test– Kenntnis der inneren Programmstruktur– Beispiel: Überdeckungen

• Black-Box Test– keine Kenntnis der Programmstruktur, nur In-/Output-Verhältnis

bekannt– Beispiel: Randwerte, Extremwerte, untypische Werte

t P(t)

t P(t)

P(t) = S(t)?

P(t) = S(t)?

Page 13: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

8

Klassifikation von White-Box-Tests

Klassifikation Umfang des TestsC0 AnweisungsüberdeckungC1 KantenüberdeckungC1+ Kantenüberdeckung und Ausführung von Schleifen mit

ExtremwertenC1p Kantenüberdeckung und jede Bedingung wird einmal wahr

und einmal falsch ausgeführtC2 Kantenüberdeckung und jede Schleife wird

1. nicht ausgeführt2. mit einem niederen Zählwert ausgeführt3. mit einem hohen Zählwert ausgeführt

Cik Kantenüberdeckung und alle Schleifen werden für alle Zählwerte i bis k ausgeführt (i < k)

Ct Pfadüberdeckung

Page 14: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

Testen: Vorgehen

9

1. Erkennen, dass Fehler vorliegt (bisher behandelt) 2. Lokalisierung des Fehlers, Bestimmung seiner Ursachen3. Korrigieren des Fehlers4. Testen des korrigierten Programms

Page 15: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

10

Fehlerlokalisierung

• erfordert ca. 90% des Aufwands für Fehlerbeseitigung• Problem:

– Fortpflanzung: Fehler werden nicht an der Stelle sichtbar, wo sie entstehen

Page 16: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

11

Fehlerlokalisierung: Methoden

1. Speicherabzug (Dump)2. Kontrollausgabe3. Debugging

Page 17: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

12

Fehlerlokalisierung: "Speicherabzug"

• "Momentaufnahme" des Speichers• statisch• Ausgabe aller Paare

(Name der Variable / Wert der Variable)• Nachteil: gewaltige Datenmenge, Identifikation der relevanten Werte

aufwendig

Page 18: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

13

Fehlerlokalisierung: "Kontrollausgabe"

• Ausgabeanweisung an Stellen, an denen Fehlerursache vermutet wird (z.B. Java: System.out.println(Variable))

• gezielte Ausgabe von relevanten Variablenwerten• dynamisch• Nachteil: große Datenmengen, z.B. bei Ausgabeanweisung in Schleifen• wichtig: Testcode aufbewahren

– globale boolesche Variable ("Schalter") testmodus, true beim Testen, sonst falsch

– Kontrollausgabe: if (testmodus) then Ausgabe;

Page 19: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

14

Fehlerlokalisierung: "Debugging"

• Funktionalität der Entwicklungsumgebung• Einfügen von Breakpoints an Stellen, an denen Fehlerursache

vermutet wird• Debug-Modus: Programm hält bei Breakpoint an• dort gezielte Ausgabe von Variablenwerten• verschiedene Möglichkeiten, weiter zu machen, z.B.

– zu nächstem Befehl– in Methode hinein springen– aus Methode hinaus springen

Page 20: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

15

Bsp.: Debugging in Java-Umgebung Forte

Page 21: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

16

Test: psychologische Komponente

• Tester Programmierer• Erfolg des Testers = Misserfolg des Programmierers• Testen hat destruktive Züge, Programmieren konstruktive• (langfristige) Ziele gleich: korrekte Programme

Page 22: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

17

Vielen Dank für die Aufmerksamkeit.

Fragen?

Page 23: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3

18

Übungsaufgabe: Bestimmung der Testmenge

Algorithmus ZweiSegmentSchnittInput: Zwei Segmente, gegeben durch die Punkte p1, p2, p3, p4Output: true, wenn sich beide Segmente schneiden, sonst false{

if(p1 == p2 oder p3 == p4) then ….. //Sonderfallbehandlungelse{ Sei g1 die Gerade, die durch p1 und p2 geht; Sei g2 die Gerade, die durch p3 und p4 geht; if(p1 liegt auf g2 oder p2 liegt auf g2 oder p3 liegt auf g1 oder p4 liegt auf g1)

then ...... //Sonderfallbehandlungelse if(p1 und p2 liegen auf verschiedenen Seiten von g2)

then if(p3 und p4 liegen auf verschied. Seiten von g1)

then return true; //Schnittpunkt gefunden

else return false; //kein Schnittpunktelse return false; //kein Schnittpunkt

}}