Co to jest testowanie oparte na modelu?
โก Inteligentne podsumowanie
Testowanie oparte na modelach sprawdza zachowanie oprogramowania w czasie wykonywania w porรณwnaniu z przewidywaniami tworzonymi przez model abs.tracModel systemu, generujฤ cy przypadki testowe automatycznie z skoลczonych maszyn stanรณw, diagramรณw stanรณw lub notacji UML, a nie rฤcznie.
Co to jest testowanie oparte na modelu?
Testowanie oparte na modelu To technika testowania oprogramowania, w ktรณrej zachowanie testowanego oprogramowania w czasie wykonywania jest sprawdzane pod kฤ tem przewidywaล modelu. Model to opis zachowania systemu, wyraลผony za pomocฤ sekwencji wejลciowych, akcji, warunkรณw, danych wyjลciowych oraz przepลywu danych od wejลcia do wyjลcia. Uลผyteczny model musi byฤ zrozumiaลy w praktyce, wielokrotnego uลผytku i moลผliwy do udostฤpniania, a takลผe musi precyzyjnie opisywaฤ testowany system.
Dostฤpnych jest wiele modeli, a kaลผdy z nich opisuje inny aspekt zachowania systemu. Typowe przykลady to:
- Przepลyw danych
- Kontrola przepลywu
- Wykresy zaleลผnoลci
- Tabele decyzyjne
- Maszyny przejลcia stanรณw
Testowanie oparte na modelu opisuje zachowanie systemu w odpowiedzi na dziaลanie okreลlone przez model. Podaj dziaลanie, a nastฤpnie sprawdลบ, czy system reaguje zgodnie z przewidywaniami modelu. Wszelkie rozbieลผnoลci miฤdzy nimi sฤ albo defektem oprogramowania, albo bลฤdem modelu i warto znaleลบฤ oba.
To lekka, formalna metoda walidacji systemu, ktรณra rรณwnie dobrze sprawdza siฤ w testowaniu sprzฤtu, jak i oprogramowania. Poniewaลผ testy opierajฤ siฤ na specyfikacji zachowania, a nie na kodzie, technika ta jestโฆ testy czarnej skrzynki Rodzina techniki testowania oprogramowania.
Przykลad testowania opartego na modelu
Najprostszym sposobem na odczytanie modelu behawioralnego jest przeลledzenie go od poczฤ tku do koลca. Poniลผszy diagram przedstawia proste zadanie edycji tekstu, gdzie kaลผde pole reprezentuje stan, w jakim moลผe znajdowaฤ siฤ aplikacja, a kaลผda strzaลka reprezentuje akcjฤ, ktรณrฤ moลผe wykonaฤ uลผytkownik.
Model wyjaลnia uproszczone podejลcie do pisania wierszy w Notatniku i moลผliwe dziaลania zwiฤ zane z kaลผdym krokiem. Dla kaลผdej czynnoลci, takiej jak uruchomienie aplikacji, wpisanie wiersza lub zapisanie pliku, walizka testowa Moลผna wygenerowaฤ i zweryfikowaฤ wynik. Przejลcie przez ten sam diagram innฤ ลcieลผkฤ , na przykลad rozpoczynanie i zamykanie bez zapisywania, generuje inny przypadek testowy bez dodatkowych kosztรณw projektowych, co stanowi ekonomiczny argument przemawiajฤ cy za caลฤ technikฤ .
Rodzaje MBT
Istniejฤ dwa typy ram testowania opartego na modelach, a rรณลผnica miฤdzy nimi polega po prostu na tym, kiedy generowane sฤ kroki testowe:
- Offline / a priori: Generowanie zestawรณw testรณw przed ich wykonaniem. Zestaw testรณw to zbiรณr przypadkรณw testowych, a w tym trybie zestaw jest przechowywany, sprawdzany i ponownie uruchamiany jak kaลผdy inny. testowanie automatyzacji kapitaล.
- Online / na bieลผฤ co: Generowanie zestawรณw testรณw w trakcie wykonywania testรณw, gdzie nastฤpny krok jest wybierany na podstawie tego, jak system faktycznie zareagowaล na poprzedni krok.
Generowanie offline jest odpowiednie dla ลrodowisk regulowanych, ktรณre wymagajฤ weryfikowalnego i powtarzalnego zestawu. Generowanie online jest odpowiednie dla dลugotrwaลych sesji eksploracyjnych w systemach stanowych, poniewaลผ generator moลผe reagowaฤ na rzeczywistฤ odpowiedลบ, a nie na przewidywanฤ .
Jak dziaลa testowanie oparte na modelach
Niezaleลผnie od uลผytego frameworka, technika przebiega wedลug tych samych piฤciu etapรณw. Kaลผdy etap generuje artefakt, ktรณry jest nastฤpnie przetwarzany w kolejnym etapie, dlatego to model, a nie skrypt testowy, staje siฤ elementem, ktรณry zespรณล utrzymuje.
- Krok 1: Zbuduj model. Przetลumacz wymagania lub specyfikacjฤ na jฤzyk ABStracModel oczekiwanego zachowania, definiujฤ cy stany, przejลcia miฤdzy nimi oraz dane wejลciowe wyzwalajฤ ce kaลผde przejลcie.
- Krok 2: Wybierz kryteria doboru testu. Kryteria wskazujฤ generatorowi moment zatrzymania. Najczฤลciej spotykane to pokrycie wszystkich stanรณw, ktรณre obejmuje kaลผdy stan co najmniej raz; pokrycie wszystkich przejลฤ, ktรณre obejmuje kaลผdฤ strzaลkฤ co najmniej raz; oraz pokrycie ลcieลผek lub przepลywรณw danych w celu gลฤbszej eksploracji.
- Krok 3: Generuj miฤลnie brzuchatracprzypadki testowe t. Narzฤdzie porusza siฤ po modelu i emituje sekwencje abstrackroki speลniajฤ ce wybrane kryteria, wraz z oczekiwanym wynikiem kaลผdego kroku.
- Krok 4: Utwardzanie miฤลni brzuchatractesty t. Warstwa adaptera mapuje kaลผdy abstracnie moลผna podjฤ ฤ siฤ rzeczywistej akcji przeciwko systemowi, takiej jak interakcja z interfejsem uลผytkownika, API poลฤ czenie lub wiadomoลฤ protokoลu. Ta mapaping jest zapisywany raz i wykorzystywany ponownie w kaลผdym generowanym teลcie.
- Krok 5: Wykonanie i wydanie werdyktu. Konkretne testy przeprowadza siฤ na systemie poddawanym testowi, kaลผdฤ zaobserwowanฤ odpowiedลบ porรณwnuje siฤ z przewidywaniami modelu, a nastฤpnie rejestruje siฤ werdykt o zaliczeniu lub niezaliczeniu testu. tracz powrotem do elementu modelu, ktรณry go wytworzyล.
tracZdolnoลฤ stworzona w kroku 5 to praktyczny zysk. Gdy wymaganie ulega zmianie, model ulega zmianie, a testy, ktรณrych to dotyczy, sฤ generowane ponownie, a nie przepisywane, dlatego zespoลy czฤsto testy regresji w stosunku do stabilnej specyfikacji korzyลฤ jest najwiฤksza.
Rรณลผne modele w testowaniu
Aby zrozumieฤ MBT, konieczne jest zrozumienie niektรณrych modeli opisanych poniลผej. Kaลผdy z nich opiera siฤ na wymianie siลy ekspresji na wysiลek, wiฤc wybรณr zaleลผy od stopnia skomplikowania testowanego zachowania.
Maszyny skoลczone
Model ten pomaga testerom oceniฤ wynik w zaleลผnoลci od wybranego sygnaลu wejลciowego. Rรณลผne kombinacje sygnaลรณw wejลciowych mogฤ skutkowaฤ odpowiadajฤ cym im stanem systemu.
System bฤdzie miaล okreลlony stan i stan aktualny, ktรณre bฤdฤ ustalane na podstawie zestawu danych wejลciowych podanych przez testerรณw.
Rozwaลผ poniลผszy przykลad. System umoลผliwia pracownikom logowanie siฤ do aplikacji. Aktualny stan pracownika to โNiedostฤpnyโ, a po zalogowaniu siฤ do systemu zmienia siฤ na โZalogowanyโ. W stanie โZalogowanyโ pracownik moลผe przeglฤ daฤ, drukowaฤ i skanowaฤ dokumenty w systemie.
Automat stanowy dla tego przykลadu pokazano tutaj, przy czym kaลผda strzaลka jest oznaczona przez wejลcie powodujฤ ce przejลcie.
Wykresy stanu
Diagram stanรณw jest rozszerzeniem skoลczonej maszyny stanรณw i moลผe byฤ stosowany w zลoลผonych systemach czasu rzeczywistego. Diagramy stanรณw opisujฤ rรณลผne zachowania systemu, majฤ okreลlonฤ liczbฤ stanรณw, a zachowanie systemu jest analizowane i reprezentowane w postaci zdarzeล dla kaลผdego stanu. Rozszerzeniem, ktรณre ma znaczenie w praktyce, jest hierarchia: diagram stanรณw umoลผliwia zagnieลผdลผanie i tworzenie stanรณw rรณwnolegลych, dziฤki czemu maszyna, ktรณra potrzebowaลaby kilkudziesiฤciu stanรณw pลaskich, moลผe zostaฤ narysowana w sposรณb zwarty.
Na przykลad defekty sฤ zgลaszane w narzฤdziu do zarzฤ dzania defektami ze statusem โNowyโ. Po naprawieniu defektu przez programistรณw, status musi zostaฤ zmieniony na โNaprawionyโ. Jeลli defekt nie zostanie naprawiony, status zmienia siฤ na โOtwarty ponownieโ. Diagramy stanรณw powinny byฤ zaprojektowane tak, aby dla kaลผdego stanu wywoลywane byลo zdarzenie.
Cykl ลผycia defektu przedstawiono poniลผej, przy czym kaลผdy status pokazano jako stan, a kaลผda czynnoลฤ przepลywu pracy jako zdarzenie, ktรณre przenosi defekt miฤdzy nimi.
Ujednolicony jฤzyk modelowania (UML)
Ujednolicony jฤzyk modelowania (UML) UML to znormalizowany jฤzyk modelowania ogรณlnego przeznaczenia. Zawiera zestaw technik notacji graficznej sลuลผฤ cych do tworzenia modeli wizualnych, ktรณre mogฤ opisywaฤ bardzo zลoลผone zachowania systemรณw.
UML ma takie notacje jak:
- Aktywnoลci
- Aktorzy
- Proces biznesowy
- Komponenty
- Jฤzyk programowania
Diagramy aktywnoลci i maszyn stanรณw to diagramy najczฤลciej czytane przez generatorรณw testรณw, co ilustruje przykลadowy model UML podany poniลผej.
Narzฤdzia do testowania opartego na modelach
Model na papierze sam w sobie niczego nie generuje. Do poruszania siฤ po modelu i generowania ลcieลผek testowych potrzebny jest generator, a rynek narzฤdzi dzieli siฤ na generatory open source i komercyjne platformy do testowania i projektowania.
- GraphWalker โ narzฤdzie typu open source, ktรณre odczytuje modele w ksztaลcie grafรณw skierowanych i generuje na ich podstawie ลcieลผki testowe, z moลผliwoลciฤ wyboru generatorรณw i warunkรณw zatrzymania.
- fMBT โ zestaw narzฤdzi do testowania opartych na modelach typu open source od firmy Intel, ktรณry obsลuguje generowanie i wykonywanie testรณw na podstawie modeli stanรณw.
- Konformiq โ komercyjny produkt do automatycznego projektowania testรณw, ktรณry tworzy przypadki testowe i skrypty na podstawie graficznych modeli zachowaล.
- MaTeLo i MBTsuite โ platformy komercyjne przeznaczone do statystycznych modeli uลผytkowania i generowania testรณw w istniejฤ cych ramach automatyzacji.
- Eksplorator specyfikacji Do MicrosoftRozszerzenie testowania opartego na modelu dla programu Visual Studio, czฤsto cytowane w literaturze poลwiฤconej testowaniu protokoลรณw.
Wybรณr zaleลผy mniej od listy funkcji, a bardziej od dwรณch pytaล: jakฤ notacjฤ zespรณล moลผe faktycznie narysowaฤ oraz czy narzฤdzie moลผe emitowaฤ testy do juลผ uลผywanego frameworka automatyzacji. Generator, ktรณry generuje pakiety, ktรณrych nikt nie moลผe wykonaฤ, dodaje krok do procesu, zamiast go usuwaฤ.
Testowanie oparte na modelach a tradycyjne projektowanie testรณw
Warto podkreลliฤ kontrast z testami pisanymi rฤcznie, poniewaลผ oba podejลcia zawodzฤ w rรณลผnych miejscach, a nie tylko dlatego, ลผe jedno z nich jest lepsze.
| WYGLฤD | Testowanie oparte na modelu | Tradycyjny projekt testรณw |
|---|---|---|
| ลนrรณdลo przypadkรณw testowych | Wygenerowano automatycznie z modelu behawioralnego | Napisane indywidualnie przez testera na podstawie wymagaล |
| Skutek zmiany wymogu | Zaktualizuj model, zregeneruj dotkniฤte testy | Znajdลบ i edytuj rฤcznie kaลผdy przypadek testowy, ktรณrego to dotyczy |
| Pokrycie | Pomiar wedลug kryteriรณw modelu, takich jak wszystkie stany lub wszystkie przejลcia | Zmierzone w stosunku do wymagaล i zaleลผne od osฤ du testera |
| Koszt z gรณry | Wysokie: umiejฤtnoลฤ modelowania, konfiguracja narzฤdzi i warstwa adaptera | Niski: tester moลผe zaczฤ ฤ pisaฤ natychmiast |
| Najlepsze dopasowanie | Systemy stanowe o dลugim okresie istnienia i stabilnej specyfikacji | Krรณtkie projekty, pojedyncze produkcje i prace eksploracyjne |
| Gลรณwny tryb awarii | Bลฤdny lub nieaktualny model po cichu generuje bลฤdne testy | Luki i duplikaty kumulujฤ siฤ w duลผym pakiecie |
Opisana poniลผej ewolucja przedstawia tฤ technikฤ w odpowiednim kontekลcie: rฤczne wykonywanie testรณw ustฤ piลo miejsca wykonywaniu automatycznemu, a podejลcia oparte na modelach przenoszฤ automatyzacjฤ o jeden poziom wczeลniej, do samego projektowania testรณw.
Wyzwania zwiฤ zane z testowaniem opartym na modelu
Wdroลผenie MBT w organizacji wymaga znacznych nakลadรณw finansowych i wysiลku. Poniลผej przedstawiono wady MBT w Inลผynieria oprogramowania:
- Testerzy muszฤ posiadaฤ umiejฤtnoลci modelowania, ktรณrych tradycyjne projektowanie testรณw nie wymaga.
- Proces uczenia siฤ jest dลugi, a koszty pierwszego projektu zwykle przekraczajฤ oszczฤdnoลci.
- Sam model moลผe byฤ trudny do zrozumienia i oceny, zwลaszcza gdy juลผ siฤ rozroลnie.
- Model, ktรณry odbiega od specyfikacji, skutkuje bลฤdnymi, ale pewnymi wynikami testรณw.
- Warstwa adaptera, ktรณra obraca abstracWszystkie kroki prowadzฤ ce do rzeczywistych dziaลaล muszฤ byฤ spisane i utrzymywane oddzielnie.
- Rozmiar modelu roลnie szybko, wiฤc nieograniczony model stanu moลผe wygenerowaฤ wiฤcej ลcieลผek, niลผ jakikolwiek zespรณล jest w stanie wykonaฤ.
ลปaden z nich nie jest powodem, aby unikaฤ tej techniki, ale razem wyjaลniajฤ , dlaczego MBT jest zwykle wprowadzany najpierw w jednym stabilnym podsystemie, a nie w caลym cykl ลผycia testowania oprogramowania natychmiast.
Zalety testowania opartego na modelach
W zestawieniu z tymi kosztami korzyลci pลynฤ ce z MBT sฤ nastฤpujฤ ce:
- ลatwa konserwacja przypadkรณw testowych i zestawรณw testowych, poniewaลผ edytuje siฤ model, a nie poszczegรณlne testy.
- Obniลผenie kosztรณw w trakcie trwania dลugoterminowego projektu.
- Lepsze pokrycie testu, poniewaลผ generator bada ลcieลผki, ktรณre uลผytkownik by pominฤ ล.
- Rรณลผne wygenerowane pakiety mogฤ dziaลaฤ rรณwnolegle na dowolnej liczbie maszyn.
- Wczesne wykrywanie bลฤdรณw, poniewaลผ niejasnoลci ujawniajฤ siฤ juลผ w trakcie tworzenia modelu, jeszcze przed wykonaniem kodu.
- Wzrost liczby defektรณw wykrytych przy takim samym wysiลku testowym.
- Oszczฤdnoลฤ czasu przy projektowaniu testรณw po opracowaniu modelu i adaptera.
- Wiฤksza satysfakcja testerรณw z pracy, poniewaลผ ich wysiลek przesunฤ ล siฤ od powtarzalnego pisania skryptรณw do modelowania i analizy.
Testerzy i tak konstruujฤ modele mentalne w trakcie pracy, a MBT po prostu przenosi te modele mentalne na papier, gdzie moลผna je przeglฤ daฤ, wersjonowaฤ i ponownie wykorzystywaฤ. W jaki sposรณb ta technika wpisuje siฤ w inne dostฤpne podejลcia, opisano w rodzaje testowania oprogramowania.





