Automatyczne generowanie testów z modeli Numer: 1 (33)
Rozkmina: Projektowanie testów na podstawie modeli (potem można je wykonywać ręcznie, lub automatycznie zwykle chce się automatycznie) A ja mówię o automatycznym projektowaniu Numer: 2 (33)
Jak tworzyć testy automatycznie? Generowanie testów z kodu źródłowego Nagrywanie Z modeli Numer: 3 (33)
Z kodu źródłowego 1(5) int pięćset_plus(int dochód) { wynik dochód + 500; ładniepokażwynik(wynik); return(wynik); } http://mit.bme.hu/~micskeiz/pages/code_based_test_generation.html Numer: 4 (33)
Z kodu źródłowego 2(5) Sterownik testowy: testuj() { wynik=pięćset_plus(0); wynik=pięćset_plus(10000); } Numer: 5 (33)
Z kodu źródłowego 3(5) Zaślepka testowa: ładniepokażwynik(wynik) { sendtors232(wynik); } Numer: 6 (33)
Ograniczenia However, these methods usually cannot generate the expected output for these inputs, as they do not have a specification or model. These methods usually try to satisfy kind of coverage (e.g. different branches and paths of the code under test) Numer: 7 (33)
Z kodu źródłowego 4(5) testuj2 (kwota,wynik) { assertequal(wynik, pięścet_plus(kwota); } Numer: 8 (33)
Z kodu źródłowego 5(5) plik:(-1,499) (0,500) (500,1000) (-500,0) (10000,10500) testuj2(read(plik),read(plik)); Numer: 9 (33)
Nagrywanie interfejsu 1(3) Numer: 10 (33)
Nagrywanie interfejsu 2(3) 10 11 606 1000 0 0 Numer: 11 (33)
Nagrywanie interfejsu 3(3) send(1); assertreceive(11, 300ms); send(606); assertreceive(null, 300ms); send(1000); send(0); assertreceive(0, 300ms); 10 11 606 1000 0 0 Numer: 12 (33)
Z modelu 1(2) 1 B 2 A 5 6 7 D 4 C Numer: 13 (33)
Z modelu 2(2) checkstate(a); apply(1); checkstate(b); apply(2); checkstate(d); apply(4); checkstate(a); apply(5); checkstate(c); Numer: 14 (33)
Jakie to proste! Proste i zaskakująco niepopularne Choć możliwości są: A test is generated for the basic path and each alternate and exception path in the scenario, and added to the selected element. In addition, for each step in the basic, alternate and exception paths that has a value in the Results column, a test is generated and added to the selected element. Numer: 15 (33)
en.wikipedia.org/wiki/model-based_testing Istniejące narzędzia do generowania testów z modeli najczęściej wykorzystują diagramy przejść stanów lub łańcuchy Markowa: Bogdan Bereza Automatyczne generowanie testów 7E. Narzędzie z modeli Numer: 16 (33)
Zastosowanie do SUT maksimum Liczba awarii odrzucić Zbyt źle OK przyjąć wszystkie Liczba wykonanych testów Numer: 17 (33)
mit.bme.hu/~micskeiz/pages/modelbased_testing.html I. Modele II. Import modeli z innych narzędzi III. Algorytmy tworzenia testów Numer: 18 (33)
I. Modele I. Modele II. Import modeli z innych narzędzi III. Algorytmy tworzenia testów C# Modele tekstowe w formie języka typu Gherkin XML Diagramy UML Łańcuchy Markowa Diagramy stanów Matlab Diagramy BPMN Java Sieci Petriego SysML Modele własne MatthWorks Simulink Phyton Numer: 19 (33)
II. Import modeli z innych narzędzi I. Modele II. Import modeli z innych narzędzi III. Algorytmy tworzenia testów Także: eksport testów do różnych narzędzi From several modeling tools Multiple formats Narzędzia UML Narzędzia BPM Numer: 20 (33)
III. Algorytmy tworzenia testów Kombinacje I. Modele II. Import modeli z innych narzędzi III. Algorytmy tworzenia testów Według modelu rozkładu P pokrycie strukturalne statement, branch, path, condition Typowe scenariusze Obszary ryzyka Numer: 21 (33)
robertvbinder.com/open-source-tools-for-model-based-testing/ Bogdan Bereza Automatyczne generowanie testów 7E. Narzędzie z modeli Numer: 22 (33)
MBT - podstawy en.wiki pl.wiki nie ma To już znamy Model, to wiemy A te wymagania testowe? Numer: 23 (33)
Przepływ danych MTB (generator testów) Wywołanie Zarządzanie testami Tworzenie skryptów Przypadki testowe (np. w UML) Raporty testowe (wyniki testów) Skrypty testowe (w języku robota) Wykonywanie i raportowanie testów Numer: 24 (33)
Przykład: www.all4tec.net Łańcuchy Markowa Można łączyć z narzędziami: CANoe, NI Teststand, EXAM, eggplant, Selenium, QTP, TTCN-3, C++, C#, Python [ ] Numer: 25 (33)
2. Generowanie testów z modeli BPMN Próby i badania: "test generation from bpmn" Numer: 26 (33)
Testy statyczne 1(2) Kodu no tak, nie tyle generują testy, co mają wbudowane pewne gotowe reguły, które potrafią automatycznie zastosować dla kodu Modeli - podobnie Numer: 27 (33)
Testy statyczne kodu 2(2) procedure funny_procedurę integer a, b, c, x; a 7; b d / 7; x 9; printf ( %d\n, b); x 17; b x / b; end funny_procedurę; Numer: 28 (33)
Jeszcze testy statyczne modeli Oczywiście, błędy składni Obliczanie złożoności Obliczanie długości ścieżek Dla diagramów przejść stanów: Stany bez wyjścia Stany bez dojścia Stany zdublowane Modularność Spójność = łatwość utrzymania Drzewa wywołań dla globalnych podprocesów Numer: 29 (33)
Testy modeli BPMN Przykład: BPMeter http://ceur-ws.org/vol-1418/paper7.pdf http://benchflow.inf.usi.ch/bpmeter Numer: 30 (33)
Co testuje BPMeter? Discover the process structure Understand process complexity Compare one process with the other Or compare it with your personal statistics Or compare it with general statistics Organize models in collections Keep track of all your processes Numer: 31 (33)
BPMeter - przykłady "Select any standard BPMN 2.0 model you have available (.xml,.bpmn or.bpmn20 file format)" Numer: 32 (33)
Numer: 33 (33)