Nicht-funktionales Testing
Methodischer Ansatz zur Planung und Durchführung von Tests für nicht-funktionale Anforderungen wie Performance, Skalierbarkeit, Sicherheit und Zuverlässigkeit.
Klassifikation
- KomplexitätMittel
- AuswirkungTechnisch
- EntscheidungstypArchitektur
- OrganisationsreifeFortgeschritten
Technischer Kontext
Prinzipien & Ziele
Use Cases & Szenarien
Kompromisse
- Falsche Lastprofile führen zu irreführenden Ergebnissen
- Übermäßiger Fokus auf einzelne Metriken vernachlässigt Gesamtverhalten
- Testumgebungen mit Produktionsdaten bergen Compliance-Risiken
- Tests mit Produktionsähnlichen Daten und Topologien ausführen
- Szenarien regelmäßig wiederholen und Baselines pflegen
- Tests in CI/CD und Monitoring-Pipelines integrieren
I/O & Ressourcen
- Nicht-funktionale Anforderungen und Akzeptanzkriterien
- Anforderungsprofile und Lastmodelle
- Testumgebungen, Messinstrumente und Monitoring
- Testberichte mit Metriken, Thresholds und Handlungsempfehlungen
- Konkrete Optimierungs- und Capacity-Empfehlungen
- Regressionstests und Baselines für Folge-Releases
Beschreibung
Nicht-funktionales Testing ist eine strukturierte Methode zur Bewertung systemischer Eigenschaften wie Performance, Skalierbarkeit, Zuverlässigkeit, Sicherheit und Wartbarkeit. Sie definiert Testszenarien, Umgebungen und Metriken zur Validierung nicht-funktionaler Anforderungen und unterstützt Architektur‑ sowie Betriebsentscheidungen. Es integriert CI/CD und Monitoring für kontinuierliche Validierung und Regressionskontrolle.
✔Vorteile
- Frühe Erkennung von Performance- und Zuverlässigkeitsproblemen
- Bessere Entscheidungsgrundlage für Architektur und Kapazität
- Reduzierte Produktionsausfälle durch validierte Betriebsannahmen
✖Limitationen
- Hoher Aufwand für realistische Testumgebungen
- Ergebnisinterpretation erfordert Domänen- und Infrastrukturkenntnis
- Nicht alle Aspekte lassen sich vollständig in Testumgebungen reproduzieren
Trade-offs
Metriken
- Durchsatz (Requests/s)
Misst die Anzahl erfolgreicher Anfragen pro Sekunde unter definierter Last.
- 95. Perzentil Latenz
Zeigt, wie lange die meisten Anfragen maximal warten müssen; wichtig für SLAs.
- Fehlerrate
Anteil fehlerhafter oder abgewiesener Anfragen während Tests.
Beispiele & Implementierungen
Skalierungstest einer Zahlungs-API
Lasttests identifizierten DB-Contention; Sharding und Connection-Pooling verbesserten Durchsatz.
Resilienzübung nach Cloud-Migration
Chaos-Tests zeigten fehlende Timeouts; automatische Circuit-Breaker-Integration reduzierte Ausfallwirkung.
Performance-Regression bei Release
Kontinuierliche Performance-Tests entdeckten Regression; Hotfix und Optimierung der Cache-Strategie lösten das Problem.
Implementierungsschritte
Nicht-funktionale Anforderungen erfassen und priorisieren
Testziele, Metriken und Akzeptanzkriterien definieren
Repräsentative Lastprofile und Szenarien erstellen
Tests automatisieren und in CI/CD integrieren
Ergebnisse analysieren, Maßnahmen ableiten und Baselines aktualisieren
⚠️ Technische Schulden & Engpässe
Tech Debt
- Ungeprüfte Legacy-Komponenten ohne Leistungsprofile
- Fehlende automatisierte Tests für kritische Pfade
- Veraltete Baselines, die reale Last entfernt widerspiegeln
Bekannte Engpässe
Beispiele für Missbrauch
- Performance-Engineers ignorieren funktionale Änderungen und analysieren nur Rohdaten
- Tests werden nur in kleinen, nicht-repräsentativen Umgebungen ausgeführt
- Ergebnisse werden veröffentlicht ohne konkrete Maßnahmen oder Verantwortlichkeiten
Typische Fallen
- Falsche Annahmen über Nutzerverhalten bei Lastmodellierung
- Unzureichende Isolation von Test- und Produktionsumgebungen
- Mangelnde Berücksichtigung externer Integrationen und Drittanbieter
Erforderliche Fähigkeiten
Drivers (Architectural Drivers)
Constraints
- • Verfügbarkeit realistischer Testdaten
- • Begrenzte Testinfrastruktur und Kosten
- • Zeitliche Begrenzungen im Release-Zyklus