Testing
Systematische Überprüfung von Software, um Fehler, Qualität und Konformität zu evaluieren.
Klassifikation
- KomplexitätMittel
- AuswirkungTechnisch
- EntscheidungstypArchitektur
- OrganisationsreifeFortgeschritten
Technischer Kontext
Prinzipien & Ziele
Use Cases & Szenarien
Kompromisse
- Übermäßiges Vertrauen in unzureichende Tests führt zu Produktionsfehlern.
- Hohe Testwartung bindet Ressourcen von Feature-Entwicklung ab.
- Flaky Tests untergraben CI-Prozesse und Entwicklerproduktivität.
- Testpyramide befolgen: viele Unit-, moderate Integration-, wenige UI-Tests.
- Tests in CI früh und häufig ausführen (Shift-Left).
- Flaky Tests identifizieren und priorisiert beheben.
I/O & Ressourcen
- Anforderungen, Akzeptanzkriterien, User Stories
- Testframeworks und Testwerkzeuge
- Testdaten, Mocks und Staging-Infrastruktur
- Testberichte und Fehlerlogs
- Abdeckungs- und Qualitätsmetriken
- Freigabeempfehlungen und Risikobewertungen
Beschreibung
Testing ist die systematische Überprüfung von Software, um Fehler, Abweichungen und Qualitätsmängel zu erkennen. Es umfasst Strategien, Techniken und Arten von Tests (Unit, Integration, System, Acceptance) sowie Automatisierung und Messgrößen zur Bewertung. Ziel ist zuverlässigere Software, geringeres Risiko und frühzeitiges Erkennen von Regressionen.
✔Vorteile
- Frühe Fehlererkennung reduziert Kosten für Korrekturen.
- Verbesserte Softwarequalität und Nutzerzufriedenheit.
- Bessere Entscheidungsgrundlage für Releases und Risk-Management.
✖Limitationen
- Vollständige Testabdeckung ist oft nicht wirtschaftlich erreichbar.
- Automatisierung erfordert initialen Aufwand und Wartung.
- Fehlende Testqualität kann falsche Sicherheit vermitteln.
Trade-offs
Metriken
- Testabdeckung
Prozentsatz des Codes oder der Anforderungen, die durch Tests abgedeckt sind.
- Mean Time to Detect (MTTD)
Durchschnittliche Zeit bis zur Entdeckung eines Fehlers nach Einführen eines Problems.
- Fehlerrate in Produktion
Anzahl kritischer Fehler pro Release in der Produktionsumgebung.
Beispiele & Implementierungen
Unit-First-Strategie in Microservices
Teams führen umfangreiche Unit-Tests pro Service durch und integrieren diese in CI, um schnelle Rückmeldungen zu erhalten.
End-to-End-Tests für Benutzerflüsse
E2E-Tests validieren komplette Benutzerflüsse in einer reproduzierbaren Testumgebung vor Release.
Testpyramide zur Priorisierung
Die Testpyramide priorisiert Unit- über Integration- bis zu UI-Tests, um Balance zwischen Geschwindigkeit und Abdeckung zu erreichen.
Implementierungsschritte
Definition von Testzielen und Akzeptanzkriterien basierend auf Anforderungen.
Aufbau einer initialen Testinfrastruktur mit CI-Integration.
Priorisierung und Implementierung der Testfälle (Unit → Integration → E2E).
Einführung von Metriken, Monitoring und regelmäßiger Wartung der Tests.
⚠️ Technische Schulden & Engpässe
Tech Debt
- Fehlende Testabdeckung in kritischen Modulen.
- Monolithische Testumgebungen mit langsamen Laufzeiten.
- Veraltete Testdaten und fehlende Datenstrategien.
Bekannte Engpässe
Beispiele für Missbrauch
- Automatisierung aller Tests ohne Priorisierung führt zu hoher Wartung.
- Messen nur der Testabdeckung als Qualitätsindikator.
- Tests nur am Ende des Projekts ausführen (Late Testing).
Typische Fallen
- Unklare Akzeptanzkriterien erschweren Testdesign.
- Abhängigkeiten zu externen Systemen ohne Isolation führen zu instabilen Tests.
- Zu viel Vertrauen in manuelle Smoke-Checks.
Erforderliche Fähigkeiten
Drivers (Architectural Drivers)
Constraints
- • Begrenzte Ressourcen für Testinfrastruktur
- • Regulatorische Anforderungen an Testdokumentation
- • Legacy-Systeme mit schwer testbarer Architektur