Einführung in Test Driven Development – Anwendungsentwickler-Podcast #103
IT-Berufe-Podcast - A podcast by Stefan Macke - Lunedì
Categorie:
Eine Einführung in Test Driven Development (TDD) gibt es in der einhundertdritten Folge des Anwendungsentwickler-Podcasts. 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,