---
title: "Testowanie oprogramowania dla automatów stanów"
date: "2011-04-05"
categories: 
  - "software"
tags: 
  - "agile-development"
  - "software-modeling"
  - "software-tools"
  - "uml"
  - "uml-tool"
  - "umodel"
  - "v2011r2"
description: Odkryj, jak poprawić jakość oprogramowania poprzez wczesne testowanie diagramów maszyn stanów UML za pomocą narzędzia Altova UModel. Poznaj praktyczne techniki testowania oraz przykłady.
---
Status: #blog

Tags:  #agile-development #software-modeling #software-tools #uml #uml-tool #umodel #v2011r2

Categories: [development](/blog/pl/category/development.md) [uml](/blog/pl/category/uml.md)
# Testowanie oprogramowania dla automatów stanów

Wiele rodzajów testowania oprogramowania zyskało na popularności, ponieważ programiści poszukują sposobów na poprawę jakości i dotrzymywanie terminów realizacji projektów – przegląd kodu, testy jednostkowe, testy regresyjne, testy beta, programowanie testami (test-driven development) i inne. Niezależnie od celów projektu i języka programowania używanego, powszechnie uznaje się, że im wcześniej wykryty zostanie błąd, tym łatwiej, taniej i szybciej można go naprawić. [Generowanie kodu](https://www.altova.com/pl/umodel/uml-code-generation.html) z [Diagramy maszyn stanów UML](https://www.altova.com/pl/umodel/state-diagrams.html), nowa funkcja, która została wprowadzona w [Altova UModel 2011](https://www.altova.com/pl/umodel.html) Wersja 2 może być wykorzystana do wczesnej weryfikacji logiki koncepcyjnej na etapie rozwoju projektu. 

**Projektowanie w oparciu o rzeczywiste zastosowania, przedstawione w diagramie maszyny stanów** 

Przykład dołączony do UModel zawiera prosty i realistyczny diagram maszyny stanów, wraz z małą aplikacją testową, którą można uruchomić, aby samodzielnie przekonać się, jak łatwo można przetestować logikę danego projektu. Diagram maszyny stanów w projekcie AirCondition.ump, znajdującym się w folderze z przykładami UModel 2011, opisuje działanie typowego systemu ogrzewania i klimatyzacji. 

[![Diagram stanów w programie 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) 

System zawiera przycisk zasilania, znajdujący się po lewej stronie i przełączający urządzenie z trybu wyłączonego, funkcję wyboru trybu pracy (ogrzewanie lub chłodzenie), funkcję wyboru prędkości wentylatora oraz przycisk trybu czuwania, który umieszcza system w trybie czuwania, jak pokazano po prawej stronie. Przykładowy folder projektu zawiera cały kod wygenerowany przez UModel dla diagramu, w językach Java, C# i Visual Basic. Aby przetestować wersję Java, wystarczy użyć polecenia **javac STMTester.java** do skompilowania kodu i **java STMTester** do jego uruchomienia. Aplikacja testowa wyświetla symulowany panel sterowania z oknami informacyjnymi dotyczącymi urządzenia grzewczego i klimatyzacyjnego. Przyciski sterujące znajdują się u góry, aktualny stan jest opisany w pierwszym oknie, a komunikaty wyjściowe generowane przez zmiany w systemie pojawiają się w drugim oknie.

[![Panel sterowania do testowania kodu maszyny stanów generowanego przez Altova UModel](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) 

Jak pokazano powyżej, system uruchamia się w stanie wyłączonym, tryb jest ustawiony na ogrzewanie, a wentylator jest wyłączony. Przed rozpoczęciem pracy z systemem, warto zmienić rozmiar panelu sterowania i diagramu stanów, aby śledzić działanie aplikacji testowej, jak pokazano na poniższym obrazie o zmniejszonym rozmiarze. 

[![Diagram stanów UModel oraz panel sterowania testów dla wygenerowanego kodu](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) 

**Obsługa automatu stanów** 

Po kliknięciu przycisku zasilania, okno wyświetlające aktualny stan jest aktualizowane, a szczegółowy opis wykonanych operacji jest wyświetlany jako "Zdarzenie 1" w oknie komunikatów debugowania. 

[![Panel sterowania do testowania kodu maszyny stanów generowanego przez Altova UModel](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) 

Jeśli jest upalny dzień, możemy zmienić tryb na chłodzenie i zwiększyć prędkość wentylatora. Możemy to zrobić, klikając przyciski "wybierz tryb" i "wybierz prędkość". Okienko "stan aktualny" aktualizuje się przy każdym kliknięciu, a wiadomości "zdarzenie 2" i "zdarzenie 3" są dodawane do okienka z komunikatami. 

[![Panel sterowania do testowania kodu maszyny stanów generowanego przez Altova UModel](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) 

Teraz możemy zobaczyć, jak aplikacja testująca pozwala nam w pełni przetestować logikę naszego diagramu maszyny stanów, klikając każdą możliwą sekwencję wyborów przycisków, aby sprawdzić, czy dają one oczekiwane rezultaty. Na przykład, jeśli umieścimy urządzenie w trybie czuwania (zdarzenie 4 poniżej), a następnie naciśniemy przycisk "speedSelect", w komunikatach wyjściowych dla zdarzenia 5 widzimy, że nie następuje żadna zmiana stanu w podstanie o nazwie "RegionSpeed". Porównajmy zdarzenie 5 ze zdarzeniem 3 w oknie komunikatów wyjściowych, jak pokazano poniżej. 

[![Panel sterowania do testowania kodu maszyny stanów generowanego przez Altova UModel](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) 

Teraz, gdy system jest w trybie czuwania i nie potrzebujemy ogrzewania ani chłodzenia, oszczędzajmy energię, wyłączając go za pomocą przycisku zasilania. 

[![Panel sterowania do testowania kodu maszyny stanów generowanego przez Altova UModel](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) 

Poczekajcie chwilę – wygląda na to, że nic się nie stało. W zdarzeniu 6 nie nastąpiła żadna zmiana, a aktualny stan w oknie u góry nadal wskazuje "Gotowość"! Sprawdzając diagram automatu stanów, widzimy, że jedynym sposobem na wyjście z trybu gotowości jest ponowne naciśnięcie przycisku "Gotowość". Czy to naprawdę jest zachowanie, którego można oczekiwać od przeciętnego użytkownika, że przycisk zasilania nie wyłączy systemu z trybu gotowości? 

[![Fragment diagramu maszyny stanów, utworzony za pomocą programu 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) 

Wyobraźcie sobie, jak kosztowna mogłaby być naprawa tego problemu, gdyby został on wykryty znacznie później, na etapie testowania prototypu przez organ regulacyjny! Oto wyzwanie, które stawiamy naszym czytelnikom: jak zaprojektowalibyście inny, bardziej bezpośredni sposób przejścia ze stanu czuwania do stanu wyłączenia? 

**Testowanie własnych automatów stanów** 

Można wykorzystać przykładowe projekty generowania kodu dla maszyn stanów UModel jako szablony do tworzenia aplikacji testowych dla własnych projektów. Warto skorzystać z funkcji UModel, która automatycznie tworzy operacje w klasie w miarę dodawania nazw operacji do przejść w maszynie stanów. 

[![Przycisk narzędzia Altova UModel służący do automatycznego tworzenia operacji w klasach](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) 

Ponadto, system pomocy UModel zawiera szczegółowe informacje na temat generowania kodu z diagramów stanów, a także wykorzystuje plik projektu AirCondition.ump jako przykład. 

**Sprawdź samodzielnie, jak możesz usprawnić proces tworzenia projektów, testując logikę własnych diagramów automatów stanów za pomocą programu Altova UModel –** [**pobierz bezpłatną 30-dniową wersję próbną już dziś**](https://www.altova.com/pl/download/umodel/uml_tool_enterprise.html)**!**
