Zum Inhalt
wannacode

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:

  1. Welche Aktion: den Warenkorb öffnen, Suche, Zahlung. Nicht „der Shop“.
  2. Welches Maß: Antwortzeit, Bestellungen pro Minute, Fehlerrate.
  3. Welche Grenze: unter 300 ms, mindestens 50 Bestellungen pro Minute, unter 1 % Fehler.
  4. Für welchen Anteil: 95 % der Anfragen, nicht der Durchschnitt.
  5. 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

1. Zehn Öffnungen des Warenkorbs: 0,2, 0,2, 0,3, 0,3, 0,3, 0,4, 0,4, 0,5, 0,6 und 9,8 Sekunden. Der Durchschnitt ist 1,3 Sekunden. Wie viele Kunden haben länger als 1,3 Sekunden gewartet?
2. Die Anforderung lautet „95 % der Öffnungen unter 2 Sekunden“. Von 1.000 Öffnungen liegen 970 unter 2 Sekunden. Besteht sie?
3. Der Warenkorb öffnet sich in 1,1 Sekunden, wenn nur der Tester im Shop ist. Was weißt du über die Aktion?

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?

1. Der Shop läuft 2 Stunden lang mit 200 Kunden gleichzeitig, der erwarteten Spitze der Aktion, und die Antwortzeit wird gemessen.
2. Die Kunden steigen von 200 auf 2.000, bis der Shop nicht mehr antwortet. Geprüft wird auch, ob er sich von selbst erholt, wenn die Last sinkt.
3. Der Shop läuft 48 Stunden mit den üblichen 80 Kunden. In der Stunde 30 werden Anfragen immer langsamer, dann fällt der Shop aus.

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.

Test

Teste dich

1. Was ist eine gute Leistungsanforderung?
2. Woher kommt die Zahl „200 Kunden gleichzeitig“?
3. Der Lasttest besteht auf dem Laptop des Testers mit einer Datenbank von 50 Produkten. Was stimmt nicht?
4. Welches Merkmal der ISO/IEC 25010 ist die Antwortzeit?

Erstellt von Ivo Gergov im Rahmen der Kampagne von Evo Tech für zugängliche Programmierausbildung ·