A modellellenőrzés egy alkalmazása: Tesztgenerálás modellellenőrzővel

Hasonló dokumentumok
A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel

A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel

Automatikus tesztgenerálás modell ellenőrző segítségével

Modell alapú tesztelés

Modell alapú tesztelés

Modell alapú tesztelés

Modell alapú tesztelés

Alapszintű formalizmusok

Korlátos modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Hatékony technikák modellellenőrzéshez: Korlátos modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Részletes tervek ellenőrzése

Modell alapú tesztelés mobil környezetben

Rendszermodellezés. Modellellenőrzés. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Szoftver-modellellenőrzés absztrakciós módszerekkel

Modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Részletes szoftver tervek ellenőrzése

Specifikáció alapú teszttervezési módszerek

Specifikáció alapú teszttervezési módszerek

Modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Valószínűségi modellellenőrzés Markov döntési folyamatokkal

Modell alapú tesztelés: célok és lehetőségek

Rendszermodellezés: házi feladat bemutatás

Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Formális verifikáció Modellezés és modellellenőrzés

Gyakorló feladatok: Formális modellek, temporális logikák, modellellenőrzés. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Alapszintű formalizmusok

Felhasználói felületek tesztelése

Felhasználói felületek tesztelése

Automatikus kódgenerálás helyességének ellenőrzése

Szoftverminőségbiztosítás

Formális modellezés és verifikáció

Forráskód generálás formális modellek alapján

MODELL ALAPÚ AUTOMATIKUS

R3-COP. Resilient Reasoning Robotic Co-operating Systems. Autonóm rendszerek tesztelése egy EU-s projektben

A formális módszerek szerepe

Modellellenőrzés a vasút automatikai rendszerek fejlesztésében. XIX. Közlekedésfejlesztési és beruházási konferencia Bükfürdő

Intervenciós röntgen berendezés teljesítményszabályozójának automatizált tesztelése

Alapszintű formalizmusok

Teszttervezés. Majzik István, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

Bevezetés az informatikába

Követelmények formalizálása: Temporális logikák. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Teszttervezés. Majzik István, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

Mesterséges intelligencia alapú regressziós tesztelés

2. gyakorlat: Részletes tervek és forráskód ellenőrzése

Hatékony technikák modellellenőrzéshez: Szimbolikus technikák (ROBDD)

Hatékony technikák modellellenőrzéshez: Szimbolikus technikák (ROBDD)

Informatikai rendszertervezés

Szoftver modul/unit tesztelés

Formális módszerek GM_IN003_1 Program verifikálás, formalizmusok

Informatikai rendszertervezés

A KUTATÁS EREDMÉNYEI ZÁRÓJELENTÉS

Szoftver karbantartási lépések ellenőrzése

Szoftverminőségbiztosítás

Zárthelyi mintapéldák. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Struktúra alapú teszttervezési módszerek

A formális módszerek szerepe

Mesterséges intelligencia 2. laborgyakorlat

Struktúra alapú teszttervezési módszerek

Verifikáció és validáció Általános bevezető

Modellek ellenőrzése és tesztelése

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Modellezési alapismeretek

Hardver és szoftver rendszerek verifikációja Röviden megválaszolható kérdések

Elosztott adatbázis-kezelő formális elemzése

Tesztelési feladatok és kihívások a FALCON projektben

A Feldspar fordító, illetve Feldspar programok tesztelése

Mesterséges Intelligencia MI

Nagy bonyolultságú rendszerek fejlesztőeszközei

A szoftver-folyamat. Szoftver életciklus modellek. Szoftver-technológia I. Irodalom

Magasabb szintű formalizmus: Állapottérképek (statecharts) dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

A szoftver tesztelés alapjai

A modell-ellenőrzés gyakorlata UPPAAL

Algoritmizálás, adatmodellezés tanítása 6. előadás

Robusztusság tesztelés

Modellek ellenőrzése

Formális módszerek. A formális modellezés és a formális verifikáció alapjai. dr. Bartha Tamás BME Közlekedés- és Járműirányítási Tanszék

Digitális eszközök típusai

A formális módszerek szerepe

Időt kezelő modellek és temporális logikák

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

Folyamatmodellezés (BPMN), adatfolyamhálók

Modellezési alapismeretek

Szoftver értékelés és karbantartás

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Időzített átmeneti rendszerek

Szoftver karbantartás

Formális módszerek GM_IN003_1 Bevezetés

2.előadás. alapfogalmak, formális definíció

Futásidőbeli verifikáció

OO rendszerek jellemzői

Modellező eszközök, kódgenerálás

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Petri hálók: Alapelemek és kiterjesztések

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

Feladat. Bemenő adatok. Bemenő adatfájlok elvárt formája. Berezvai Dániel 1. beadandó/4. feladat április 13. Például (bemenet/pelda.

Összefoglaló. Modell alapú automatikus tesztgenerálás

MIÉRT KELL TESZTELNI?

Hardver és szoftver rendszerek verifikációja Röviden megválaszolható kérdések

Formális módszerek. A formális modellezés és a formális verifikáció alapjai. dr. Bartha Tamás BME Közlekedés- és Járműirányítási Tanszék

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Átírás:

A modellellenőrzés egy alkalmazása: Tesztgenerálás modellellenőrzővel Majzik István Micskei Zoltán BME Méréstechnika és Információs Rendszerek Tanszék 1

Bevezetés: Szintézis feladatok megoldása modellellenőrzővel 2

Bevezetés: Szintézis feladat Cél: Egy lépéssorozat meghatározása a probléma modelljében Gyártási folyamat: milyen lépésekkel készül el a termék? Protokoll, számítás: milyen lépésekkel terminál? Játék, rejtvény: milyen lépésekkel van megoldás? Modellellenőrző: minden lehetséges lépéssorozatot vizsgál; ezek közül kell a számunkra érdekeset lekérni Ha ellenpélda keresés a modellellenőrző célja: A keresett lépéssorozat legyen megfeleltethető egy várt ellenpéldának Ha tanú (witness) keresés a modellellenőrző célja: A keresett lépéssorozat elérhetősége legyen vizsgálva Egyszerű esetek: Lépéssorozat célállapotának megadásával Lépéssorozat generálás ellenpélda kereséssel: EF <célállapot> Lépéssorozat generálás tanú kereséssel: EF <célállapot> Legrövidebb, leggyorsabb lépéssorozat meghatározása Ha az ellenpélda vagy tanú elvárt tulajdonsága beállítható Pl. UPPAAL: legrövidebb vagy leggyorsabb trace 3

Bevezető mintapélda: Cryptica játék megoldása Cél: Templom kövek a célpontjaikba kerüljenek Egy lépés: Minden templom és blokkoló követ (amit lehet) balra vagy jobbra vagy felfelé vagy lefelé kell mozgatni A pálya széle vagy beépített kő egy-egy követ megállít, de a többi kő mozgatását nem hiúsítja meg 4

Bevezető mintapélda: Cryptica játék modellje Adatstruktúrák Pálya modellje: Beépített kövek és célpontok helye Játékállás modellje: Templom és blokkoló kövek elhelyezkedése Dinamikus működés: Lehetséges lépések felvételek Lépés balra / jobbra / felfelé / lefelé: játékállást módosító függvények a pálya modellje alapján A modellben megjelenik minden lehetséges lépés (a kívánt lépéssorozatot keresi a modellellenőrző) Legegyszerűbb automata: 5

Bevezető mintapélda: Cryptica játék modellje Célszerűbb modell: Lépések követhetővé tétele Az utolsó lépést jelzi a lépéssel elért állapot neve 6

Bevezető mintapélda: Cryptica játék modellellenőrzés Modellellenőrzés: Kirakható-e a játék? Legkevesebb hány lépésben kerülhetnek helyükre a templom kövek? Célállapot meghatározás: iscorrectdistribution() logikai függvény (csak akkor igaz, ha a templom kövek a helyükön vannak) Temporális logikai követelmény: E<> iscorrectdistribution() A legrövidebb tanú trace keresése A kirakás lépései a szimulátorban megjelenített állapotszekvencián követhetők 7

Tesztgenerálás modellellenőrzővel 8

Tesztgenerálás: Szerepe a modell alapú fejlesztésben Formális verifikáció (modellellenőrzés) Automatikus kódgenerálás Formális rendszermodell (forráskód specifikációja) Kézi kódolás Implementáció (forráskód) Tesztgenerálás Futtatható tesztkészlet Specifikációnak megfelelő tesztek 9

Tesztgenerálás: Használati esetei Kézi kódolás esetén: Konformancia ellenőrzés Modell tesztgenerálás Absztrakt tesztesetek kézi kódolás Implementáció (automatikus) tesztelés leképzés Konkrét tesztesetek Automatikus kódgenerálás esetén: Validáció kódgenerálás Modell Implementáció tesztgenerálás kézi validálás Absztrakt tesztesetek leképzés Konkrét tesztesetek 10

Előfeltételek és használat Állapot alapú, eseményvezérelt működés KS, LTS, KTS, TA az alapszintű formalizmusok Fedési kritériumok szerinti tesztelés Állapotfedés: A tesztekkel járjunk be minden állapotot Átmenetfedés: A tesztekkel járjunk be minden átmenetet Alapötlet: Egy teszt: Egy megfelelő lépéssorozat az állapottérben Cél: A modellellenőrző keresse ezt az állapottérben Irányítsuk úgy, hogy a modellellenőrző által generált ellenpélda legyen a teszteset Teszt elfogadhatósági kritérium Modell mint referencia alapján származtatható 11

Hogyan használható a modell ellenőrző? Állapot fedettség: LineWeak állapotra A modellellenőrző ellenpéldával demonstrálja, hogy a kritérium nem teljesül, az állapot elérhető. keyon LineOk keyrdy PowerOff Error Ready keyoff Kritérium megadása: A LineWeak állapotot soha sem lehet elérni: EF LineWeak LineWeak keyack Ez viszont pontosan egy, a LineWeak állapotot lefedő teszteset! 12

A rendszer modelljét egy modellellenőrző bemeneti nyelvére transzformáljuk. Automatikus tesztgenerálás Mérnöki modell Matematikai modell A kiadódó ellenpéldák egy-egy tesztesetet adnak meg. Modellellenőrző Teszteset Tesztelési kritérium TL formulák A fedési kritériumokat temporális logikai formulákkal fogalmazzuk meg. Például: Legyen minden egyes állapot lefedve tesztek által. Olyan futást akarunk, ahol teljesül a kritérium, ezért a formulák negáltjait ellenőriztetjük. 13

Egy megvalósítás UML állapottérkép UPPAAL modell Modellellenőrző XML teszteset Fedési kritérium CTL formulák 14

Vezérlés alapú fedettségi kritériumok Minden állapot illetve átmenet azonosítva: Egyedi L(s) címke illetve (a) akció Állapot fedés: KS vagy KTS modellen Minden s állapotra: EF L(s) vagy EF (L(s) EF start) start egy megfelelő állapot címkéje a következő teszt indításához Átmenet fedés: LTS vagy KTS modellen Minden t átmenetre, ahol (s,a,s ) : EF (a) 15

Korlátozások Modellellenőrző: Csak egy ellenpéldát generál Célja a hatékony állapottér bejárás: Nem feltétlenül a legrövidebb tesztesetet kapjuk! Sok modellellenőrző konfigurálható: Legrövidebb ellenpélda kérhető Szélességi bejárás kérhető (így rövid teszteset lesz) Mélységi bejáráshoz mélységkorlát megadható (teszt hossz korlát) Rövidebb ellenpélda iteratívan kereshető (hosszadalmas lehet) Legrövidebb illetve minimális tesztkészlet kiválasztása: NP-teljes Absztrakt és konkrét tesztesetek közt leképezés kell Absztrakt teszt eset: A modell bejárása (ellenpélda) Konkrét teszt eset: Hívási szekvencia adott teszt környezetben Nemdeterminisztikus modellek esetén nehézségek 16

Példa: Tesztgenerálási eredmények (állapotfedés) Options (compile or run-time) Time required for test generation Length of the test sequences -i 22m 32.46s 17 -dbfs 11m 48.83s 17 -i -m1000 4m 47.23s 17 -I 2m 48.78s 25 default 2m 04.86s 385 -I -m1000 1m 46.64s 22 -m1000+ 1m 25.48s 97 -m200 -w24 46.7s 17 Mobiltelefon vezérlését leíró modell 10 állapot, 21 átmenet Paraméterek a SPIN modellellenőrzőhöz: -i iteratív, -I közelítő iteratív -dbfs: szélességi keresés -m mélységi keresés korlátja -w hash tábla korlátja 17

Példa: Szinkronizációs protokoll tesztelése Bitek szinkronizálása egy elosztott rendszerben 5 objektum, 31 állapot, 174 átmenet 2e+08 bejárandó állapot Más technikák is kellenek: Mélységkorlát bevezetése a kereséshez Szűkítések a modellben: FIFO kommunikációs csatorna méretének korlátozása Korábban lefedett kritériumok kihagyása További heurisztikák alkalmazása: Mélyen fekvő állapotok lefedése előbb Állapottér levágása 18

Példa: Teljes állapotfedésű tesztek Szinkronizációs protokoll 19

Kiterjesztés valósidejű rendszerekre Óra változók: Időfüggő viselkedést modellezhetünk Időzített automaták használata Modellellenőrző: UPPAAL 20

Példa: Generált tesztek State: ( input.sending mobile.poweron mobile1.lineok mobile2.callwait ) t=0 inputevent=28 outputevent=14 in_poweron=1 #depth=5 Delay: 6 A teszt időzítési viszonyok is 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 } 21

Tesztgenerálás korlátos modellellenőrzővel Logikai függvény konstruálása: Állapottér kibontása k lépésben a kezdőállapotból Teszt kritérium megadása: TG formula, pl.: Adott állapot elérése Adott állapotátmenet végrehajtása Adott modellrészlet bejárása, 0 0 1 k SAT ( ) path(, s,..., ) I s s s TG FSHELL FQL nyelv teszt célokhoz: in /code.c/ cover @line(6),@call(f1) passing @file(c1.c) \ @call(f2) Kezdőállapot Állapottér kibontása Teszt cél Ha található behelyettesítés, akkor az egy tesztet ad: A teszt teljesíti a TG kritériumot A legrövidebb teszt 0-ról induló iteráció során található meg 22

Példa eszközök: UPPAAL CoVer UPPAAL COVER UPPAAL CoVer is a tool for creating test suites from UPPAAL models with coverage specified by coverage observers a.k.a. observer automata. 23

Példa eszközök: UPPAAL CoVer UPPAAL COVER UPPAAL CoVer is a tool for creating test suites from UPPAAL models with coverage specified by coverage observers a.k.a. observer automata. 24

Példa eszközök: UPPAAL TRON UPPAAL TRON: Testing Real-time Systems Online UPPAAL TRON is a testing tool, based on UPPAAL engine, suited for black-box conformance testing of timed systems, mainly targeted for embedded software commonly found in various controllers. By online we mean that tests are derived, executed and checked simultaneously while maintaining the connection to the system in real-time. 25

Példa eszközök: UPPAAL TRON UPPAAL TRON: Testing Real-time Systems Online UPPAAL TRON is a testing tool, based on UPPAAL engine, suited for black-box conformance testing of timed systems, mainly targeted for embedded software commonly found in various controllers. By online we mean that tests are derived, executed and checked simultaneously while maintaining the connection to the system in real-time. Relativized Timed I/O Conformance 26

Összefoglalás Tesztgenerálás fedési kritériumokhoz Állapotok fedése Átmenetek fedése Klasszikus modellellenőrzők használata Fedési kritériumhoz temporális logikai kifejezéskészlet Ellenpéldák adják a teszt eseteket A modellellenőrző konfigurálása fontos SAT alapú (korlátos) modellellenőrző használata Fedési kritérium (teszt cél) mint predikátum SAT eredménye (behelyettesítés) adja a teszt esetet 27