---
title: "Software-Tests für Zustandsautomaten"
date: "2011-04-05"
categories: 
  - "software"
tags: 
  - "agile-development"
  - "software-modeling"
  - "software-tools"
  - "uml"
  - "uml-tool"
  - "umodel"
  - "v2011r2"
description: Erfahren Sie, wie Sie die Softwarequalität durch frühzeitige Tests von UML-Zustandsautomaten mit Altova UModel verbessern können. Entdecken Sie praktische Testmethoden und Beispiele.
---
Status: #blog

Tags:  #agile-development #software-modeling #software-tools #uml #uml-tool #umodel #v2011r2

Categories: [development](/blog/de/category/development.md) [uml](/blog/de/category/uml.md)
# Software-Tests für Zustandsautomaten

Viele verschiedene Arten von Softwaretests haben an Bedeutung gewonnen, da Entwickler nach Möglichkeiten suchen, die Qualität zu verbessern und Projektfristen einzuhalten – Code-Reviews, Unit-Tests, Regressionstests, Beta-Tests, testgetriebene Entwicklung und mehr. Unabhängig von den Zielen eines Projekts oder der verwendeten Programmiersprache gilt es als allgemein anerkannt, dass ein Fehler umso einfacher, kostengünstiger und schneller behoben werden kann, je früher er entdeckt wird.

Die automatische [Code-Generierung](https://www.altova.com/de/umodel/uml-code-generation.html) aus [Zustandsdiagrammen gemäß UML](https://www.altova.com/de/umodel/state-diagrams.html), eine neue Funktion, die in [Altova UModel 2011](https://www.altova.com/de/umodel.html), Version 2 eingeführt wurde, kann verwendet werden, um die konzeptionelle Logik sehr frühzeitig im Projektverlauf zu überprüfen. 

**Praxisnahes Design in einem Zustandsautomaten-Diagramm** 

Ein Beispiel, das mit UModel mitgeliefert wird, zeigt ein einfaches und realistisches Zustandsautomaten-Diagramm mit einer kleinen Testanwendung, mit der Sie selbst ausprobieren können, wie einfach es sein kann, die Logik eines Designs zu testen. Das Zustandsautomaten-Diagramm im Projekt "AirCondition.ump" im Ordner "UModel 2011 Beispiele" beschreibt die Funktionsweise eines typischen Heiz- und Klimaanlagensystems. 

[![Zustandsdiagramm in Altova UModel ](https://lh5.ggpht.com/_REdrfeVqYdU/TZsY4ceg5yI/AAAAAAAAAXU/EvHaGDO0_sw/Snap1_state_diagram_LR5.png?imgmax=800 "State machine diagram in Altova UModel ")](https://www.altova.com/umodel.html) 

Das System umfasst einen Ein-/Ausschalter, der sich auf der linken Seite befindet und den Übergang vom ausgeschalteten Zustand anzeigt, eine Modusauswahlfunktion, mit der Heizung oder Kühlung ausgewählt werden kann, eine Drehzahlregelung für den Lüfter sowie einen Standby-Knopf, der das System in den Standby-Modus versetzt, der auf der rechten Seite dargestellt wird. Der Beispielprojektordner enthält den gesamten Code, der für das Diagramm von UModel in Java, C# und Visual Basic generiert wurde. Um die Java-Version auszuprobieren, müssen wir lediglich den Befehl **javac STMTester.java** verwenden, um den Code zu kompilieren, und **java STMTester**, um ihn auszuführen. Die Testanwendung zeigt ein simuliertes Bedienfeld mit Informationsfenstern über die Heizungs- und Klimaanlage an. Die Bedienelemente befinden sich oben, der aktuelle Zustand wird im ersten Fenster beschrieben, und die vom System generierten Ausgabemeldungen werden im zweiten Fenster angezeigt.

[![Steuerungspanel zum Testen von Zustandsmaschinen-Code, der von Altova UModel generiert wurde](https://lh4.ggpht.com/_REdrfeVqYdU/TZsY4k3SX7I/AAAAAAAAAXY/BbrYrNG5nTQ/clip_image0043.jpg?imgmax=800 "Test control panel for state machine code generated by Altova UModel")](https://www.altova.com/umodel/state-diagrams.html) 

Wie oben gezeigt, initialisiert das System im ausgeschalteten Zustand, der Modus ist auf "Heizung" eingestellt und der Lüfter ist deaktiviert. Bevor Sie das System in Betrieb nehmen, können Sie die Größe des Bedienfelds und des Zustandsautomaten-Diagramms anpassen, um die Aktionen der Testanwendung im Diagramm selbst zu verfolgen, wie im unten gezeigten Bild in verkleinerter Darstellung gezeigt. 

[![Diagramm des Zustandsautomaten (State Machine) und Steuerungspanel für Tests des generierten Codes](https://lh3.ggpht.com/_REdrfeVqYdU/TZsY5AeHLzI/AAAAAAAAAXc/oNqgojYQqZw/Snap3_combinedimage_LR5.png?imgmax=800 "UModel state machine diagram and test control panel for generated code")](https://www.altova.com/umodel.html) 

**Die Steuerung des Zustandsautomaten** 

Wenn wir auf die Einschalttaste klicken, wird das Fenster mit dem aktuellen Status aktualisiert, und eine detaillierte Beschreibung der durchgeführten Vorgänge wird als Ereignis 1 in den Debug-Ausgabemeldungen angezeigt. 

[![Steuerungspanel zum Testen von Zustandsmaschinen-Code, der von Altova UModel generiert wurde](https://lh5.ggpht.com/_REdrfeVqYdU/TZsY5d6YGOI/AAAAAAAAAXg/GPAgI00JHWo/clip_image0084.jpg?imgmax=800 "Test control panel for state machine code generated by Altova UModel")](https://www.altova.com/umodel.html) 

Wenn es ein warmer Tag ist, können wir den Modus auf Kühlung umstellen und die Lüftergeschwindigkeit erhöhen. Dies können wir tun, indem wir auf die Schaltflächen "Modus auswählen" und "Geschwindigkeit auswählen" klicken. Das Fenster "Aktueller Zustand" wird bei jedem Klick aktualisiert, und die Ereignisse 2 und 3 werden den Ausgabemeldungen hinzugefügt. 

[![Steuerungspanel zum Testen von Zustandsmaschinen-Code, der von Altova UModel generiert wurde](https://lh6.ggpht.com/_REdrfeVqYdU/TZsY6EeKdOI/AAAAAAAAAXk/hIxBihKj4-Y/clip_image0103.jpg?imgmax=800 "Test control panel for state machine code generated by Altova UModel")](https://www.altova.com/umodel.html) 

Jetzt können wir sehen, wie die Testanwendung es uns ermöglicht, die Logik unseres Zustandsautomaten vollständig zu überprüfen, indem wir jede mögliche Abfolge von Knopfdrucken auswählen, um zu sehen, ob sie die erwarteten Ergebnisse liefern. Wenn wir beispielsweise das Gerät in den Standby-Modus versetzen (Ereignis 4 unten) und dann die Taste "Geschwindigkeit wählen" drücken, sehen wir in den Ausgabemeldungen für Ereignis 5, dass kein Zustandswechsel im Unterzustand namens "RegionSpeed" stattfindet. Vergleichen Sie Ereignis 5 mit Ereignis 3 im Fenster für die Ausgabemeldungen, wie unten dargestellt. 

[![Steuerungspanel zum Testen von Zustandsmaschinen-Code, der von Altova UModel generiert wurde](https://lh5.ggpht.com/_REdrfeVqYdU/TZsY6T-8lBI/AAAAAAAAAXo/VDovIAt3cDs/clip_image0123.jpg?imgmax=800 "Test control panel for state machine code generated by Altova UModel")](https://www.altova.com/umodel.html) 

Da das System sich jetzt im Standby-Modus befindet und wir keine Heizung oder Kühlung benötigen, sparen wir Energie, indem wir den Power-Knopf drücken, um es auszuschalten. 

[![Steuerungspanel zum Testen von Zustandsmaschinen-Code, der von Altova UModel generiert wurde](https://lh4.ggpht.com/_REdrfeVqYdU/TZsY66RZsKI/AAAAAAAAAXs/v6FK67nFMVI/clip_image0143.jpg?imgmax=800 "Test control panel for state machine code generated by Altova UModel")](https://www.altova.com/umodel.html) 

Warten Sie einen Moment – es scheint, als wäre nichts passiert. Es hat keine Zustandsänderung in Ereignis 6 stattgefunden, und der aktuelle Zustand im oberen Fenster ist immer noch "Bereitstand"! Wenn wir uns das Zustandsdiagramm noch einmal ansehen, können wir sehen, dass der einzige Weg, den "Bereitstand"-Modus zu verlassen, darin besteht, den "Bereitstand"-Knopf erneut zu drücken. Ist das wirklich das Verhalten, das ein durchschnittlicher Benutzer erwarten würde, nämlich dass der Power-Knopf das System nicht aus dem "Bereitstand"-Modus ausschaltet? 

[![Ausschnitt eines Zustandsautomaten-Diagramms, erstellt mit Altova UModel](https://lh6.ggpht.com/_REdrfeVqYdU/TZsY7RcFpgI/AAAAAAAAAXw/1oWwcxTveBE/clip_image0163.jpg?imgmax=800 "Portion of a state machine diagram created with Altova UModel")](https://www.altova.com/umodel.html) 

Stellen Sie sich vor, wie teuer es wäre, dieses Problem zu beheben, wenn es erst viel später im Produktentwicklungsprozess entdeckt würde, nämlich während der Tests des Prototyps durch eine Aufsichtsbehörde! Hier ist eine Herausforderung, die wir unseren Lesern stellen: Wie würden Sie einen direkteren Weg vom Standby-Zustand in den Aus-Zustand gestalten? 

**Das Testen eigener Zustandsautomaten** 

Sie können die Beispielprojekte zur Codeerzeugung für Zustandsautomaten von UModel als Vorlagen verwenden, um Testanwendungen für Ihre eigenen Designs zu erstellen. Nutzen Sie dabei die UModel-Funktion, die automatisch Operationen in einer Klasse erstellt, sobald Sie Operationsnamen zu Übergängen in Ihrem Zustandsautomaten hinzufügen. 

[![Altova UModel-Symbolleiste für die automatische Erstellung von Operationen in Klassen](https://lh6.ggpht.com/_REdrfeVqYdU/TZsY7mEsVhI/AAAAAAAAAX0/FDDlekHpIgk/clip_image0183.jpg?imgmax=800 "Altova UModel toolbar button for automatic creation of operations in classes")](https://www.altova.com/umodel.html) 

Darüber hinaus enthält das Hilfesystem von UModel detaillierte Informationen zur Codeerzeugung aus Zustandsdiagrammen und verwendet außerdem die Projektdatei "AirCondition.ump" als Beispiel. 

**Finden Sie selbst heraus, wie Sie die Projektentwicklung verbessern können, indem Sie die Logik Ihrer eigenen Zustandsdiagramme mit Altova UModel testen –** [**laden Sie noch heute eine kostenlose 30-Tage-Testversion herunter**](https://www.altova.com/de/download/umodel/uml_tool_enterprise.html)**!**
