Zustandsbezogener Test
# Zustandsbezogener Test

Der zustandsbezogene Test (auch zustandsbasierter Test, Testen von Zustandsautomaten) bezeichnet eine Testmethode, bei der Tests aus einer in Form eines Zustandsautomaten vorliegenden Spezifikation abgeleitet werden. Es handelt sich hierbei um ein dynamisches, funktionales Testverfahren aus der Gruppe der Black-Box-Tests.

## Anwendung

Der zustandsbezogene Test kommt zur Anwendung, wenn neben den Eingabewerten auch der bisherige Ablauf eines Systems Einfluss auf das Systemverhalten hat. Das Testobjekt kann ein komplettes System mit unterschiedlichen Zuständen aber auch eine Klasse mit verschiedenen Zuständen in einem objektorientierten System sein.

## Zustandsdiagramm

Das Testobjekt lässt sich in Form eines Zustandsdiagramms modellieren. Von einem Startzustand ausgehend, kann das Testobjekt verschiedene Zustände einnehmen. Auslöser für Zustandsänderungen können Ereignisse oder erfüllte Bedingungen sein.

## Testkriterien

Es existiert eine Reihe von Teststrategien, um Zustandsautomaten zu testen. Im Allgemeinen wird die Überdeckung aller Zustände sowie aller Zustandsübergänge angestrebt. Das bedeutet, dass Testfälle generiert werden, die mindestens das einmalige Durchlaufen aller Zustände und Zustandsübergänge zum Ziel haben. Auch das Testen aller Ereignisse wird als sinnvoll betrachtet. Analog dem Zweigüberdeckungstest stellt die Überdeckung aller Zustandsübergänge jedoch keinen vollständigen Test dar. Zudem gibt es noch keine gesicherte Aussage darüber, wann ein Zustandsautomat ausreichend getestet ist.

## Vorgehensweise

Zur Bestimmung der Testfälle wird aus dem zyklischen Zustandsdiagramm ein Übergangsbaum/Transistionenbaum erstellt. Folgende Vorgehensweise ist möglich:

* der Initialzustand bildet die Wurzel des Baumes
* für jeden möglichen Übergang erhält der Übergangsbaum eine Verzweigung zu einem neuen Knoten, welcher den Folgezustand repräsentiert
* dieser Schritt wird solange wiederholt, bis
   * ein bereits besuchter Zustand erreicht wird (round-way trip), bzw.
   * ein Zustand keine abgehenden Übergänge besitzt.

In diesem Baum lassen sich nun Pfade entsprechend der Kriterien bestimmen. Jeder Pfad entspricht dabei einem Testfall.

## Werkzeuge

* Reactis V2006
* Simulink Design Verifier 1
* Time Partition Testing (TPT)
