In diesem Artikel beschreibe ich, wie der zustandsbasierte Test als Methodik für die Herleitung von Testfällen für ein Statuskonzept, einen Workflow oder einen Zustandsautomaten verwendet werden kann. Es wird eine Zustandsanalyse durchgeführt und dargestellt, wie der Standardüberdeckungsgrad ermittelt werden kann. Danach leite ich logische und konkrete Testfälle her.
sponsored by smartwebapps.de
1 Der zustandsbasierte Test
1.1 Was ist der zustandsbasierte Test?
Beim zustandsbasierten Test werden die Testfälle unter Zugrundelegung der Zustände und Zustandsübergänge des Testobjekts hergeleitet. Der Zustand wird auch oft als Status bezeichnet. Im weiteren Verlauf werde ich der Einfachheit halber nur vom Zustand sprechen.
1.2 Dazu wird zuerst eine Zustandsanalyse durchgeführt.
Das Ergebnis von dieser (siehe „Einfaches Beispiel zum zustandsbasierten Test„) ist eine Abbildung, aus der folgende Fragen beantwortet werden können:
- Welche Zustände/Status kann das Testobjekt annehmen?
- Welche Zustandsübergänge sind möglich?
- Welche auslösenden Ereignisse bewirken unter welchen Bedingungen die Zustandsübergänge? (z.B. entsprechende Schaltfläche in der Benutzeroberfläche wird gedrückt)
- Welche Wirkungen resultieren aus den Zustandsübergängen? (z.B. Maske öffnet sich, Betrag wird angezeigt, Bescheid wird gedruckt etc.)
1.3 Wie wird ermittelt, wie viel Prozent ich geprüft habe?
Die Vollständigkeit der Prüfung wird als Überdeckungsgrad bezeichnet. Dabei werden alle möglichen Zustände und Zustandsübergänge berücksichtigt. Eine gute Faustzahl ergibt sich aus folgender Rechnung:
Angestrebtes Ziel sollte die Überprüfung aller Zustandsübergänge sein.
1.4 Standardüberdeckungsgrad
Der Standardüberdeckungsgrad (Minimalforderung) ist die Abdeckung aller Zustände durch Testfälle.
1.5 Welche Fehler deckt der zustandsbasierte Test auf?
- Fehlender oder inkorrekter Zustandsübergang (ein eintretendes Ereignis wie z.B. eine Aktion des Benutzers führt zu einem falschen Zustand)
- Fehlendes oder inkorrektes Ereignis (z.B. trotz Aktion des Benutzers ändert sich der Zustand nicht).
- Fehlende oder inkorrekte Wirkung (z.B. trotz Zustandswechsel wird keine Maske aktiv bzw. beim Zustandswechsel wird ein leerer Bescheid gedruckt, obwohl dieser viel später im Prozess kommt).
- Fehlende, unerwartete oder korrupte Zustände (das Verhalten des Systems wird unkontrollierbar).
- Schleichpfade (z.B. wechselt der Status, egal welche Schaltfläche man betätigt, obwohl dies eigentlich nur bei einer ganz bestimmten zulässig ist)
- Falltüren (die Software akzeptiert als Ereignis, wenn ich 2mal den Buchstaben A auf der Tastatur betätige und wechselt den Status des Vorgangs)
1.6 Einfaches Beispiel zum zustandsbasierten Test
Hier ist das Zustandsübergangsdiagramm, dass aus einer Zustandsanalyse eines Parkscheinautomatensystems resultiert:
1.6.1 Entworfene logische Testfälle
1. Variante: beim ersten Einwurf bezahlt
Aktion | Zustand |
Automat ist bereit à Karte eingeschoben | wartet auf Geld |
Geld wird eingeworfen + Betrag reicht aus | bereit |
2. Variante: Bezahlung nach mehrmaligen Einwurf
Aktion | Zustand |
Automat ist bereit à Karte eingeschoben | wartet auf Geld |
Geld wird eingeworfen + Betrag reicht nicht aus | wartet auf Geld |
Geld wird eingeworfen + Betrag reicht aus | bereit |
1.6.2 Abgeleitete konkrete Testfälle
Nummer | Name | Vorbedingung | Schrittname | Aktion des Benutzers | erwartetes Ergebnis |
1 | beim ersten Einwurf bezahlt | Automat ist im Zustand „bereit“keine Karte eingeschoben | Schritt1 | Der Benutzer schiebt die Parkkarte in den Automat. | Der Automat zeigt den zu zahlenden Betrag an und ist im Zustand „wartet auf Geld“ |
Schritt2 | Der Benutzer wirft 2 € ein | Der Automat wirft die Karte aus ,öffnet die Schranke und geht in den Zustand „bereit“. | |||
2 | Bezahlung nach mehrmaligen Einwurf | Automat ist im Zustand „bereit“keine Karte eingeschoben | Schritt1 | Der Benutzer schiebt die Parkkarte in den Automat. | Der Automat zeigt den zu zahlenden Betrag an und ist im Zustand „wartet auf Geld“ |
Schritt2 | Der Benutzer wirft 1 € ein | Der Automat zeigt den Restbetrag an und befindet sich im Zustand „wartet auf Geld“. | |||
Schritt3 | Der Benutzer wirft 1 € ein | Der Automat wirft die Karte aus ,öffnet die Schranke und geht in den Zustand „bereit“. |
1.7 0-switch coverage
Nützliche Informationen zu 0-switch coverage findet man hier. Von 0-switch coverage wird dann gesprochen, wenn eine Menge von Testfällen alle Sequenzen von Zustandsübergängen testen, bei denen es von einem Startzustand direkt in einen Zielzustand geht. Die für 0-switch coverage benötigte Anzahl der Testfälle wird ermittelt, wenn man in jedem Status des Zustandsübergangsdiagramms überlegt, in welchen weiteren Status es gehen könnte. Es handelt sich also um ein Maß der Testabdeckung.
Startzustand –> Zielzustand
Beispiele aus der Menge der für 0-switch coverage benötigten Testfälle zu obigen Zustandsübergangsdiagramms:
Startzustand | Zielzustand |
bereit | warten auf Geld |
warten auf Geld | warten auf Geld |
warten auf Geld | bereit |
Weitere Beispiele zu 0-switch coverage für die ISTQB Zertifizierung gibt es auf der Lernplattform.
1.8 1-switch coverage
Von 1-switch coverage wird dann gesprochen, wenn eine Menge von Testfällen alle Sequenzen von Zustandsübergängen testen, bei denen es von einem Startzustand über einen Zwischenzustand in einen Zielzustand geht. Die für 1-switch coverage benötigte Anzahl der Testfälle wird ermittelt, wenn man in jedem Status des Zustandsübergangsdiagramms überlegt, wohin der Zustand mit 2 Schritten wechseln kann. Es handelt sich also um ein Maß der Testabdeckung.
Startzustand –> Zwischenzustand –> Zielzustand
Beispiele aus der Menge der für 1-switch coverage benötigten Testfälle zu obigen Zustandsübergangsdiagramms:
Startzustand | Zwischenzustand | Zielzustand |
bereit | warten auf Geld | warten auf Geld |
bereit | warten auf Geld | bereit |
warten auf Geld | warten auf Geld | warten auf Geld |
warten auf Geld | warten auf Geld | bereit |
warten auf Geld | bereit | warten auf Geld |
Eine Beispielaufgabe für 1-switch coverage für certified tester habe ich auch wieder verlinkt.
Bei Fragen und Anregungen könnt ihr mir einfach einen Kommentar hinterlassen! Vielen Dank für das Lesen!
Hi Stefan,
im Kommentar steht:
„(ist in Pfeilrichtigung; S4 nach S1 ginge nicht)“
Gemeint ist:
„(ist in Pfeilrichtigung; S1 nach S4 ginge nicht)“
Schöne Grüße
Uli
Hallo erstmals.
Erstamls vielen vielen Dank für deine Anwort und für die Mühe.
Eine letzte Frage hätte ich noch bezüglich Frage 2 zum o Switch-Coverage.
Die richtige Antwort war ja von S3 nach S4.
Welche andere Möglichkeiten hätte man?
Von S1 nach S2 hatte ich schon angegeben.
Ginge auch > von S4 nach S1?
Angenommen wir hätten die Zustandsübergangstabelle von der Frage 1.
Welche Möglichkeiten hätte man hier bezüglich 0-Switch-Coverage?
Wären > von S1 nach S2
oder > von S2 nach S3
oder > von S3 nach S4
oder > von S4 nach S1
auch gültig?
Auf eine baldige Antwort würde ich mich sehr freuen und wäre dir sehr dankbar.
MfG
Jo
Hi Jo,
1. Frage: Ginge auch > von S4 nach S1?
ja, siehe http://blog.milsystems.de/2012/09/wie-viele-gueltigen-1-switch-coverage-gibt-es/ (ist in Pfeilrichtigung; S4 nach S1 ginge auch)
2. Frage: Wären > von S1 nach S2
oder > von S2 nach S3
oder > von S3 nach S4
oder > von S4 nach S1
auch gültig?
Ja, siehe http://blog.milsystems.de/2012/09/wie-viele-gueltigen-1-switch-coverage-gibt-es/ (Zustandsübergangsdiagramm). Im Prinzip zählst du alle Pfeile. Dies sind hier 5, daher fehlt noch als 0-switch-coverage von S2 nach S1.
Gruß,
Stefan
Servus.
Ich habe da eine Frage zum 1-switch coverage.
Irgendwie kann ich das nicht nachvollziehen.
Ich habe mir die Musterfragen angeschaut und zwei Fragen haben mir Kopfzerbrechen bereitet.
Die Frage war: Gegeben ist eine Zustandübergangstabelle mit 4 Zuständen (S1 bis S4) und 5
Zustandsübergängen (A bis E):
A B C D F
S1 S2
S2 S1
S2 S3
S3 S4
S4 S1
Wie viele gültige 1-switch Coverage gibt es laut Zustandübergangstabelle?
Die Antwort heisst > 6
Aber irgendwie komme ich da nicht drauf wieso.
Bei der zweiten Frage ging es um 0-switch coverage. Die Zustandübergangstabelle war wie folgt:
A B C D E
S1 S2
S2 S1
S2 S1
S3 S4
S4 S1
Welches ist ein gültiger 0-switch coverage?
Die Lösung ist > Von S3 nach S4
Nun die Frage ist, wäre von S1 nach S2 auch richtig in diese Tabelle, falls diese Option auch bestünde auch richtig?
Ich hoffe ich habe das Prinzip 0-switch coverage auch richtig verstanden.
Ich wäre dir sehr dankbar und würde mich sehr freuen, wenn du mir erklären könntest wie man darauf kommt.
MfG
Jo
Hallo,
1. Frage: Wie viele gültige 1-switch Coverage gibt es laut Zustandübergangstabelle?
–> hier findest du die Lösung: http://blog.milsystems.de/2012/09/wie-viele-gueltigen-1-switch-coverage-gibt-es/
2. Frage: Nun die Frage ist, wäre von S1 nach S2 auch richtig in diese Tabelle, falls diese Option auch bestünde auch richtig?
Ja, du hast das Prinzip verstanden.
Gruß,
Stefan