Zum Inhalt springen
SDETRole
SDETRole

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:

  1. Jeder gültige Übergang mindestens einmal (0-Switch-Abdeckung): falsch, falsch, falsch führt zu Gesperrt; falsch, richtig führt zu Angemeldet.
  2. Ungültige oder unerwartete Ereignisse: Das richtige Passwort muss bei einem gesperrten Konto weiterhin abgewiesen werden. Genau hier verstecken sich Sicherheitsbugs.
  3. 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.

Tippen Sie, um SDETRole zu durchsuchen.

Volltextsuche mit Pagefind · läuft in Ihrem Browser Suchseite öffnen →