state transition testing technique
Dowiedz się, co to jest testowanie przejść stanów i jak korzystać z diagramu przejść stanów:
W naszym ostatnim artykule widzieliśmy „ Wykres przyczyny i skutku ”Technika pisania przypadków testowych. Dzisiaj przejdźmy do następnej metody dynamicznego pisania przypadków testowych - techniki zmiany stanu.
Ten dokument bada rozszerzenie tej koncepcji testowania na większe aplikacje, które jako całość nie są FSM, ale niektóre z ich składników tak, aby przyjąć jego unikalną cechę „bycia w stanie” i reguł przejścia, co daje wiele korzyści.
Testowanie przejść między stanami
Testowanie przejść między stanami to Technika testowania czarnoskrzynkowego , które można zastosować do testowania „maszyn skończonych”.
„Maszyna skończona” (FSM) to system, który będzie znajdował się w różnych stanach dyskretnych (takich jak „gotowy”, „niegotowy”, „otwarty”, „zamknięty”,…) w zależności od danych wejściowych lub bodźców.
Stany dyskretne, którymi kończy się system, zależą od zasad przejścia systemu. Oznacza to, że jeśli system daje inne wyjście dla tego samego wejścia, w zależności od jego wcześniejszego stanu, to jest to system o skończonym stanie.
Ponadto, jeśli każda transakcja jest testowana w systemie, nazywa się to pokryciem „0 przełączników”. Jeśli testowanie obejmuje 2 pary prawidłowych transakcji, to jest to pokrycie „1 przełącznika” i tak dalej.
Czego się nauczysz:
Jaka jest technika testowania przejść między stanami?
Technika przejść stanów jest techniką testowania dynamicznego, która jest używana, gdy system jest zdefiniowany w kategoriach skończonej liczby stanów, a przejścia między stanami są regulowane przez reguły systemu.
Innymi słowy, technika ta jest używana, gdy cechy systemu są przedstawiane jako stany, które przechodzą jeden w drugi. Transformacje są określone przez reguły oprogramowania. Graficzne przedstawienie można przedstawić jako:
Więc tutaj widzimy, że istota przejścia ze stanu 1 do stanu 2 z powodu niektórych Wejście stan, który prowadzi do zdarzenie i skutkuje akcja i wreszcie daje wynik .
Aby wyjaśnić to na przykładzie:
Odwiedzasz bankomat i wypłacasz 1000 $. Dostajesz swoją gotówkę. Teraz zabrakło Ci salda i złożyłeś dokładnie taką samą prośbę o wypłatę 1000 $. Tym razem bankomat odmawia wypłaty pieniędzy z powodu niewystarczającego salda. Więc tutaj przejście , co spowodowało zmiana stanu jest wcześniejszą wypłatą
Definicja testowania przejść między stanami
Zrozumiawszy, czym jest przejście stanów, możemy teraz dojść do bardziej sensownej definicji testowania zmian stanów. Jest to więc rodzaj testu czarnoskrzynkowego, w którym tester musi zbadać zachowanie funkcji AUT (aplikacja w toku) w odniesieniu do różnych warunków wejściowych podanych w sekwencji.
Zachowanie systemu jest rejestrowane zarówno dla pozytywnych, jak i negatywnych wartości testowych.
Kiedy używać testowania przejść między stanami?
Testowanie przejść między stanami można zastosować w następujących sytuacjach:
różnica między testami białymi i czarnoskrzynkowymi
- Gdy testowana aplikacja jest systemem czasu rzeczywistego z różnymi stanami i przejściami.
- Gdy aplikacja jest zależna od wydarzenia / wartości / warunków z przeszłości.
- Kiedy należy przetestować sekwencję zdarzeń.
- Gdy aplikacja musi zostać przetestowana pod kątem skończonego zestawu wartości wejściowych.
Kiedy nie używać testowania przejść między stanami?
Nie należy polegać na testach przejścia stanów w następujących sytuacjach:
- Gdy testowanie nie jest wymagane dla sekwencyjnych kombinacji wejść.
- Gdy wymagane jest przetestowanie różnych funkcjonalności aplikacji (bardziej jak testowanie eksploracyjne).
Przykład testowania przejść między stanami w testowaniu oprogramowania
W praktycznym scenariuszu testerzy zwykle otrzymują diagramy zmian stanów i jesteśmy zobowiązani do ich interpretacji.
Diagramy te są dostarczane przez analityków biznesowych lub interesariuszy i używamy ich do określania naszych przypadków testowych.
Rozważmy poniższą sytuację:
Nazwa oprogramowania - Manage_display_changes
Specyfikacje - Oprogramowanie reaguje na żądania wprowadzenia zmiany trybu wyświetlania dla urządzenia wyświetlającego czas.
Tryb wyświetlania można ustawić na jedną z czterech wartości:
- Dwa odpowiadają wyświetlaniu czasu lub daty.
- Pozostałe dwa podczas zmiany czasu lub daty.
Różne stany są następujące:
- Tryb zmiany (CM): Aktywacja tego spowoduje przejście trybu wyświetlania między „czas wyświetlania (T)” i „wyświetl datę (D)”.
- Reset (R): Jeżeli tryb wyświetlania jest ustawiony na T lub D, wówczas „reset” powinien spowodować ustawienie trybu wyświetlania na tryb „zmień czas (AT)” lub „zmień datę (AD)”.
- Ustawiony czas (TS): Aktywacja tego spowoduje powrót trybu wyświetlania do T z AT.
- Ustaw datę (DS): Aktywacja tego powinna spowodować powrót trybu wyświetlania do D z AD.
Diagram zmian stanów
Teraz przejdźmy do interpretacji:
Tutaj:
# 1) Różne stany to:
- Czas wyświetlania (S1),
- Zmień czas (S3),
- Wyświetl datę (S2) i
- Zmień datę (S4).
# 2) Różne dane wejściowe to:
- Tryb zmiany (CM),
- Reset (R),
- Time Set (TS),
- Ustaw datę (DS).
# 3) Różne wyniki to:
- Alter Time (AT),
- Czas wyświetlania (T),
- Wyświetl datę (D),
- Alter Date (AD).
# 4) Zmienione stany to:
- Czas wyświetlania (S1),
- Zmień czas (S3),
- Wyświetl datę (S2) i
- Zmień datę (S4).
Krok 1: Napisz wszystkie stany początkowe. W tym celu przyjmuj jeden stan na raz i zobacz, ile strzał z niego wychodzi.
- W przypadku stanu S1 wychodzą z niego dwie strzałki. Jedna strzałka będzie wskazywać stan S3, a inna strzałka będzie wskazywać stan S2.
- Dla stanu S2 - są 2 strzałki. Jeden zmierza do stanu S1, a drugi do S4
- Dla stanu S3 - tylko 1 strzałka wychodzi z niego, przechodząc do stanu S1
- Dla stanu S4 - tylko 1 strzałka wychodzi z niego, przechodząc do stanu S2
Połóżmy to na naszym stole:
Ponieważ dla stanu S1 i S2 wychodzą dwie strzałki, napisaliśmy to dwukrotnie.
Krok 2: Dla każdego stanu zapisz ich końcowe stany przejściowe.
- Dla stanu S1 - Stany końcowe to S2 i S3
- Dla stanu S2 - końcowe stany to S1 i S4
- Dla stanu S3 - stan końcowy to S1
- Dla stanu S4 - stan końcowy to S2
Umieść to w tabeli jako stan Wyjście / Wynik.
Krok 3: Dla każdego stanu początkowego i odpowiadającego mu stanu końcowego zapisz warunki wejściowe i wyjściowe
- Aby stan S1 przeszedł do stanu S2, wejście jest w trybie zmiany (CM), a wyjście to wyświetlanie daty (D), jak pokazano poniżej:
W podobny sposób zapisz warunki wejściowe i ich wyniki dla wszystkich stanów w następujący sposób:
Krok 4:
Teraz dodaj identyfikator przypadku testowego dla każdego testu pokazanego poniżej:
Teraz przekształćmy to w formalne przypadki testowe:
W ten sposób można wyprowadzić wszystkie pozostałe przypadki testowe. Zakładam drugi atrybuty przypadków testowych takie jak warunki wstępne, ważność, priorytet, środowisko, kompilacja itp. są również uwzględnione w przypadku testowym.
Podsumowując ponownie kroki:
- Zidentyfikuj stany początkowe i ich stan końcowy na podstawie linii / strzałek wychodzących ze stanu początkowego.
- Dla każdego stanu początkowego znajdź warunek wejściowy i wynik wyjściowy
- Oznacz każdy zestaw jako oddzielny przypadek testowy.
Więcej przykładów techniki przejścia między stanami
Oto jeszcze jeden przykład techniki testowania przejść między stanami w większych aplikacjach.
Opis:
' Stateful Functional Testing ” podejście może służyć do testowania określonych części lub komponentów aplikacji z cechami maszyny skończonej (FSM).
Kroki we wdrożeniu:
# 1) Pierwszym krokiem do wdrożenia „Stateful Functional Testing” jest zidentyfikowanie różnych komponentów / części aplikacji, które można sklasyfikować jako FSM. Wejścia, stany i wyjścia są starannie śledzone dla każdego z tych FSM.
#dwa) Następnym krokiem byłoby opracowanie przypadków testowych dla tych FSM w oparciu o reguły przejścia, dane wejściowe, dane wyjściowe i stany przejściowe.
# 3) Trzecim krokiem byłoby zintegrowanie testowania tych komponentów z innymi komponentami interfejsów w celu walidacji aplikacji od końca do końca.
Można to wyjaśnić na przykładzie aplikacji o nazwie „Projekt domu”, która śledzi budowę domu, z różnymi elementami aplikacji, takimi jak zatwierdzenie architektury domu, rejestracja działki i domu, wybór wykonawcy budowy , zgoda na kredyt mieszkaniowy itp.
Na przykład,
Rozważymy przetestowanie jednego z komponentów FSM aplikacji „Projekt domu”: Zatwierdzenie kredytu mieszkaniowego.
Wniosek o zatwierdzenie kredytu mieszkaniowego (HLA)
Wniosek HLA będzie prowadzony przez niezależnego Użytkownika Obsługi Pożyczki, który rozpatruje wniosek kredytowy. Poniżej opisano szczegółowo poszczególne etapy przetwarzania wniosku:
1.1.1 Krok 1: Zbieranie dokumentów
jaki jest najlepszy program do pobierania muzyki mp3
Pierwszym krokiem jest zebranie odpowiednich dokumentów do ubiegania się o pożyczkę, o których mowa w poniższej tabeli. Są to „warunki” pomyślnego wniosku. Wnioskodawca zbiera wymagane dokumenty i aplikuje je do kredytu mieszkaniowego.
Użytkownik przetwarzający pożyczkę potwierdza otrzymanie dokumentów i przechodzi ze stanu Wniosku o pożyczkę (czyli stanu komponentu Wniosku o pożyczkę) do stanu „Zastosowano”.
Tabela 1: Lista dokumentów
1.1.2 Krok 2: Ocena kredytu
Na tym etapie pożyczkodawca ocenia Wniosek kredytowy, aby stwierdzić, czy spełnia on jego wymagania kredytowe. Dokumenty potwierdzające są w tym czasie weryfikowane.
Tabela 2: Krytyczność dokumentów
Dokumenty wymagane do oceny, czyli „warunki”, które wymagają walidacji na tym etapie, podlegają walidacji. Każdy warunek ma przypisaną wartość krytyczną (oznaczoną jako „Y” w powyższej tabeli). Po spełnieniu wszystkich wymaganych warunków krytycznych aplikacja przechodzi do stanu „Potwierdzona” - to znaczy, że składnik aplikacji HLA jest w stanie „Potwierdzony”.
Zwróć uwagę:
# 1) Zasada ta nadaje strukturę i obiektywizm warunkom testowym i definicjom „stanu” systemu .
Ponadto nie wszystkie „warunki” do walidacji systemu są krytyczne, aby osiągnąć ten stan „Potwierdzony”. W powyższej tabeli 4 warunki są oznaczone jako „Niekrytyczne”, aby aplikacja osiągnęła stan „Potwierdzony”.
#dwa) Liczbę walidacji można optymalnie zmniejszyć, w zależności od ryzyka lub krytyczności reguł wymaganych dla każdego stanu. Znacząco skróci to czas potrzebny na wykonanie testów, a jednocześnie nie wpłynie na jakość testowania.
# 3) Jest to przydatne nie tylko do testowania poszczególnych komponentów, ale także do testowania całego systemu.
# 4) Bardzo przydatne również podczas tworzenia zestawów testów regresji.
Na tym etapie jest to testowanie typu zerowego. Jednak późniejsze etapy zatwierdzania mogą obejmować walidacje z jednym lub dwoma przełącznikami dla tego etapu.
Na przykład, „Akt małżeństwa” może nie być zbyt istotny na tym etapie, ale na późniejszych etapach zatwierdzenia, kiedy rozważane jest ryzyko płacenia EIW przez wnioskodawcę, akt małżeństwa może stać się istotny - to znaczy, jeśli współmałżonek jest również zatrudniony zmniejsza ryzyko, a jeśli nie jest stosowany, zwiększa je.
# 5) Powyższą zasadę można wykorzystać do rozszerzenia warunków badania w zależności od wymagań komponentu na tym etapie.
1.1.3 Krok 3: Zatwierdzenie warunkowe
Obecny stan aplikacji to „Potwierdzony”. Pożyczkodawca udzieliłby „warunkowej zgody” na kontynuację procesu pożyczki. Dalsze walidacje są wymagane w celu przeniesienia aplikacji HLA do stanu „Zatwierdzona”.
1.1.4 Krok 4: Zatwierdzenie
Na tym etapie przeprowadzane są walidacje krytyczne:
- Ocena dokonana przez pożyczkodawców w zakresie ubezpieczenia hipotecznego (LMI): wymagałoby to dwóch lub więcej weryfikacji autentyczności nieruchomości.
- Pożyczkodawca może zażądać informacji, które nie zostały podane na etapie „Potwierdzenia”.
Po spełnieniu powyższych warunków aplikacja przechodzi do stanu „Zatwierdzona”. Ostateczny organ w procesie zatwierdzania może zweryfikować wiarygodność wnioskodawcy, prosząc o więcej szczegółów lub nie zapytać, czy inne dokumenty wnioskodawcy są rozstrzygające. Oznacza to, że do udowodnienia słuszności wymagane byłoby więcej danych wejściowych z różnych komponentów aplikacji głównej .
# 6) Innymi słowy, więcej walidacji może być wymaganych (lub zmniejszonych) w celu przejścia do innego stanu w zależności od warunków wejściowych do komponentu z innych komponentów aplikacji.
Poniższy diagram przedstawia proces zatwierdzania.
Rysunek 1: Proces zatwierdzania pożyczki
Ryzyka i wyzwania
- W przypadku dużych aplikacji głęboka wiedza na temat aplikacji jest niezbędna do podzielenia aplikacji na różne logiczne komponenty, aby umożliwić klasyfikację jako FSM i zwykłe komponenty. Może to wymagać kosztownego czasu ze strony MŚP.
- Nie wszystkie aplikacje miałyby możliwość tego rodzaju kategoryzacji FSM.
- Ponieważ komponenty FSM współdziałają ze zwykłymi komponentami aplikacji, dane wejściowe do FSM z różnych komponentów wymagają starannego planowania i wykonania.
Zalety testowania przejść między stanami
- W ramach tej techniki, używając obrazkowej lub tabelarycznej reprezentacji zachowania systemu, tester zaznajamia się z projektem aplikacji i czuje się łatwy do efektywnego i wydajnego pokrycia i zaprojektowania testów.
- Nieplanowane lub nieprawidłowe stany systemu są również objęte tą techniką.
- Korzystając z diagramu przejść stanów, można łatwo sprawdzić, czy uwzględniono wszystkie warunki.
Wady testowania przejść między stanami
- Ta technika nie może być używana w przypadku systemów z nieskończonymi stanami.
- Definiowanie wszystkich możliwych stanów dla dużych i złożonych systemów jest dość kłopotliwym zadaniem.
Wniosek
Testowanie przejść między stanami jest pomocnym podejściem, gdy różne przejścia między systemami muszą być testowane dla systemów o skończonych stanach.
Testowanie aplikacji zgodnie z koncepcją „stanowego testowania funkcjonalnego” może dać organizacjom testującym unikalne podejście do testowania złożonych aplikacji, które zwiększyłoby produktywność wykonywania testów bez uszczerbku dla pokrycia testami.
Testowanie przejść między stanami to unikalne podejście do testowania złożonych aplikacji, które zwiększyłoby wydajność wykonywania testów bez uszczerbku dla pokrycia testów.
Ograniczeniem tej techniki jest to, że nie można jej używać do czasu, gdy testowany system ma tylko stany skończone.
rekomendowane lektury
- Co to jest technika testowania oparta na defektach?
- Co to jest technika testowania macierzy ortogonalnej (OATS)?
- Testy funkcjonalne a testy niefunkcjonalne
- Co to jest testowanie porównawcze (zapoznaj się z przykładami)
- Co to jest testowanie mutacji: samouczek z przykładami
- Czym są testy wytrzymałościowe w testowaniu oprogramowania (przykłady)
- Co to jest testowanie od końca do końca: Framework testowania E2E z przykładami
- Najlepsze narzędzia do testowania oprogramowania 2021 (Narzędzia do automatyzacji testów QA)