Test-Driven Development in der Praxis
Software durch kurze Test-Code-Refactoring-Zyklen entwickeln
01 Intro
Test-Driven Development nutzt automatisierte Tests nicht erst zur
nachträglichen Prüfung, sondern als Werkzeug während des Softwareentwurfs.
Der kurze Wechsel zwischen Test, Implementierung und Refactoring zwingt
dazu, Verhalten explizit zu formulieren und Designentscheidungen
kontinuierlich zu überprüfen.
Der Kurs vermittelt Test-Driven Development praktisch anhand wachsender
Implementierungsaufgaben. Dabei wird es weder als Garantie für gutes Design
noch als Dogma behandelt, sondern als Engineering-Technik mit konkreten
Stärken, Grenzen und Voraussetzungen.
Kurs-ID
SWE-007
Dauer
2 Tage
Format
Präsenz · Live Online · Inhouse
Vorkenntnisse
Sichere Programmiergrundlagen und Grundkenntnisse von Unit Tests
02 Trainingsprogramm
Inhalte
Test-Driven Development einordnen
- Test First
- Red-Green-Refactor
- Feedback
- Design
- Regression
- Grenzen
Der Entwicklungszyklus
- kleinen Test wählen
- Red
- minimale Implementierung
- Green
- Refactor
- kleine Schritte
Tests formulieren
- beobachtbares Verhalten
- Arrange-Act-Assert
- aussagekräftige Namen
- eine Aussage
- Testfälle auswählen
- Lesbarkeit
Vom Beispiel zur Implementierung
- einfachster Fall
- Triangulation
- Generalisierung
- Fake It
- Obvious Implementation
- Schrittgröße
Refactoring im Zyklus
- Duplikate
- Namen
- Methoden
- Klassen
- Verantwortlichkeiten
- grünen Zustand halten
Test Doubles
- Stub
- Mock
- Fake
- Spy
- Isolation
- Overmocking
Tests und Design
- Kohäsion
- Kopplung
- Schnittstellen
- Dependency Injection
- emergentes Design
- Design Feedback
Schwierige Abhängigkeiten
- Datenbanken
- Dateisystem
- Zeit
- Zufall
- Netzwerk
- Architekturgrenzen
Testgetriebene Arbeit an bestehendem Code
- Legacy Code
- Characterization
- neue Funktionalität
- bestehende Strukturen
- Refactoring
- schrittweise Einführung
Typische Anti-Patterns
- fragile Tests
- Implementierungsdetails testen
- zu viele Mocks
- riesige Testfälle
- zu große Schritte
- Dogmatismus
Zusammenarbeit im Team
- Pair Programming
- Code Reviews
- Continuous Integration
- Testkonventionen
- gemeinsame Qualität
- Definition of Done
Kata und Praxisprojekt
- Anforderungen schrittweise entwickeln
- Tests zuerst schreiben
- Implementierung wachsen lassen
- refactoren
- Design diskutieren
- Retrospektive
03 Durchführung
Rahmen und Organisation
Dauer
2 Tage
Durchführung
Präsenz oder Live Online, vorzugsweise als Inhouse-Schulung
Schwerpunkt
Inhouse-Schulungen für Unternehmen und Teams
Sprache
Deutsch, englische Fachbegriffe und Dokumentation
Unterlagen
Kursunterlagen, Beispiele und Übungsaufgaben
Technik
Eigener Rechner mit Entwicklungsumgebung und Test-Framework
Inhouse-Schulungen
Die Übungen können in der Sprache und mit dem Test-Framework durchgeführt
werden, die im Team eingesetzt werden.
04 Zielgruppe
Für wen ist der Kurs gedacht?
Softwareentwickler, die Test-Driven Development praktisch erlernen oder
ihren bisherigen Umgang damit systematisieren möchten.
Voraussetzungen
Sichere Programmiergrundlagen und Kenntnisse von Unit Tests.
05 Lernziele
Was Sie nach dem Kurs können
Die Teilnehmer können den Red-Green-Refactor-Zyklus sicher anwenden,
Anforderungen in kleine Entwicklungsschritte zerlegen, Tests als
Designfeedback nutzen und die Grenzen testgetriebener Entwicklung
realistisch beurteilen.
06 FAQ
Häufige Fragen
Wird wirklich jeder Test zuerst geschrieben?
Im Entwicklungszyklus ja. Das bedeutet nicht, dass jede Form von Softwareentwicklung ausschließlich testgetrieben durchgeführt werden muss.
Entsteht dadurch automatisch eine gute Architektur?
Nein. Tests liefern Feedback und fördern bestimmte Designqualitäten, ersetzen aber keine Entwurfsentscheidungen.
Worin unterscheidet sich der Kurs vom Refactoring-Kurs?
Test-Driven Development ist eine Entwicklungstechnik. Refactoring ist eine eigenständige Technik zur strukturellen Verbesserung unter Verhaltenserhaltung und bildet nur einen Teil des Zyklus.