Glossar · Testdesign
Zustandsübergangstest
Englisch: State transition testing
Auch genannt: zustandsbasierter Test, Zustandsübergangstesten, zustandsbasiertes Testen
Definition
Ein Testentwurfsverfahren, das ein System als Zustände und die Ereignisse modelliert, die zwischen ihnen wechseln, und dann gültige und ungültige Übergänge testet.
Der Zustandsübergangstest kommt zum Einsatz, wenn die Reaktion des Systems davon abhängt, was vorher passiert ist, und nicht nur von der aktuellen Eingabe. Sie modellieren das System als Menge von Zuständen, als Ereignisse, die Übergänge zwischen ihnen auslösen, sowie als Aktionen oder Bedingungen (Guards) an jedem Übergang. Die Tests decken dann die gültigen Übergänge ab und prüfen, genauso wichtig, dass ungültige Übergänge abgewiesen werden.
Beispiel: Kontosperre beim Login
Ein Konto wird nach drei aufeinanderfolgenden falschen Passwörtern gesperrt, und eine erfolgreiche Anmeldung setzt den Zähler zurück.
Zustände: Active (0 failures), 1 failure, 2 failures, Locked, Logged in.
| Aktueller Zustand | Ereignis | Nächster Zustand |
|---|---|---|
| Aktiv (0) | Falsches Passwort | 1 Fehlversuch |
| Aktiv (0) | Richtiges Passwort | Angemeldet |
| 1 Fehlversuch | Falsches Passwort | 2 Fehlversuche |
| 1 Fehlversuch | Richtiges Passwort | Angemeldet (Zähler zurückgesetzt) |
| 2 Fehlversuche | Falsches Passwort | Gesperrt |
| 2 Fehlversuche | Richtiges Passwort | Angemeldet (Zähler zurückgesetzt) |
| Gesperrt | Richtiges Passwort | Gesperrt (abgewiesen) |
| Gesperrt | Entsperrung durch Admin | Aktiv (0) |
Daraus abgeleitete Tests:
- Jeder gültige Übergang mindestens einmal (0-Switch-Abdeckung): falsch, falsch, falsch führt zu Gesperrt; falsch, richtig führt zu Angemeldet.
- Ungültige oder unerwartete Ereignisse: Das richtige Passwort muss bei einem gesperrten Konto weiterhin abgewiesen werden. Genau hier verstecken sich Sicherheitsbugs.
- Sequenzen: falsch, richtig, dann Abmelden und falsch, falsch. Wird der Zähler wirklich zurückgesetzt, oder sperrt sich das Konto beim zweiten Fehlversuch? Das Testen von Paaren aufeinanderfolgender Übergänge heißt 1-Switch-Abdeckung.
Wo es sich anwenden lässt
Überall, wo es einen Lebenszyklus gibt: Bestellungen (angelegt, bezahlt, versendet, zugestellt, storniert, erstattet), Bug-Workflows, Abonnements, Dokumentenfreigaben, Zahlungsstatus, Mediaplayer und UI-Assistenten (Wizards). Fragen, die sich für jeden Zustand lohnen: Welche Ereignisse sind hier erlaubt, was passiert mit nicht erlaubten, und kann der Nutzer diesen Zustand über einen unerwarteten Weg erreichen, etwa über den Zurück-Button des Browsers oder einen direkten API-Aufruf?
Häufige Fehler
- Nur den Happy Path testen. Angelegt, bezahlt, versendet ist ein Pfad. Lässt sich eine Bestellung nach dem Versand stornieren? Zweimal erstatten?
- Nur über die UI testen. Die UI blendet den Stornieren-Button vielleicht aus, die API akzeptiert die Anfrage aber womöglich trotzdem. Testen Sie Übergänge auch auf API-Ebene.
- Die Zustandstabelle weglassen. Das Diagramm zeigt, was passieren soll; die vollständige Tabelle aller Zustände gegen alle Ereignisse zeigt die Lücken, in denen das Verhalten undefiniert ist.