geoinformation iii l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Geoinformation III PowerPoint Presentation
Download Presentation
Geoinformation III

Loading in 2 Seconds...

play fullscreen
1 / 23

Geoinformation III - PowerPoint PPT Presentation


  • 100 Views
  • Uploaded on

Geoinformation III. Vorlesung 9b. Korrektheit von Programmen – Testen. 1. 2. Kantenüberdeckung. für das im folgenden beschriebene Prinzip der Kantenüberdeckung wird das Konzept des Kontrollflussgraphen benötigt

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Geoinformation III' - christoffer


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
geoinformation iii

Geoinformation III

Vorlesung 9b

Korrektheit von Programmen –

Testen

slide2

1

2. Kantenüberdeckung

  • für das im folgenden beschriebene Prinzip der Kantenüberdeckung wird das Konzept des Kontrollflussgraphen benötigt
  • der Kontrollflussgraph eines Programms setzt sich aus denKontrollflussgraphen der einzelnen Anweisungen zusammen:
slide3

if (Bedingung)

then S1;

else S2;

S1;S2;

if (Bedingung)

then S1;

while (Bedingung) S1;

S1

S1

S2

S1

S1

S2

Knoten des Graphen

Knoten des Graphen

A

2

Kontrollflussgraph: Definition

Kanten des Graphen

6x

slide4

x = -x

z = x

3

2. Kantenüberdeckung

  • wähle Testmenge so, dass jede Kante des Kontrollflussgraphenmindestens 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
slide5

nicht_gefunden

true

true

false

false

zähler < anzahl

true

false

true

false

A

4

3. Bedingungsüberdeckung

  • 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; }

1x

slide6

Kontrollflussgraph:

x = 0

x  0

y=5

z=z-x

z  1

z > 1

z=0

z=z/x

A

5

4. Pfadüberdeckung

  • wähle Testmenge so, dass alle Pfade des Kontroll-flussgraphenvom 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;

Division

durch 0,

falls x=0

9x

slide7

A

5

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

4. Pfadüberdeckung

  • wähle Testmenge so, dass alle Pfade des Kontroll-flussgraphenvom 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;

x = 0

x  0

y=5

z=z-x

z  1

z > 1

z=0

z=z/x

9x

slide8

A

5

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

(x=3, z=8) rechts-links

4. Pfadüberdeckung

  • wähle Testmenge so, dass alle Pfade des Kontroll-flussgraphenvom 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;

x = 0

x  0

y=5

z=z-x

z  1

z > 1

z=0

z=z/x

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

9x

slide9

A

5

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

(x=3, z=8) rechts-links

(x=3, z=1) rechts-rechts

4. Pfadüberdeckung

  • wähle Testmenge so, dass alle Pfade des Kontroll-flussgraphenvom 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;

x = 0

x  0

y=5

z=z-x

z  1

z > 1

z=0

z=z/x

9x

slide10

A

5

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

4. Pfadüberdeckung

  • wähle Testmenge so, dass alle Pfade des Kontroll-flussgraphenvom 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;

x = 0

x  0

y=5

z=z-x

z  1

z > 1

z=0

z=z/x

Pfadüberdeckung findet Fehler

9x

slide11

n Verzweigungen/Variablen

 2n Pfade

A

6

4. Pfadüberdeckung: Problem

  • 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 ...;

1x

slide12

?

?

P(t) = S(t)

P(t) = S(t)

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)

slide13

8

Klassifikation von White-Box-Tests

slide14

9

Testen: Vorgehen

  • Erkennen, dass Fehler vorliegt (bisher behandelt)
  • Lokalisierung des Fehlers, Bestimmung seiner Ursachen
  • Korrigieren des Fehlers
  • Testen des korrigierten Programms
slide15

10

Fehlerlokalisierung

  • erfordert ca. 90% des Aufwands für Fehlerbeseitigung
  • Problem:
    • Fortpflanzung: Fehler werden nicht an der Stelle sichtbar, wo sie entstehen
slide16

11

Fehlerlokalisierung: Methoden

  • Speicherabzug (Dump)
  • Kontrollausgabe
  • Debugging
slide17

12

Fehlerlokalisierung: "Speicherabzug"

  • "Momentaufnahme" des Speichers
  • statisch
  • Ausgabe aller Paare (Name der Variable / Wert der Variable)
  • Nachteil: gewaltige Datenmenge, Identifikation der relevanten Werte aufwendig
slide18

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;
slide19

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
slide20

15

Bsp.: Debugging in Java-Umgebung Forte

slide21

16

Test: psychologische Komponente

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

17

Vielen Dank für die Aufmerksamkeit.Fragen?

slide23

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)

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

then return true; //Schnittpunkt gefunden

elsereturn false; //kein Schnittpunkt

elsereturn false; //kein Schnittpunkt

}

}