TDD & CI/CD – Red-Green-Refactor & automatisierte Pipelines
Dieser Beitrag ist eine Begriffserklärung zu TDD und CI/CD – inklusive Prüfungsfragen und Tags.
In a Nutshell
Test-Driven Development (TDD) ist ein Entwicklungsansatz, bei dem Tests vor dem Code geschrieben werden. CI/CD beschreibt automatisierte Prozesse zum kontinuierlichen Integrieren und Ausliefern von Software.
Kompakte Fachbeschreibung
Test-Driven Development (TDD) folgt dem Zyklus: Red – Green – Refactor. Zuerst wird ein fehlender Test geschrieben (Red), dann der minimale Code zum Bestehen (Green), danach wird optimiert (Refactor). TDD fördert sauberen, testbaren Code und reduziert Fehler frühzeitig. CI/CD steht für Continuous Integration (automatisiertes Zusammenführen von Code in Hauptbranch mit Tests) und Continuous Deployment/Delivery, das Änderungen automatisiert in Staging oder Produktion ausliefert. CI/CD nutzt Tools wie GitHub Actions, Jenkins oder GitLab CI, kombiniert mit Unit-, Integration- und Akzeptanztests.
Prüfungsrelevante Stichpunkte
- TDD = Test zuerst, dann Implementierung
- Red-Green-Refactor-Zyklus
- CI = Automatisiertes Bauen, Testen nach jedem Commit
- CD = Automatisiertes Ausliefern auf Zielumgebungen (IHK-relevant)
- TDD erhöht Testabdeckung und strukturiert Code
- CI/CD reduziert manuelle Fehler und Sicherheitsrisiken
- Schnellere Releases durch Automatisierung
- Build- und Deploymentprozesse müssen dokumentiert sein
Kernkomponenten
- Unit Tests
- Test Frameworks (z.B. JUnit, pytest)
- CI-Server (z.B. Jenkins, GitHub Actions)
- Build Tools (z.B. Maven, Gradle)
- Docker für Deployment
- Pipeline-Skripte
- Automatisiertes Deployment (CD)
- Rollback-Strategien
- Staging-Umgebungen
- Testabdeckung und Code-Qualitätstools
Praxisbeispiel
# Beispiel TDD (Python mit pytest)
def add(a, b):
return a + b
def test_add():
assert add(2, 3) == 5
Erklärung: Erst wird der Test geschrieben, der fehlschlägt (Red). Danach wird add() implementiert (Green). Anschließend wird die Struktur ggf. verbessert (Refactor).
Vorteile und Nachteile
Vorteile
- Höhere Codequalität
- Automatisierte Qualitätssicherung
- Schnellere Fehlersuche
- Wiederholbare und sichere Deployments
Nachteile
- Höherer Initialaufwand
- Infrastruktur nötig (CI/CD-Systeme)
- Erfordert diszipliniertes Vorgehen
Typische Prüfungsfragen (mit Kurzantwort)
- “Red-Green-Refactor” in TDD? Test schreiben (Rot), minimaler Code (Grün), dann Refactoring.
- Ziel von CI? Automatisiertes Testen und Zusammenführen von Codeänderungen.
- CD unterstützt Entwicklungsprozess? Durch automatisiertes Ausliefern von getesteten Versionen.
- Tests bei CI/CD automatisch? Unit-, Integrations-, ggf. Akzeptanztests.
- Continuous Delivery vs. Deployment? Delivery = bis Staging, Deployment = direkt in Produktion.
- TDD fördert Softwarequalität? Fehler werden früh erkannt, Code ist besser strukturiert.
- CI/CD Tools häufig eingesetzt? Jenkins, GitHub Actions, GitLab CI, Travis CI.
- CI/CD-Prozess dokumentieren? Als Pipeline-Konfiguration (YAML-Datei) mit Beschreibung aller Schritte.
Wichtigste Quellen
- https://martinfowler.com/bliki/TestDrivenDevelopment.html
- https://docs.github.com/en/actions
- https://www.atlassian.com/continuous-delivery
- https://docs.pytest.org/en/latest/
- https://learn.microsoft.com/en-us/azure/devops/pipelines/index