Leistung und Last
Kurz gesagt: Eine Leistungsanforderung sagt, welche Aktion, wie schnell, für welchen Anteil der Anfragen und unter welcher Last: „95 % der Warenkorb-Öffnungen dauern unter 300 ms bei 200 Kunden gleichzeitig“. Ein Lasttest prüft, was versprochen wurde, Stress sucht, wo es bricht, und der Dauertest, ob es stundenlang hält.
Problem
Es war schnell, als ich allein einkaufte
Die Anforderung lautet „Der Shop muss schnell sein“. Der Tester öffnet den Warenkorb: 0,8 Sekunden. Schnell. Die Anforderung ist erfüllt.
Am Black Friday betreten 600 Leute gleichzeitig den Shop. Der Warenkorb öffnet sich in 14 Sekunden, Zahlungen laufen in Timeouts, und Kunden füllen ihre Warenkörbe immer wieder neu, was alles noch langsamer macht. Der Shop verliert seinen besten Tag des Jahres.
Der Test des Testers war richtig. Die Anforderung sagte nichts, was hätte fehlschlagen können.
Die Idee
Die fünf Teile der Anforderung
Eine Leistungsanforderung sagt fünf Dinge:
- Welche Aktion: den Warenkorb öffnen, Suche, Zahlung. Nicht „der Shop“.
- Welches Maß: Antwortzeit, Bestellungen pro Minute, Fehlerrate.
- Welche Grenze: unter 300 ms, mindestens 50 Bestellungen pro Minute, unter 1 % Fehler.
- Für welchen Anteil: 95 % der Anfragen, nicht der Durchschnitt.
- Unter welcher Last und welchen Bedingungen: 200 Kunden gleichzeitig, in einer Umgebung wie der echten, mit allen 12.000 Produkten.
Zusammen: „95 % der Warenkorb-Öffnungen dauern unter 300 ms bei 200 Kunden gleichzeitig“. Dieser Satz kann fehlschlagen. „Es muss schnell sein“ kann es nicht.
Genauer, für Neugierige
In der ISO/IEC 25010:2023 ist das das Merkmal Leistungseffizienz (performance efficiency) mit drei Teilmerkmalen: Zeitverhalten, Ressourcennutzung und Kapazität. Wie eine solche Anforderung als Architekturszenario geschrieben wird und warum sich Verfügbarkeitsprozente entlang einer Kette von Diensten multiplizieren, steht in der Lektion Nichtfunktionale Anforderungen, die sich messen lassen des Kurses Softwaretechnik.
Die Idee
Warum nicht der Durchschnitt
Zehn Kunden öffnen den Warenkorb. Neun warten bis zu 0,6 Sekunden, einer wartet 9,8. Der Durchschnitt ist 1,3 Sekunden und sieht gut aus. Aber ein Kunde hat fast 10 Sekunden gewartet, und der Durchschnitt versteckt das.
Ein Perzentil sagt, wie viele Anfragen unter der Grenze liegen. p95 = 300 ms heißt: 95 % der Anfragen liegen unter 300 ms, und 5 % dürfen langsamer sein. Die Anforderung sagt genau, wie viele langsame Anfragen akzeptabel sind, und lässt nicht zu, dass ein paar sehr schnelle die langsamen verstecken.
Bei der Zahlung, wo jeder langsame Kunde eine verlorene Bestellung ist, verlangen Teams oft auch p99.
Probier es aus
Rechne es aus
Die Idee
Drei Fragen, drei Arten von Tests
Leistungstests sind nichtfunktionales Testen, meist auf der Systemstufe. Sie beantworten verschiedene Fragen:
- Lasttest: Bewältigt das System, was erwartet wird? 200 Kunden, so viele wie zur Spitze. Er prüft die Anforderung.
- Stresstest: Wo bricht es, und wie? Die Kunden wachsen über das Versprochene hinaus, bis etwas stehen bleibt. Dann: Erholt sich der Shop von selbst, gehen Bestellungen verloren?
- Dauertest (Soak): Hält es? 48 Stunden bei der üblichen Last. Er fängt, was sich langsam aufbaut: Speicher, offene Verbindungen.
Es gibt auch Spitzen (Spike-Test): von 80 auf 600 Kunden innerhalb einer Minute, wenn die E-Mail zur Aktion rausgeht.
Für all das gibt es Werkzeuge, die Tausende falsche Kunden laufen lassen. Wir bringen sie hier nicht bei: Ein Werkzeug ist nutzlos, wenn die Anforderung nicht sagt, was zu messen ist und wann es fehlschlagen soll.
Genauer, für Neugierige
Skalierbarkeit und Kapazität werden mit ähnlichen Tests geprüft: wie viele Kunden das System aufnimmt und wie das wächst, wenn ein Server dazukommt. In der ISO/IEC 25010:2023 gehört die Skalierbarkeit zur Flexibilität und die Kapazität zur Leistungseffizienz.
Probier es aus
Was für ein Test ist das?
Die Idee
Wer die Zahlen liefert
Die Zahlen gehören nicht den Entwicklern („der Server hält 150 aus“) und nicht dem Tester. Sie sind ein geschäftlicher Bedarf: wie viele Kunden zur letzten Aktion kamen, wie viele mit der neuen Werbung kommen werden, wie viele Sekunden Wartezeit eine verlorene Bestellung bedeuten.
Der Analyst fragt danach so, wie er nach Regeln fragt: mit einem Beispiel. „Am letzten Black Friday waren zur Spitze 420 Leute in 10 Minuten da. Dieses Jahr erwarten wir 50 % mehr. Wie viel Wartezeit bei der Zahlung ist akzeptabel?“
Dann wird die Anforderung wie jede andere abgenommen: ein Test unter den vereinbarten Bedingungen, und das Ergebnis wird mit der vereinbarten Grenze verglichen. Wenn er besteht und Kunden sich trotzdem beschweren, ist die Anforderung falsch, nicht das Programm. Das ist Validierung des Nichtfunktionalen.
Genauer, für Neugierige
Der CT-AcT v1.0, Kapitel 4, behandelt die Leistung als Teil des Abnahmetests: Die Maße werden vorher mit dem Geschäft vereinbart, und die Testumgebung muss repräsentativ sein. Leistungstests sind teuer (Umgebung, Daten, Zeit), also sind sie ein guter Kandidat für die Auswahl nach Risiko: Zahlung und Warenkorb zuerst, die Seite „Über uns“ später.
Übung
Eine Anforderung für die Aktion
1. Black Friday. Prüfe die Anforderung des Marketings.
Markiere die Wörter, die die Anforderung unprüfbar oder mehrdeutig machen, und wähle die Art jedes Problems.
Klicke auf die Wörter, die ein Problem sind; noch einmal, um die Markierung zu entfernen. Mit den Pfeiltasten geht es von Wort zu Wort.
Die Probleme im Text
- „schnell“ nicht prüfbar: Was soll schnell sein, und wie schnell? Jede Aktion, die gemessen wird, bekommt ihr eigenes Limit: den Warenkorb öffnen, Suche, Zahlung.
- „durchschnittliche Zeit“ mehrdeutig: Der Durchschnitt versteckt die langsamen Kunden: 90 schnelle Öffnungen und 10 mit 15 Sekunden ergeben einen schönen Durchschnitt. Die Anforderung wird mit einem Perzentil geschrieben: 95 % der Öffnungen dauern unter 2 Sekunden.
- „viele Benutzer“ nicht prüfbar: Wie viele? Das Maß ist eine Zahl aus der erwarteten Last: 200 Kunden gleichzeitig, 50 Bestellungen pro Minute zur Spitze.
- „darf nicht langsam sein“ nicht prüfbar: Eine Verneinung ohne Grenze: Es gibt keinen Wert, bei dem der Test fehlschlägt. Zum Beispiel: 95 % der Zahlungen sind in unter 4 Sekunden abgeschlossen, die Zeit der Bank nicht mitgerechnet.
Der Satz mit der Durchschnittszeit sieht messbar aus, weil er eine Zahl hat. Aber der Durchschnitt versteckt die langsamen Kunden. Mit einem Perzentil und einer Last („95 % der Öffnungen unter 2 Sekunden bei 200 Kunden“) wird daraus eine gute Anforderung. Die anderen drei haben weder eine Grenze noch eine Last.
Test
Teste dich
Verwandte Lektionen
Abschnitt „Verwandte Lektionen“- Baut auf: Akzeptanzkriterien · Teststufen · Testarten · Der Plan und risikobasiertes Testen
- Aufgaben zum Thema: Nichtfunktional