Specification by Example
Eine kollaborative Methode, Anforderungen durch konkrete Beispiele zu spezifizieren und als automatisierbare Akzeptanztests zu formulieren.
Klassifikation
- KomplexitätMittel
- AuswirkungOrganisatorisch
- EntscheidungstypOrganisation
- OrganisationsreifeFortgeschritten
Technischer Kontext
Prinzipien & Ziele
Use Cases & Szenarien
Kompromisse
- Beispiele werden von Implementierung losgelöst und veralten.
- Übermäßige Detailtiefe führt zu fragilem Testcode.
- Falsche Moderation im Workshop erzeugt irrelevante Szenarien.
- Fokus auf geschäftsrelevante Beispiele statt technischer Details.
- Keep examples readable und für Fachleser verständlich halten.
- Isoliere Automatisierungslogik vom Domänen‑Beispieltext.
I/O & Ressourcen
- Geschäftsziele und Nutzerbedürfnisse
- Vorläufige User Stories oder Features
- Fachliche Experten und Entwickler im Workshop
- Explizite Beispiele mit Akzeptanzkriterien
- Automatisierte Akzeptanztests in CI
- Living Documentation als Referenz
Beschreibung
Specification by Example ist eine kollaborative Technik zur Anforderungsdefinition durch konkrete Beispiele, die zu akkuraten, automatisierbaren Akzeptanztests werden. Teams formulieren realistische Szenarien, klären Missverständnisse und erzeugen ausführbare Spezifikationen. Es fördert gemeinsame Domänenmodelle und reduziert Nacharbeit.
✔Vorteile
- Verbesserte Kommunikation zwischen Fachseite und Entwicklung.
- Frühzeitiges, reproduzierbares Feedback durch automatisierte Akzeptanztests.
- Reduzierte Implementierungsfehler und weniger Nacharbeit.
✖Limitationen
- Erfordert Disziplin zur Pflege und Synchronisation der Beispiele.
- Hoher initialer Aufwand bei komplexen Domänen.
- Nicht alle nicht‑funktionalen Anforderungen lassen sich über Beispiele abbilden.
Trade-offs
Metriken
- Akzeptanz-Test-Abdeckung
Prozentualer Anteil kritischer Anforderungsbeispiele, die automatisiert ausgeführt werden.
- Zykluszeit Anforderungen→Test
Zeit vom Erstentwurf eines Beispiels bis zur erfolgreichen Testausführung in CI.
- Fehlerreproduzierbarkeit
Anteil gemeldeter Fehler, die durch ein Beispiel reproduziert werden können.
Beispiele & Implementierungen
E-Commerce Checkout-Szenarien
Beispiele beschreiben Zahlungsoptionen, Mehrfachartikel und Rabatte als ausführbare Tests.
Buchungsstrecke für Reiseplattform
Szenarien modellieren Sitzplatzverfügbarkeit, Stornofälle und Preisregeln.
Benutzerregistrierung mit Validierungsregeln
Konkrete Beispiele klären Feldvalidierung, E‑Mail‑Verifikation und Fehlerverhalten.
Implementierungsschritte
Stakeholder und Entwickler für Beispiel-Workshops zusammenbringen.
Kernszenarien identifizieren und in Given‑When‑Then formulieren.
Beispiele als testspezifische Artefakte in ein Repository überführen.
Automatisierungs-Adapter implementieren, um Beispiele ausführbar zu machen.
CI-Pipeline konfigurieren zur Ausführung der Akzeptanz-Suite.
Regelmäßige Reviews und Pflegeintervalle für Living Documentation etablieren.
⚠️ Technische Schulden & Engpässe
Tech Debt
- Große Sammlung veralteter Beispiele ohne Cleanup‑Plan.
- Ad-hoc Testadaptionen, die nicht wiederverwendbar sind.
- Monolithische Test‑Suites, die lange Laufzeiten erzwingen.
Bekannte Engpässe
Beispiele für Missbrauch
- Beispiele nutzen, um Details von Implementierungen zu dokumentieren statt Anforderungen.
- Jedes kleinste Verhalten als eigenes Beispiel aufzuschreiben.
- Beispiele als einzige Quelle für rechtliche Anforderungen verwenden.
Typische Fallen
- Unklare Verantwortlichkeit für Pflege der Beispiele.
- Zu enge Kopplung der Tests an fragile UI-Elemente.
- Fehlende Metriken zur Messung des Nutzens.
Erforderliche Fähigkeiten
Drivers (Architectural Drivers)
Constraints
- • Zeitbudget für Workshops ist begrenzt.
- • Legacy‑Systeme erschweren automatisierte Verifikation.
- • Rechtliche Anforderungen können Beispielgestaltung einschränken.