Eine Einführung in Test Driven Development (TDD) gibt es in der einhundertdritten Folge des Anwendungsentwickler-Podcasts.
Podcast: Play in new window | Download (Duration: 50:27 — 23.0MB)
Abonnieren: Apple Podcasts | Spotify | RSS
Inhalt
- Was ist Test Driven Development (TDD)?
- Beim TDD werden die Tests vor dem Produktivcode geschrieben.
- Wie läuft der TDD-Zyklus ab?
- Red, green, refactor. Der Test muss fehlschlagen, dann wird er so einfach wie möglich grün gemacht, dann wird refaktorisiert.
- Was ist der erweiterte TDD-Zyklus?
- Red, optimize failure message, green, refactor, refactor tests. Zusätzlich zum normalen Zyklus wird Wert auf sprechende Meldungen bei Fehlschlägen gelegt und auch der Test-Code explizit refaktorisiert.
- Wie kann man TDD mit Integrationstests kombinieren?
- Wie in GOOS* beschrieben: Zuerst Integrationstest schreiben, der längere Zeit fehlschlägt, und dann Schritt für Schritt mit Unit-Tests auf grünen Integrationstest hinarbeiten.
- Warum heißt TDD auch Test Driven Design?
- Weil sich das Design der Anwendung erst beim Programmieren ergibt.
- Was sind Vorteile von TDD?
- Tests werden nicht vergessen.
- Hohe Testabdeckung des Produktivcodes.
- Gute Modularisierung des Codes durch Fokussierung der Tests.
- Hohe Testbarkeit des Codes (wenig Abhängigkeiten).
- Langfristig Zeiteinsparung bei der Weiterentwicklung, da Regression sofort erkannt wird.
- Experimente und Refactorings werden durch Testnetz erst ermöglicht.
- Was sind Nachteile von TDD?
- Umstellung beim Entwickler nötig.
- Zunächst höherer Zeitaufwand.
- Legacy Code ist meist nicht gut testbar.
- Wie findet man Testfälle?
- Start mit „Happy Path“
- übliche Geschäftsvorfälle
- einfachste Fälle
- Edge-Cases/Grenzwerte
- Sonderfälle
- Was sind Äquivalenzklassen?
- Werte, deren Verwendung in Tests zum Durchlaufen des gleichen Pfades im Code führen und damit nicht zusätzlich getestet werden müssen (Beispiel „positive Zahl“ 5 und 322).
- Was ist ein Regressionstest?
- Regressionstest stellen sicher, dass Abweichungen vom bisherigen Verhalten (Regression) schnellstmöglich erkannt werden.
- Wie steigt man am besten in TDD ein?
- Nicht lange schnacken (lesen), Kopp in‘ Nacken (coden)! Einfach machen! Am besten mit Code Katas.
Literaturempfehlungen
Zum Einstig schau dir mal diese perfekt auf die Begleitmusik angepasste Implementierung der Kata „Prime Factors“ von Uncle Bob an:
Prime Factors Kata in Ruby, Flower Duet, Lakme‘
Zum Thema TDD empfehle ich zunächst das „Original“ Test Driven Development: By Example* von Kent Beck, der TDD erfunden hat. Es ist voll mit Beispielen, gut verständlich und auch nicht allzu lang. Das Buch ist zwar schon ein paar Tage älter, aber immer noch meine Empfehlung zum Einstieg.
Etwas moderner geht es zu in Professional Test Driven Development with C#*. In den Links habe ich auch meine Rezension des Buches verlinkt. Dort erfährst du noch mehr darüber, warum ich das Buch empfehlen kann.
Zuletzt noch ein modernes Buch zum Thema testen und TDD: Pragmatic Unit Testing in Java 8 with JUnit*. Darüber habe ich schon eine ganze Podcast-Episode aufgenommen und auch eine Rezension geschrieben (siehe Links).
Falls du schon fortgeschritten bist, kann ich wärmstens Growing Object-Oriented Software, Guided by Tests* empfehlen. Das Buch hat mein Verständnis von TDD noch einmal grundlegend erweitert und mich nachhaltig geprägt. Ein tolles Buch, das auch den erweiterten TDD-Zyklus beschreibt und über einfache Unit-Tests weit hinaus geht.
Und falls du mal lesen willst, wie ich ein Testframework testgetrieben entwickelt habe, kannst du dir hier den entsprechenden Teil meiner Masterarbeit herunterladen: NUNIT: A Unit-Test-Framework for Natural.
Links
- Permalink zu dieser Podcast-Episode
- RSS-Feed des Podcasts
- Regressionstest – Wikipedia
- Rezension: Professional Test Driven Development with C# von James Bender und Jeff McWherter
- Rezension: Pragmatic Unit Testing in Java 8 with JUnit von Jeff Langr
- Pragmatic Unit Testing in Java 8 with JUnit (Buchclub)
- Rezension: Growing Object-Oriented Software, Guided by Tests (Freeman/Pryce)
Neueste Kommentare