Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät...

65
Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr. Carsten Gnörlich Rechnerbetriebsgruppe Kap. 1 - Einführung (Kap. 2 aus Riedemann und Kap. 1 aus Zeller)

Transcript of Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät...

Page 1: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Technische FakultätUniversität Bielefeld

Vorlesung

Softwaretest und - debuggingVersion 2012

Dr. Carsten Gnörlich

Rechnerbetriebsgruppe

Kap. 1 - Einführung

(≅Kap. 2 aus Riedemann und Kap. 1 aus Zeller)

Page 2: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Eine F-16(nördliche Halbkugel)

Bildquelle: Zeller

2

Page 3: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Eine F-16(südliche Halbkugel)

Bildquelle: Zeller

3

Page 4: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Heute haben wir folgendes vor

• Übersicht über den Vorlesungsinhalt

- Was sind Testen, Debugging, Optimierung?

- Was ist überhaupt ein Fehler?

- Warum ist Software fehlerhaft?

- Mentale Aspekte des Testens

- Ausblick über die weiteren Vorlesungen

• Formalitäten klären:

• Übungstermin, Leistungspunkte

4

Page 5: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Quellenhinweis zum Testen

Die Inhalte zum Testen basieren auf:

Eike Riedemann:Testmethoden für sequentielle und nebenläufige Software-Systeme Teubner, Stuttgart, 1997

Momentan nur herunterladbar:

http://ls10-www.cs.uni-dortmund.de/~riedemann/

5

Page 6: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Quellenhinweis zum Debugging

Die Inhalte zum Debugging basieren auf:

Andreas Zeller: Why Programs Fail A GuideTo Systematic Debugging dpunkt.verlag, Heidelberg, 2005

6

Page 7: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Was ist Testen und Debuggen?

7

Page 8: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Was ist Testen?

„Testen ist der Prozeß, ein Programm mit der Intention auszuführen, Fehlfunktionen zu finden.“

→ destruktive Sichtweise

Erfolgreicher Testfall:

→ Eingabe t erzeugt falsches Verhalten

Nicht erfolgreicher Testfall:

→ Programm zeigt korrektes Verhalten

8

Page 9: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Nebeneffekt des destruktiven Ansatzes

Testen ist nicht nur:

• Bestätigen der Qualität der Software

sondern auch:

• Erzeugen der Qualität von Software

9

Page 10: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Ablauf des (dynamischen) Testens

1. Bestimme gültigen oder ungültigen Eingabewert

2. Bestimme das erwartete Verhalten

3. Führe das Programm aus und betrachte das Verhalten

4. Vergleiche tatsächliches Verhalten mit erwartetem Verhalten

Wenn irgendwie möglich: Automatisiere den Vergleich!

10

Page 11: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Begriffsverwirrung?

11

Testen

Debuggen

Page 12: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Das kommt auch noch hinzu...

12

Testen

OptimierenDebuggen

Page 13: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden 13

Unterschiede zwischen Testen und Debuggen

Aufdecken von Fehlfunktionen

während der Entwicklung beim Produktionsystem

Page 14: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden 14

Unterschiede zwischen Testen und Debuggen

Aufdecken von Fehlfunktionen

während der Entwicklung beim Produktionsystem

Softwaretestmethoden→ unbekannte Fehlfkt finden

Page 15: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden 15

Unterschiede zwischen Testen und Debuggen

Aufdecken von Fehlfunktionen

während der Entwicklung beim Produktionsystem

Debuggen→ bekannte Fehlfkt beheben = zufällige Fehlfkt b. Kunden

Softwaretestmethoden→ unbekannte Fehlfkt finden

Page 16: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden 16

Unterschiede zwischen Testen und Debuggen

Aufdecken von Fehlfunktionen

während der Entwicklung beim Produktionsystem

Debuggen→ bekannte Fehlfkt beheben

Finden der Fehlfunktion gratisFehlerlokalisation teuer→Hauptaufwand! Reproduktion, Lokalisierung

Softwaretestmethoden→ unbekannte Fehlfkt finden

Finden der Fehlfunktion teuerFehlerlokalisation billig→ „Nebenprodukt“; ergibt sich aus den Testfällen

Page 17: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Abgrenzung zum Debuggen im Entwickl.-Zyklus

17

Testen

Fehlerbericht

Debuggen

Kunde

Entwicklungsumgebung Produktivumgebung

Testen

Testmanager

korr.Version

ersteVersion

Page 18: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Testfälle immer in einer Datenbank aufheben!

18

Testen

Fehlerbericht

Debuggen

Datenbank für Regressionstests

Kunde

Testen

Testmanager

neueVersion

ersteVersion

Page 19: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Warum Regressionstests?

19

Fehlfunktionen kommen manchmal wieder

• via Versionskontrolle: cvs, svn, mercurial

- mergen mit alten defekten Versionen

• via (de-)maskierung:

- Fehlfunktion A wird durch unkorrekte Programmänderung B „behoben“

→neuer Defekt B maskiert nun Fehlfunktion A

- Nachdem B gefixt ist tritt Fehlfunktion A wieder auf

→Fehlfunktion A schnell erkennen

→verhindere daß erneut der falsche Fix B angewandt wird

Page 20: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Testen und Optimieren

20

Programm V0.10

Programm V0.90

Programm V1.00

Programm V2.00

Optimierung

einfach, stabil, langsam

komplex, schnell, stabil!

AnzahlTestfälle

Page 21: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Testen: Einordnung in die Softwaretechnologie

21

• Konstruktive Methoden (Erstellung)

- Anforderungsdefinition, Entwurf, Programmierung

• Analytische Methoden (Messen, Bewerten)

- Qualitätssicherung, Testen

Wichtig:

- nicht erst konstruieren, dann testen

- sondern begleitend zu allen Ebenen des Softwarezyklus

Page 22: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Kosten für Fehlerbehebung

0

12,5

25,0

37,5

50,0

Anforderung Entwurf Kodierung Strukturtest Funktionstest

Kodierfehler Entwurfsfehler Anforderungsfehler

22

Page 23: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Testen im Software-Lebenszyklus

23

1. Anforderungsdefinition

• Korrektheit, Vollständigkeit, Konsistenz• Testfälle vorbereiten

2. Entwurf

• Konsistenz, Vollständigkeit Systemstruktur• fehlende Fälle, Schnittstellen, fehlerh. Logik•Testfälle für interne Funktionen angeben

3. Realisierung / Kodierung

• Kode überprüfen und ausführen

4. Wartung = Beginn klass. Debugging

• Fehler beseitigen ohne neue zu erzeugen

man. In

spek

tion

Walk

-thro

ugh

Simula

tion

statis

che A

nalys

e

dyna

m. Ana

lyse

Verifi

katio

n

Regres

s.-

Tests

Page 24: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Testen: Abgrenzung zu anderen Verfahren

Verifikation

• formaler Korrektheitsbeweis

+ theoretisch die ideale Methode

- automatisches Beweisen nicht möglich

- manuelles Beweisen stupide und fehleranfällig

Nachteile gegenüber Testen:

• Testen überprüft mehr als formale Korrektheit (Robustheit, Spezifikation)

• Testen überprüft auch die Programmumgebung

24

Page 25: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Testen: Abgrenzung zu anderen Verfahren

Simulation

• Modell der Software ausführen

+ früher Einsatz möglich

+ Systeme ohne reale Umgebung testbar (eingebettete Systeme, Kernenergie)

- Übereinstimmung Simulation / Realität?

- Korrektheit des Simulators?

25

Page 26: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Wie generell sind die Methoden der Vorlesung?

26

• Paßt auf bash, awk, C/C++, Java, Lisp, Excel,...

• anwendbar auf so gut wie jedes Menschenwerk(alles sollte man beizeiten testen!)

• unabhängig von

- bestimmten Softwarewerkzeugen

- anderen Vorlesungen

• Techniken des Testens sind zeitlos

- im Gegensatz zu Programmiertechniken, die „Modeerscheinungen“ sind

Page 27: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

It‘s not a bug, it‘s a feature...

27

Page 28: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Der erste Bug (9. September 1947)

Bildquelle: Zeller

28

Page 29: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Software-Bugs entmystifiziert

Häufige Fehlwahrnehmungen:

• Fehler dringen von außen in das Programm ein

• Fehler entstehen zufällig / aus heiterem Himmel

➡ kompletter Unfug!

Stattdessen:

• Fehler sind von Anfang an im Programm

• oder durch spätere Koderevisionen erzeugt worden

➡ menschliche Fehlleistungen des Programmierers

29

Page 30: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Begriff des „Bugs“ ist zu breit gewählt

Defekt: Nicht korrekter Programmkode (ein Bug im Programmkode)

Infektion: Nicht korrekter Zustand (ein Bug im Zustand)

Fehlfunkion: Nicht korrektes Verhalten (ein Bug im Verhalten/Ausgabe)

Abgrenzung: flaw (Entwurfsfehler) - der richtig böse Fall

Psychologie:

• „bug“ / „issue“ klingen dem Kunden gegenüber verniedlichend

• „error“ / „fault“ für den verantwortlichen Programmierer belastend

30

Page 31: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

31

1. Der Programmierer erzeugt einen Defekt (Fehler im Programmkode).

2. Bei seiner Ausführung erzeugt der Defekt eine Infektion - einen Fehler im Programmzustand.

3. Die Infektion breitet sich aus.

4. Die Infektion erzeugt eine Fehlfunktion.

Vom Defekt zur Fehlfunktion

Variables

t

Bildquelle: Zeller

Page 32: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

31

1. Der Programmierer erzeugt einen Defekt (Fehler im Programmkode).

2. Bei seiner Ausführung erzeugt der Defekt eine Infektion - einen Fehler im Programmzustand.

3. Die Infektion breitet sich aus.

4. Die Infektion erzeugt eine Fehlfunktion.

Vom Defekt zur Fehlfunktion

Variables

t

Bildquelle: Zeller

Page 33: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

31

1. Der Programmierer erzeugt einen Defekt (Fehler im Programmkode).

2. Bei seiner Ausführung erzeugt der Defekt eine Infektion - einen Fehler im Programmzustand.

3. Die Infektion breitet sich aus.

4. Die Infektion erzeugt eine Fehlfunktion.

Vom Defekt zur Fehlfunktion

✘ ✘

Variables

t

Bildquelle: Zeller

Page 34: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

31

1. Der Programmierer erzeugt einen Defekt (Fehler im Programmkode).

2. Bei seiner Ausführung erzeugt der Defekt eine Infektion - einen Fehler im Programmzustand.

3. Die Infektion breitet sich aus.

4. Die Infektion erzeugt eine Fehlfunktion.

Vom Defekt zur Fehlfunktion

✘ ✘

Variables

t

Bildquelle: Zeller

Page 35: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

31

1. Der Programmierer erzeugt einen Defekt (Fehler im Programmkode).

2. Bei seiner Ausführung erzeugt der Defekt eine Infektion - einen Fehler im Programmzustand.

3. Die Infektion breitet sich aus.

4. Die Infektion erzeugt eine Fehlfunktion.

Vom Defekt zur Fehlfunktion

✘ ✘

Variables

t

Bildquelle: Zeller

Page 36: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Was ist überhaupt eine Fehlfunktion?

• Nichterfüllung einer festgelegten Forderung: ➞ Fehlfunktion

• Nichterfüllung einer- beabsichtigten Forderung- angemessenen Erwartung➞ Mangel

• Mithin gibt es also Grauzonen:

- Benutzerfreundlichkeit

- Programm zu langsam

- Schachprogramm spielt zu schlecht

32

unser Metier !

Page 37: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Wodurch entsteht falsche Programmierung?

Kommunikationsprobleme:

• Unvollständiger Entwurf

• Ungenauer Entwurf

• falsch interpretierter Entwurf

➡ Beschreibe es genau oder es geht schief!

• Entwurf verstanden, aber falsch programmiert

33

Raum für Murphys law

typische „Bugs“

Page 38: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

1. Funktionsfehler- Funktionalität falsch spezifiziert (→ neuer Entwurf!)

2. Schnittstellenfehler- Programmkomponenten interagieren falsch (z.B. falsche Parameterlisten)

3. Algorithmusfehler- Implementierung ist falsch oder uneffizient

4. Zuweisungsfehler- Berechnungsfehler bei Startwerten oder Zuweisungen

5. Abfragefehler- fehlerhafte oder fehlende Abfragen zerstören die Programmlogik

6. Synchronisations- / Zeitfehler- Zugriff auf gemeinsam Ressourcen

7. Konfigurationsfehler- Verwendung von Bibliotheken der falschen Version- Probleme im Änderungsmanagement / Versionskontrolle

8. Dokumentationsfehler- korrekt realisiert, aber falsch dokumentiert

Fehlerklassen - wie sie der Entwickler sieht

34

Page 39: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Einstufung von Fehlern nach ihrer Schwere- wie es der Projektmanager sieht

0. Katastrophal - Weltuntergang

1. Kritisch- Produktionsausfall; Aufgabe nicht mehr erfüllbar

2. Hoch- Produktion / Leistung herabgesetzt

3. Mittel- Verhinderung der vollen Ausnutzung der Programmöglichkeiten; Workaround existieren

4.Niedrig- kosmetische Probleme; Leistung bleibt erhalten

5. Unproblematisch- nicht geforderte Softwareverbesserung

35

Page 40: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Küchenschaben-Theorie

➡ Eine Küchenschabe kommt selten allein

• Fehler treten gehäuft auf

- manche Module sind fehlerfrei

- andere sehr fehlerbehaftet

‣ in der Umgebung eines Fehlers nach weiteren suchen!

36

Page 41: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Warum ist Software so kaputt?

37

Page 42: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Ursachen fehlerhafter Software

Menschliche Fehlleistungen beim

• Austauschen

• Verarbeiten

• Speichern

von Informationen, die zur Software-Entwicklung benötigt werden.

38

Page 43: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

3 Hauptformen der Kommunikation

1. Intrapersonale Kommunikation

• Denken und Wahrnehmen (Informationsverarbeitung innerhalb des Menschen)

- Identitätsirrtum:

Wert an Variable brutto statt netto zuweisen

39

Page 44: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

3 Hauptformen der Kommunikation

2. Interpersonale Kommunikation

• Informationsaustausch zwischen Gesprächspartnern

- Erklärungsirrtum: A gesagt, aber B gemeint

- Übermittlungsirrtum: Mitarbeiter gibt entgegengenommen Anruf falsch wieder

- Entschlüsselungsirrtum:- Information falsch gelesen / gehört- Unterschiedliche Sprache / Fachsprache

- Inhaltsirrtum: Mißverständnis über qualitative/quantitative Eigenschaften

40

Sprecher HörerÜbermittlung Dekodier.Kodier.

Page 45: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

3 Hauptformen der Kommunikation

3. Mediengebundene Kommunikation

• kleine Gruppe von Kommunikatoren (z.B. Journalisten)

• große Gruppe von Rezipienten (z.B. Zeitungsleser)

➝ gleiche Probleme wie bei interpersonaler Kommunikation

Typische Ausprägungen bei der Softwareentwicklung:

•große Projekte mit Projektleitern und Programmierern

•Online-Medien (Wikis, Foren, Online-Dokumentationen)

41

Page 46: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Kognitive Einschränkungen

Zu wenig RAM im Gehirn!

• zwar einige TB Langzeitgedächnis

• aber nur 5 - 9 Token / Worte Kurzzeitgedächtnis!

→ reicht maximal für 2 Schleifen inklusive Kontext!

→ erhebliches Handicap beim Nachvollziehen von Programmkode!

Genau wie ein Maurer das Haus Stein für Stein baut

• schreiben wir Programme Zeile für Zeile

• wir betrachten/manipulieren Programme durch einextrem kleines kognitives Fenster!

42

Page 47: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Nicht-kommunikative Fehlerquellen

• Komplexität der Systeme

- „Denken wie ein Computer“(vorherige Folie: Alle beteiligten Variablen etc. im Kopf behalten)

- Verstehen von Nebenläufigkeiten

• mangelndes Problemverständnis

- algorithmische Lösung unzutreffend / unbekannt

• fehlende Information der Beteiligten

• Streß, Übermüdung, fehlende Motivation

43

Page 48: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Ein paar Statistiken

• Anzahl Defekte im Entwicklungszyklus:

30 - 100 pro 1000 Zeilen Programmkode

• Anzahl Defekte im fertigen Produkt:

1.5 bis 5 pro 1000 Zeilen Programmkode (95% der Defekte werden gefunden)

• Verteilung:

2/3 im Entwurf; 1/3 bei der Programmierung

15% aller Defekte sind schwerwiegend

44

Page 49: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Mentale Aspekte der Softwareentwicklung

45

Page 50: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Psychologisches Problem

• Spezifikation, Entwurf, Programmierung: konstruktiver Prozeß

• Testen: destruktiver Prozeß (alles kaputtmachen)

Typischer Lernprozeß:

1. Optimismus: Mein Programm ist perfekt, Testen nicht nötig!

2. Bockigkeit: Oh, mein Programm ist falsch. Ich teste aber trotzdem nicht!

3. Resignation: Ich teste nur noch und gebe das Programm nie mehr frei.

4. Goldener Mittelweg: Ich weiß wann man mit dem Testen aufhören kann.

46

Page 51: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Folgerungen aus der Psychologie des Testens

• „Selbstloses“ (egoless) Programmieren

➡ nicht „mein“ Programm testen, sondern

➡ Produkt testen und verbessern

➡ jeder gefundene Fehler ist einer weniger

• Programm nicht durch die Entwickler testen lassen

- persönliche Distanz

- Mißverständnisse beim Interpretieren der Spezifikation

- Zielkonflikte wie z.B. Einhalten der Zeitvorgaben vermeiden

47

Page 52: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Täuschungen bei der Inspektion von Programmkode

• Trick- oder Ablauftäuschung

- Programmausdruck tut nicht das was man erwartet

- *c++ = *++a + b[*a]

• Erwartungstäuschung

- Kommentar sagt nicht das aus was das Programm tut

- /* Den Wert n-mal aufaddieren */for (i=1; i<n; i++) ...

• Überdeckungstäuschung

- Nicht alle Software-Testmethodon finden subtile Fehler.

48

Page 53: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Täuschungen bei der Inspektion von Programmkode

• Hemmungstäuschung

- in einem vorherigen Kontext gelernte Zusammenhänge gelten nicht mehr:

- Morgenstern, Abendstern, Zwergelstern

• Wiederholungstäuschung

- scheinbar gleiche Vorgänge haben unterschiedliche Ergebnisse

- Kopierte und leicht veränderte Programmteile!

49

Page 54: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Was tun?

50

Page 55: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Vermeidung oder Behebung von Fehlern?

Erinnerung - Fehlerursachen sind:

• Kommunikative Fehler

• sonstige (Komplexität, mangendes Verständnis/Info/Motivation, Streß, etc.)

➡ Ausschluß dieser Ursachen praktisch unmöglich

➡ Defekte wird es immer geben

➡ Defekte durch analytische Prozesse finden und beheben

51

Page 56: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Ideale Möglichkeiten um Defekte zu finden

52

im Papierstadium:

• Review (gedankliches Durchspielen) - auch wieder Kommunikationsprobleme

• Simulation - teuer, keine umfassenden Systematiken verfügbar

Page 57: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Ideale Möglichkeiten um Defekte zu finden

53

im Papierstadium:

• Review (gedankliches Durchspielen) - auch wieder Kommunikationsprobleme

• Simulation - teuer, keine umfassenden Systematiken verfügbar

im Programmstadium:

• Verifikation- Korrektheit beweisen

• idealer Test- für n Defekte reichen n Testfälle

• erschöpfender Test- alle Eingabemöglichkeiten durchprobieren

Page 58: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Ideale Möglichkeiten um Defekte zu finden

54

im Papierstadium:

• Review (gedankliches Durchspielen) - auch wieder Kommunikationsprobleme

• Simulation - teuer, keine umfassenden Systematiken verfügbar

im Programmstadium:

• Verifikation- Korrektheit beweisen

• idealer Test- für n Defekte reichen n Testfälle

• erschöpfender Test- alle Eingabemöglichkeiten durchprobieren

scheitert alles an Berechenbarkeit!

Page 59: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Ideale Möglichkeiten um Fehler zu finden

55

im Papierstadium:

• Review (gedankliches Durchspielen) - auch wieder Kommunikationsprobleme

• Simulation - teuer, keine umfassenden Systematiken verfügbar

im Programmstadium:

• Verifikation- Korrektheit beweisen

• idealer Test- für n Defekte reichen n Testfälle

• erschöpfender Test- alle Eingabemöglichkeiten durchprobieren

→ stichprobenhaftes Testen!

Page 60: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Stichprobenhaftes Testen

• statisch überprüfen oder

• dynamisch testen

➡ Anwesenheit bestimmter Fehler-/Defekttypen antizipieren und ausschließen

➡ hohe Kunst: an den „richtigen“ Stellen zu suchen / testen

56

Unser Thema!

Page 61: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Ausblick

• Statisches Testen (Quellkode analysieren)

➡ Defekte direkt aufdecken; Lernen „sicher“ zu programmieren

• Dynamisches Testen (Programm mit Testfällen ausführen)

➡ Lernen Testfälle zu generieren (= wonach man suchen muß)

• Techniken zum Debugging

➡ Lernen Defekte zu finden

• Methoden um Programme besser testbar / debugbar zu machen

➡ spezielle Entwurfs- und Programmiertechniken

57

Page 62: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Organisation

58

Page 63: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Umfang

• 2 V + 2Ü = 3 LP

• unbenoteter Schein, Kriterium ist Bearbeitung der Übungen

59

Page 64: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Wer hat Interesse an den Übungen?

• Inhalt der Übungen:

- Spielen mit einer Software 2D/3D-Engine

- 2 Aufgaben pro Woche, 1-2h Bearbeitungszeit

➡ Testen / Debuggen

➡ Interesse an C und Computergrafik auf niedrigem Abstraktionsniveau

• Wer hat Interesse an den Übungen?

• Termin: Freitag 12:30 (wegen Mittagessen ;-) im GZI, V2-222

60

Page 65: Technische Fakultät Universität Bielefeld Vorlesung ...cg/folien/st01.pdf · Technische Fakultät Universität Bielefeld Vorlesung Softwaretest und - debugging Version 2012 Dr.

Dr. Carsten Gnörlich: Softwaretestmethoden

Ende der heutigen Vorlesung

Danke fürs Zuhören!

Bis nächste Woche :-)

61