Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b."—  Präsentation transkript:

1 12345 Geoinformation Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b

2 Geoinformation3 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

3 Geoinformation3 2 A 6x Kontrollflussgraph: Definition if (Bedingung) then S1; else S2; S1S2 if (Bedingung) then S1; S1 while (Bedingung) S1; S1 S1; S2; S1 S2 Kanten des Graphen Knoten des Graphen

4 Geoinformation 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

5 Geoinformation3 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 < anzahl true false true false nicht_gefunden true false

6 Geoinformation 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; elsey = 8; if (z > 1) then z = z/x; elsez = 0; y=5z=z-x z=z/x z=0 x = 0 z > 1 x  0 z  1 Kontrollflussgraph: Division durch 0, falls x=0

7 Geoinformation 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; elsey = 8; if (z > 1) then z = z/x; elsez = 0; y=5z=z-x z=z/x z=0 x = 0 z > 1 x  0 z  1 Testmenge: (x=0, z=1) links-rechts

8 Geoinformation 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; elsey = 8; if (z > 1) then z = z/x; elsez = 0; y=5z=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

9 Geoinformation 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; elsey = 8; if (z > 1) then z = z/x; elsez = 0; y=5z=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

10 Geoinformation 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; elsey = 8; if (z > 1) then z = z/x; elsez = 0; y=5z=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

11 Geoinformation Pfadüberdeckung: Problem A 1x Anzahl der Pfade steigt exponentiell mit Anzahl der Variablen/Verzweigungen Beispiel: if(x 1 >.. ) then...; else...; if(x 2 >.. ) then...; else...; if(x n-1 >.. ) then...; else...; if(x n >.. ) then...; else...; n Verzweigungen/Variablen  2 n Pfade

12 Geoinformation3 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) = S(t) ? ?

13 Geoinformation3 8 Klassifikation von White-Box-Tests KlassifikationUmfang des Tests C0Anweisungsüberdeckung C1Kantenüberdeckung C1+Kantenüberdeckung und Ausführung von Schleifen mit Extremwerten C1pKantenüberdeckung und jede Bedingung wird einmal wahr und einmal falsch ausgeführt C2Kantenüberdeckung und jede Schleife wird 1.nicht ausgeführt 2.mit einem niederen Zählwert ausgeführt 3.mit einem hohen Zählwert ausgeführt CikKantenüberdeckung und alle Schleifen werden für alle Zählwerte i bis k ausgeführt (i < k) CtPfadüberdeckung

14 Geoinformation3 Testen: Vorgehen 9 1.Erkennen, dass Fehler vorliegt (bisher behandelt) 2.Lokalisierung des Fehlers, Bestimmung seiner Ursachen 3.Korrigieren des Fehlers 4.Testen des korrigierten Programms

15 Geoinformation3 10 Fehlerlokalisierung erfordert ca. 90% des Aufwands für Fehlerbeseitigung Problem: –Fortpflanzung: Fehler werden nicht an der Stelle sichtbar, wo sie entstehen

16 Geoinformation3 11 Fehlerlokalisierung: Methoden 1.Speicherabzug (Dump) 2.Kontrollausgabe 3.Debugging

17 Geoinformation3 12 Fehlerlokalisierung: "Speicherabzug" "Momentaufnahme" des Speichers statisch Ausgabe aller Paare (Name der Variable / Wert der Variable) Nachteil: gewaltige Datenmenge, Identifikation der relevanten Werte aufwendig

18 Geoinformation3 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;

19 Geoinformation3 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

20 Geoinformation3 15 Bsp.: Debugging in Java-Umgebung Forte

21 Geoinformation3 16 Test: psychologische Komponente Tester  Programmierer Erfolg des Testers = Misserfolg des Programmierers Testen hat destruktive Züge, Programmieren konstruktive (langfristige) Ziele gleich: korrekte Programme

22 Geoinformation3 17 Vielen Dank für die Aufmerksamkeit. Fragen?

23 Geoinformation3 18 Übungsaufgabe: Bestimmung der Testmenge Algorithmus ZweiSegmentSchnitt Input: Zwei Segmente, gegeben durch die Punkte p1, p2, p3, p4 Output: true, wenn sich beide Segmente schneiden, sonst false { if(p1 == p2 oder p3 == p4) then ….. //Sonderfallbehandlung else{ 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 //Sonderfallbehandlung else 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 Schnittpunkt }


Herunterladen ppt "12345 Geoinformation3 6789101112131415161718 Geoinformation III Korrektheit von Programmen – Testen Vorlesung 9b."

Ähnliche Präsentationen


Google-Anzeigen