Funktionales Testen
Methodik zur Validierung, dass Software die spezifizierten funktionalen Anforderungen erfüllt, durch Ausführung von Funktionen und End-to-End-Szenarien.
Klassifikation
- KomplexitätMittel
- AuswirkungTechnisch
- EntscheidungstypDesign
- OrganisationsreifeFortgeschritten
Technischer Kontext
Prinzipien & Ziele
Use Cases & Szenarien
Kompromisse
- Flaky Tests verursachen Vertrauensverlust in Test-Suiten.
- Unzureichende Abdeckung kann kritische Fehler übersehen.
- Zu enge Bindung an konkrete UI-Implementierung erhöht Wartungskosten.
- Schreibe wartbare, isolierte automatisierte Tests mit klaren Assertions.
- Priorisiere Testfälle nach Risiko und Kundennutzen.
- Nutze stabile Testdaten und Umfeld-Isolation zur Reduzierung von Flakiness.
I/O & Ressourcen
- Spezifikationen und Akzeptanzkriterien
- Zu testende Build-Artefakte
- Testdaten und Testumgebungen
- Testprotokolle und Berichte
- Fehler- und Ticketlisten
- Abnahmeentscheidung oder Release-Freigabe
Beschreibung
Funktionales Testen überprüft, ob Software die spezifizierten Funktionsanforderungen erfüllt, indem einzelne Funktionen und End-to-End-Szenarien ausgeführt werden. Es fokussiert auf Eingaben, erwartete Ausgaben und Systemverhalten ohne interne Implementierungsdetails. Typische Techniken umfassen manuelle Tests, automatisierte Tests mit Testframeworks sowie testgetriebene Ansätze zur frühzeitigen Fehlererkennung.
✔Vorteile
- Frühe Validierung von Features gegen Anforderungen.
- Reduzierung von Regressionen durch automatisierte Suiten.
- Verbesserte Akzeptanzsicherheit für Stakeholder und Produktbesitzer.
✖Limitationen
- Deckt keine internen Implementierungsfehler ab.
- Aufwändiger Testdaten- und Umgebungsaufbau bei Integrationstests.
- Automatisierung erfordert initialen Entwicklungsaufwand.
Trade-offs
Metriken
- Testabdeckung (Funktional)
Prozentualer Anteil der spezifizierten Funktionen, die durch Tests abgedeckt sind.
- Fehlerdichte nach Release
Anzahl gefundener Fehler pro Release im Verhältnis zur getesteten Funktionalität.
- Durchlaufzeit der Test-Suite
Zeit, die das vollständige Ausführen der funktionalen Test-Suite benötigt.
Beispiele & Implementierungen
E-Commerce Checkout-Tests
Funktionale Tests verifizieren gesamte Kaufabfolge inklusive Rabattlogik und Zahlungsabwicklung.
API-Funktionsprüfung eines Zahlungsdienstes
Automatisierte Tests prüfen API-Endpunkte auf erwartete Antworten und Fehlerbehandlung.
Formularvalidierung im Kundenportal
Manuelle und automatisierte Tests validieren Eingaben, Fehlermeldungen und erfolgreiche Speicherung.
Implementierungsschritte
Anforderungen und Akzeptanzkriterien identifizieren
Testfälle und Szenarien ableiten und priorisieren
Testumgebung und Testdaten aufbauen
Automatisierungspotenzial analysieren und Suiten erstellen
Tests in CI/CD integrieren und Laufzeiten optimieren
Ergebnisse auswerten, Regressionen nachverfolgen und verbessern
⚠️ Technische Schulden & Engpässe
Tech Debt
- Veraltete Testfälle, die nicht an Codeänderungen angepasst wurden.
- Fehlende Modularisierung von Testautomatisierungscode.
- Unzureichende Testdatenverwaltung und -versionierung.
Bekannte Engpässe
Beispiele für Missbrauch
- Nur funktionale Tests durchführen und Integrationstests vernachlässigen.
- Automatisierte Tests ohne Assertions für kritische Flows.
- Test-Suiten als Blocker ohne Differenzierung nach Risiko einsetzen.
Typische Fallen
- Falsche Priorisierung führt zu langen Release-Zyklen.
- Zu enge Kopplung an Testdaten erschwert Wiederverwendung.
- Unklare Akzeptanzkriterien führen zu unbestimmten Testzielen.
Erforderliche Fähigkeiten
Drivers (Architectural Drivers)
Constraints
- • Zeitdruck vor Releases begrenzt Testumfang
- • Zugriffsbeschränkungen auf Produktionsdaten
- • Budget für Testautomatisierung ist begrenzt