12345 geoinformation3 6789101112131415161718 geoinformation iii korrektheit von programmen –...
TRANSCRIPT
![Page 1: 12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/1.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/20.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/22.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570491c41a28ab14218d9ea2/html5/thumbnails/23.jpg)
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
}}