Méréstechnika és Információs Rendszerek Tanszék Automatikus tesztgenerálás modell ellenőrző segítségével Micskei Zoltán műszaki informatika, V. Konzulens: Dr. Majzik István
Tesztelés Célja: a rendszerben lévő hibák megtalálása Módszer: reprezentatív tesztesetek futtatása, és az eredmények összevetése a tesztesetben eltárolt várt kimenettel Problémák a klasszikus tesztelési módszerekkel: Sok energia kézzel előállítani a teszteseteket. A kész kódhoz készített tesztek nem garantálják a követelményeknek megfelelő működést. Könnyű kihagyni lényeges teszteseteket. Automatikus tesztgenerálás modell ellenőrzővel 2
Modell alapú fejlesztés Modell Modell ellenőrzés Rendszermodell (specifikáció) Kódgenerálás Tesztelés Specifikációnak megfelelő tesztek Automatikus tesztgenerálás modell ellenőrzővel 3
Beágyazott rendszerek modellezése Vezérlésorientált működés Esemény válasz Állapottérkép használata a modellezéshez (UML, STATEMATE) Automatikus tesztgenerálás modell ellenőrzővel 4
Rendszerek ellenőrzése: modell ellenőrző eszközök A rendszer állapotterének teljes bejárásával ellenőrzik bizonyos tulajdonságok meglétét A helyes működés bizonyítására szolgálnak Tipikus feladatok: Élőség és holtpontmentesség vizsgálata Egyedi, rendszerspecifikus kritériumok megadása Állapotok, események elérhetősége, sorrendje Általában temporális logikai formulákkal Automatikus tesztgenerálás modell ellenőrzővel 5
Modell alapú tesztelési módszerek Rendszermodell Fedés Fedés meghatározása Kritérium Generálás Konformancia tesztelése Teszt Teszt orákulum Implementáció Automatikus tesztgenerálás modell ellenőrzővel 6
Tesztgenerálás modell ellenőrzővel Az állapottér bejárása: Szabványos fedési kritérium alapján Tesztelő által megadott kritérium alapján Tipikus kritériumok: Állapotok, átmenetek lefedése Változó definiálások és felhasználások lefedése Be- és kimenő átmenet-párok lefedése egy-egy állapothoz Automatikus tesztgenerálás modell ellenőrzővel 7
Hogyan használható a modell ellenőrző teszt generálásra? keyno LineOk PoweOff Error Ready keyyes LineWeak Automatikus tesztgenerálás modell ellenőrzővel 8
Hogyan használható a modell ellenőrző teszt generálásra? PoweOff keyno keyyes LineOk Error LineWeak Kritérium megadása: A LineWeak állapotot soha sem lehet Ready elérni.! (F in_lineweak) Automatikus tesztgenerálás modell ellenőrzővel 9
Hogyan használható a modell ellenőrző teszt generálásra? keyno LineOk Kritérium ellenőrzése modell ellenőrzővel. PoweOff Error Ready keyyes LineWeak Eredmény: a kifejezés nem igaz! Automatikus tesztgenerálás modell ellenőrzővel 10
Hogyan használható a modell ellenőrző teszt generálásra? keyno LineOk Az eszköz ezzel az ellenpéldával demonstrálja, hogy a tulajdonság nem teljesül, az állapot elérhető. PoweOff Error Ready keyyes LineWeak Ez viszont pontosan egy, a LineWeak állapotot lefedő teszteset! Automatikus tesztgenerálás modell ellenőrzővel 11
Automatikus tesztgenerálás Mérnöki modell Matematikai modell Modell ellenőrző Teszteset Tesztelési kritériumok TL TL formula Automatikus tesztgenerálás modell ellenőrzővel 12
A működés menete I. Mérnöki modell Matematikai modell Tesztelési kritériumok Modell A rendszer modelljét ellenőrző t egy modell ellenőrz rző bemeneti nyelvére transzformáljuk. TL TL formula Teszteset Automatikus tesztgenerálás modell ellenőrzővel 13
A működés menete II. Mérnöki modell Matematikai A fedési kritériumokat riumokat modell temporális logikai formulákkal fogalmazzuk meg. Például: Legyen minden Modell egyes állapot lefedve Teszteset ellenőrző tesztek által. Tesztelési kritériumok TL TL formula Automatikus tesztgenerálás modell ellenőrzővel 14
A működés menete III. Mérnöki modell Olyan futást akarunk, ahol teljesül l a kritérium, rium, ezért a formula negáltj ltját ellenőriztetj riztetjük. Tesztelési kritériumok Matematikai modell TL TL formula Modell ellenőrző Teszteset Automatikus tesztgenerálás modell ellenőrzővel 15
A működés menete IV. Mérnöki modell Matematikai modell Modell ellenőrző Teszteset Tesztelési kritériumok TL TL formula A kiadódó ellenpéld ldák egy-egy tesztesetet adnak meg. Automatikus tesztgenerálás modell ellenőrzővel 16
Implementáció Tesztgeneráló program készült: A módszer működésének demonstrálása Hatékonyság vizsgálata Működési lépései: TL kifejezések generálása a fedési kritériumból Rendszermodell transzformálása a modell ellenőrző bemeneti nyelvére Modell ellenőrző paraméterezése, kifejezések ellenőrzése Kimenet szűrése, és a tesztesetet leíró fájl előállítása Automatikus tesztgenerálás modell ellenőrzővel 17
Implementált környezet UML állapottérkép Promela leírás SPIN modell ellenőrző XML Teszteset Fedési kritériumok LTL formula Automatikus tesztgenerálás modell ellenőrzővel 18
Tesztgenerátor osztálydiagram Automatikus tesztgenerálás modell ellenőrzővel 19
Generált kimenet példa teszteset Megadja, hogy mit fed le a teszteset A tesztesethez tartozó eseményszekvencia Automatikus tesztgenerálás modell ellenőrzővel 20
Generált kimenet példa teszteset XSLT segíts tségével HTML formátumra alakítva Automatikus tesztgenerálás modell ellenőrzővel 21
Optimalizáció A tesztgenerálás célja minél gyorsabban, minél rövidebb ellenpéldát találni speciális beállítások szükségesek. Lehetőségek: SPIN-ben a felesleges ellenőrzések letiltása Megfelelő mélységkorlát definiálása Állapotokat tároló hash-tábla méretének helyes megadása Automatikus tesztgenerálás modell ellenőrzővel 22
Mobile példa: Teljes állapotfedésű tesztek Mobiltelefon vezérlését leíró állapottérkép 10 darab állapot, 21 darab átmenet Automatikus tesztgenerálás modell ellenőrzővel 23
Duál automatika példa Valós protokoll 5 darab objektum, 31 állapot, 174 átmenet Komoly feladat, 2e+08 bejárandó állapot Más technikák is kellenek: Állapottér tárolás tömörítve Közelítő módszer alkalmazása (bitstate hashing) Szűkítések a modellben: csatorna méret csökkentés Korábban lefedett kritériumok kihagyása Automatikus tesztgenerálás modell ellenőrzővel 24
Duál automatika példa Teljes állapotfedésű tesztek Automatikus tesztgenerálás modell ellenőrzővel 25
Kiterjesztések Tesztkészlet optimalizálás Legrövidebb/legkisebb tesztkészlet kiválasztása NP-teljes probléma További heurisztikák alkalmazása: mélyen fekvő állapotok előbb, állapottér levágása Illesztés CASE eszközökhöz Teszt menedzselő és futtató keretrendszerek pl. Rational TestManager Automatikus tesztgenerálás modell ellenőrzővel 26
Valósidejű rendszerek Speciális modell ellenőrző, Uppaal: Időzített automaták használata Automatikus tesztgenerálás modell ellenőrzővel 27
Valósidejű rendszerek Óra típusú változók: Valós időt, időzítési feltételeket modellezhetünk Automatikus tesztgenerálás modell ellenőrzővel 28
Generált tesztek State: A teszt időzítési ( input.sending mobile.poweron mobile1.lineok mobile2.callwait ) t=0 inputevent=28 outputevent=14 in_poweron=1 viszonyok #depth=5 is Delay: 6 szerepelnek a generált tesztesetben State: ( input.sending mobile.poweron mobile1.lineok mobile2.callwait ) t=6 inputevent=28 outputevent=14 in_poweron=1 #depth=5 Transitions: input.sending->input.sendinput { 1, inputchannel!, 1 } mobile2.callwait->mobile2.voicemail { inputevent == evkeyyes && t > 5 && in_poweron, inputchannel?, 1 } Automatikus tesztgenerálás modell ellenőrzővel 29
Eredmények összefoglalása Modell alapú tesztelés támogatása Automatikus tesztgeneráló eszköz eseményvezérelt, beágyazott rendszerekhez: tesztek (bejárási útvonalak) generálása Többféle teszt fedési kritérium figyelembe vétele Teszt időzítés automatikus generálása valósidejű rendszerek esetén Modell ellenőrző teszt-specifikus paraméterezése Méretkorlát: A modell ellenőrző képességei (kb. 10 8 állapot) Automatikus tesztgenerálás modell ellenőrzővel 30
Köszönöm a figyelmet! Kérdések Automatikus tesztgenerálás modell ellenőrzővel