testtechniken-praktikum ws 2005/06 1 testgetriebene entwicklung andreas höfer dr. matthias müller...
Post on 06-Apr-2015
105 Views
Preview:
TRANSCRIPT
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
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
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.
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
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))
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!
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
top related