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.

  • ๐Ÿงญ Gล‚รณwna idea: Model opisuje oczekiwane zachowanie, a kaลผdy przypadek testowy jest wyprowadzany z tego modelu, a nie zapisywany osobno.
  • ๐Ÿ”€ Dwie struktury: Generowanie offline polega na stworzeniu pakietu przed jego wykonaniem, natomiast generowanie online polega na generowaniu krokรณw na bieลผฤ…co, w trakcie dziaล‚ania.
  • ๐Ÿ“ Oznaczenia modelu: Skoล„czone maszyny stanowe, diagramy stanรณw, tablice decyzyjne, grafy przepล‚ywu danych i przepล‚ywu sterowania oraz diagramy UML.
  • โš™๏ธ Proces pracy: Zbuduj model, wybierz kryteria pokrycia, wygeneruj abstractesty t, skonkretyzuj je w skryptach, wykonaj, a nastฤ™pnie wydaj werdykty.
  • ๐Ÿ› ๏ธ. Obrรณbka: GraphWalker, fMBT, Conformiq, MaTeLo, MBTsuite i Spec Explorer generujฤ… ล›cieลผki z grafรณw skierowanych lub modeli stanu.
  • โš–๏ธ. Kompromis: Zakres konserwacji spada, a zasiฤ™g roล›nie, ale technika ta wymaga umiejฤ™tnoล›ci modelowania i poczฤ…tkowej inwestycji w naukฤ™.

Testowanie oparte na modelu, ktรณre automatycznie wyprowadza przypadki testowe z modelu behawioralnego systemu

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:

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.

Przykล‚ad testowania opartego na modelu modelujฤ…cego stany i dziaล‚ania podczas pisania wiersza w Notatniku

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.

Model maszyny stanรณw skoล„czonych pokazujฤ…cy stany wyjล›ciowe i wejล›ciowe systemu logowania pracownikรณw

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.

Schemat cyklu ลผycia usterki, przedstawiajฤ…cy stany Nowy, Naprawiony i Ponownie otwarty

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.

Notacja diagramu UML uลผywana jako model ลบrรณdล‚owy do generowania przypadkรณw testowych

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.

Ewolucja testowania oprogramowania od wykonywania rฤ™cznego, przez automatyzacjฤ™, po testowanie oparte na modelach

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.

FAQ

Czarna skrzynka. Testy sฤ… generowane na podstawie modelu okreล›lonego zachowania, a nie kodu ลบrรณdล‚owego. Technika ta staje siฤ™ szarฤ… skrzynkฤ… tylko wtedy, gdy model jest budowany na podstawie wewnฤ™trznych dokumentรณw projektowych, a nie na podstawie wymagaล„ zewnฤ™trznych.

Tylko zachowanie warte generowania testรณw. Modeluj jeden przepล‚yw pracy ze stanem, taki jak checkout czy cykl ลผycia defektu, na najniลผszym poziomie, ktรณry nadal rozrรณลผnia rzeczywiste wyniki. Modelowanie wszystkiego powoduje eksplozjฤ™ stanu, ktรณrej nikt nie jest w stanie wykonaฤ‡.

Model powinien byฤ‡ objฤ™ty kontrolฤ… wersji wraz z kodem, z nazwanym wล‚aล›cicielem i etapem przeglฤ…du w tym samym procesie zmian co specyfikacja. Model bez wล‚aล›ciciela dryfuje, a model dryfujฤ…cy generuje pewne, ale bล‚ฤ™dne testy.

Nie. Generator bada tylko to, co opisuje model, wiฤ™c wszystko, co model pomija, pozostaje nieprzetestowane. Sesje eksploracyjne pozostajฤ… sposobem, w jaki zespoล‚y odkrywajฤ… zachowania, ktรณrych nikt nie okreล›liล‚, i czฤ™sto ujawniajฤ… luki, ktรณre nastฤ™pnie model absorbuje.

Dล‚ugowieczne systemy stanowe ze specyfikacjฤ… pisemnฤ…: protokoล‚y komunikacyjne, sterowniki wbudowane i samochodowe, urzฤ…dzenia medyczne, przepล‚ywy pracy w bankowoล›ci i sprzฤ™t telekomunikacyjny. Domeny te ล‚ฤ…czฤ… stabilnฤ… specyfikacjฤ™ ze zbyt wieloma dozwolonymi sekwencjami, aby moลผna je byล‚o wyliczyฤ‡ rฤ™cznie.

Gdy specyfikacja zmienia siฤ™ szybciej, niลผ model jest w stanie nadฤ…ลผyฤ‡, gdy funkcja jest niewielka lub krรณtkotrwaล‚a, albo gdy nikt w zespole nie jest w stanie utrzymaฤ‡ notacji. W takich sytuacjach rฤ™czne pisanie przypadkรณw kosztuje mniej w caล‚ym projekcie.

Uczenie maszynowe wnioskuje o modelach stanu roboczego na podstawie dziennikรณw produkcyjnych i zarejestrowanych sesji, oznacza przejล›cia, ktรณrych model nigdy nie uwzglฤ™dnia, i szereguje wygenerowane ล›cieลผki wedล‚ug historii defektรณw, tak aby sekwencje o najwyลผszym ryzyku byล‚y uruchamiane jako pierwsze. Inลผynierowie nadal weryfikujฤ… wywnioskowany model.

Tak, gล‚รณwnie dla warstwy adaptera: metody krokรณw, obiekty stron i asercje, ktรณre wiฤ…ลผฤ… abstracModelowanie dziaล‚aล„ na rzeczywiste poล‚ฤ…czenia. Decyzja o tym, co powinien zawieraฤ‡ model i jakie kryteria pokrycia majฤ… znaczenie, pozostaje w gestii projektanta.

Podsumuj ten post nastฤ™pujฤ…co: