36
LOD LOD Levels of Detail Levels of Detail Oliver Gassner Oliver Gassner Christian Troger Christian Troger

Testtechniken-Praktikum WS 2005/06 1 Testgetriebene Entwicklung Andreas Höfer Dr. Matthias Müller mit Beiträgen von Johannes Link

Embed Size (px)

Citation preview

Page 1: Testtechniken-Praktikum WS 2005/06 1 Testgetriebene Entwicklung Andreas Höfer Dr. Matthias Müller mit Beiträgen von Johannes Link

11

Testtechniken-Praktikum WS 2005/06Testtechniken-Praktikum WS 2005/06

Testgetriebene Testgetriebene EntwicklungEntwicklungAndreas HöferAndreas Höfer

Dr. Matthias MüllerDr. Matthias Müller

mit Beiträgen von Johannes Linkmit Beiträgen von Johannes Link

Page 2: Testtechniken-Praktikum WS 2005/06 1 Testgetriebene Entwicklung Andreas Höfer Dr. Matthias Müller mit Beiträgen von Johannes Link

Testtechniken-Praktikum WS 2005/06Testtechniken-Praktikum WS 2005/06Andreas Höfer – Dr. Matthias MüllerAndreas Höfer – Dr. Matthias Müller

22

Was bedeutet das?Was bedeutet das?

Synonyme:Synonyme: Test-First Development (TFD)Test-First Development (TFD) Test-Driven Development (TDD)Test-Driven Development (TDD)

Programmierer schreibt Unit-TestsProgrammierer schreibt Unit-Tests Kunde spezifiziert AkzeptanztestsKunde spezifiziert Akzeptanztests Keine Testtechnik sondern Festhalten der Keine Testtechnik sondern Festhalten der

Spezifikation in CodeSpezifikation in Code

Page 3: Testtechniken-Praktikum WS 2005/06 1 Testgetriebene Entwicklung Andreas Höfer Dr. Matthias Müller mit Beiträgen von Johannes Link

Testtechniken-Praktikum WS 2005/06Testtechniken-Praktikum WS 2005/06Andreas Höfer – Dr. Matthias MüllerAndreas Höfer – Dr. Matthias Müller

33

Test/Code/RefactorTest/Code/Refactor

grüngrün rotrotSchreibe einen Test der fehlschlägt. Schreibe Schreibe einen Test der fehlschlägt. Schreibe gegebenenfalls gerade soviel Code, dass der gegebenenfalls gerade soviel Code, dass der Test übersetzt werden kann. Test übersetzt werden kann.

rotrot grüngrünSchreibe gerade soviel Code, dass alle Tests Schreibe gerade soviel Code, dass alle Tests erfolgreich laufen.erfolgreich laufen.

grüngrün grüngrünEliminiere Duplikationen und andere üble Eliminiere Duplikationen und andere üble Gerüche im Code.Gerüche im Code.

Page 4: Testtechniken-Praktikum WS 2005/06 1 Testgetriebene Entwicklung Andreas Höfer Dr. Matthias Müller mit Beiträgen von Johannes Link

Testtechniken-Praktikum WS 2005/06Testtechniken-Praktikum WS 2005/06Andreas Höfer – Dr. Matthias MüllerAndreas Höfer – Dr. Matthias Müller

44

Zustandsdiagramm: Test-Zustandsdiagramm: Test-getriebene Entwicklunggetriebene Entwicklung

Zustandsdiagramm idealisiertZustandsdiagramm idealisiert Testcode vor AnwendungscodeTestcode vor Anwendungscode Kleine SchritteKleine Schritte Inkrementelles DesignInkrementelles Design

Grün(Alle Tests

laufen)

Rot(Mindestens einTest scheitert)

umstrukturieren

Anwendungscode schreiben

Testcode schreiben

Keine Ideen fürmehr Testcode

Page 5: Testtechniken-Praktikum WS 2005/06 1 Testgetriebene Entwicklung Andreas Höfer Dr. Matthias Müller mit Beiträgen von Johannes Link

Testtechniken-Praktikum WS 2005/06Testtechniken-Praktikum WS 2005/06Andreas Höfer – Dr. Matthias MüllerAndreas Höfer – Dr. Matthias Müller

55

Umstrukturierung Umstrukturierung (Refactoring)(Refactoring)

““A change made to the internal structure of A change made to the internal structure of software to make it easier to understand and software to make it easier to understand and cheaper to modify without changing its cheaper to modify without changing its observable behavior.” [Fowler 99]observable behavior.” [Fowler 99]

Regressionstests stellen sicher, dass sich Regressionstests stellen sicher, dass sich beobachtbares Verhalten nicht beobachtbares Verhalten nicht ändert.ändert.

Refactoring des Testcodes Refactoring des Testcodes Anwendungscode als “Test” des TestcodesAnwendungscode als “Test” des Testcodes Deshalb möglichst nie beides gleichzeitig ändernDeshalb möglichst nie beides gleichzeitig ändern Nicht immer möglich (z.B. SchnittstellenNicht immer möglich (z.B. Schnittstellenänderungänderung))

Page 6: Testtechniken-Praktikum WS 2005/06 1 Testgetriebene Entwicklung Andreas Höfer Dr. Matthias Müller mit Beiträgen von Johannes Link

Testtechniken-Praktikum WS 2005/06Testtechniken-Praktikum WS 2005/06Andreas Höfer – Dr. Matthias MüllerAndreas Höfer – Dr. Matthias Müller

66

Ziel der Ziel der UmstrukturierungUmstrukturierung

Ziel ist eine einfache Form Ziel ist eine einfache Form Die einfache Form ist erreicht, wenn der Die einfache Form ist erreicht, wenn der

Code…Code… alle seine Tests erfüllt. alle seine Tests erfüllt. vom Zielpublikum verstanden werden kann. vom Zielpublikum verstanden werden kann. jede Intention der Programmierer ausdrückt. jede Intention der Programmierer ausdrückt. keine duplizierte Logik enthält. keine duplizierte Logik enthält. möglichst wenig Klassen und Methoden umfasst.möglichst wenig Klassen und Methoden umfasst.

Reihenfolge entscheidend!Reihenfolge entscheidend!

Page 7: Testtechniken-Praktikum WS 2005/06 1 Testgetriebene Entwicklung Andreas Höfer Dr. Matthias Müller mit Beiträgen von Johannes Link

Testtechniken-Praktikum WS 2005/06Testtechniken-Praktikum WS 2005/06Andreas Höfer – Dr. Matthias MüllerAndreas Höfer – Dr. Matthias Müller

77

ReferenzenReferenzen

Kent BeckKent BeckTestdriven Development: By ExampleTestdriven Development: By ExampleAddison-Wesley, 2002Addison-Wesley, 2002

Martin FowlerMartin FowlerRefactoringRefactoringAddison-Wesley, 1999Addison-Wesley, 1999

http://http://www.agiledata.org/essays/tdd.htmlwww.agiledata.org/essays/tdd.html