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



Hasonló dokumentumok
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

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

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

Modell alapú tesztelés mobil környezetben

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

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

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

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

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

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

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

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

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

Felhasználói felületek tesztelése

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

Szoftverminőségbiztosítás

Felhasználói felületek tesztelése

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

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

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

MODELL ALAPÚ AUTOMATIKUS

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

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

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

Alapszintű formalizmusok

A formális módszerek szerepe

Alapszintű formalizmusok

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

Rendszermodellezés: házi feladat bemutatás

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

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

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

Modellek ellenőrzése és tesztelése

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

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

Bevezetés az informatikába

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

Informatikai rendszertervezés

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

Struktúra alapú teszttervezési módszerek

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

Szoftver modul/unit tesztelés

Informatikai rendszertervezés

Szoftverminőségbiztosítás

A formális módszerek szerepe

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

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

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

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

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

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

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

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

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

Struktúra alapú teszttervezési módszerek

A formális módszerek szerepe

Futásidőbeli verifikáció

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

Miskolci Egyetem Alkalmazott Informatikai Intézeti Tanszék A minőségbiztosítás informatikája. Készítette: Urbán Norbert

Programfejlesztési Modellek

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

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

Időzített átmeneti rendszerek

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

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

A formális módszerek szerepe a rendszerek biztonságának növelésében

Modellek ellenőrzése

Sztochasztikus temporális logikák

Elérhetőségi probléma egyszerűsítése: Állapottér és struktúra redukció Petri-háló alosztályok

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

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

A modell-ellenőrzés gyakorlata UPPAAL

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

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Modellinformációk szabványos cseréje. Papp Ágnes, Debreceni Egyetem EFK

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

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

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

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

Formális módszerek GM_IN003_1 Bevezetés

Élő webes alkalmazások rendszerfelügyelete cím- és tartalomteszteléssel

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

Modellezési alapismeretek

Modellellenőrzés és tesztelés: egy kombinált megközelítés szoftverek verifikálására

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

Transzformációk integrált alkalmazása a modellvezérelt szoftverfejlesztésben. Ráth István

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

5. gyakorlat Modellek ellenőrzése és tesztelése Megoldások

Mesterséges Intelligencia MI

Átírás:

A modellellenőrzés érdekes 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

Modell alapú fejlesztési folyamat (részlet) 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 2

Használati esetek 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 3

Előfeltételek Állapot alapú, eseményvezérelt működés KS, LTS, KTS 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ő állapottér bejárási szekvencia Cél: A modellellenőrző járja be az állapotteret! 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ó 4

Hogyan használható a modell ellenőrző? Állapot fedettség: LineWeak állapotra keyno LineOk keyrdy PowerOff Error Ready keyyes LineWeak keyack 5

Hogyan használható a modell ellenőrző? keyno LineOk keyrdy PowerOff Error Ready keyyes LineWeak keyack Kritérium megadása: A LineWeak állapotot soha sem lehet elérni: EF LineWeak 6

Hogyan használható a modell ellenőrző? keyno LineOk keyrdy PowerOff Error Ready keyyes LineWeak keyack Kritérium ellenőrzése modellellenőrzővel: Eredmény: A kifejezés nem igaz! 7

Hogyan használható a modell ellenőrző? Az eszköz ezzel az ellenpéldával demonstrálja, hogy a követelmény nem teljesül, az állapot elérhető. keyno LineOk keyrdy PowerOff Error Ready keyyes LineWeak keyack Ez viszont pontosan egy, a LineWeak állapotot lefedő teszteset! 8

Automatikus tesztgenerálás Mérnöki modell Matematikai modell Modellellenőrző Teszteset Tesztelési kritérium TL formulák 9

A működés menete I. Mérnöki modell Matematikai modell Tesztelési kritérium Modell- A rendszer modelljét ellenőrző egy modellellenőrző bemeneti nyelvére transzformáljuk. TL formulák Teszteset 10

A működés menete II. Mérnöki modell Tesztelési kritérium Matematikai A fedési kritériumokat modell temporális logikai formulákkal fogalmazzuk meg. Például: Legyen minden egyes Modell állapot lefedve Teszteset ellenőrző tesztek által. TL formulák 11

A működés menete III. Mérnöki modell Olyan futást akarunk, ahol teljesül a kritérium, ezért a formulák negáltjait ellenőriztetjük. Tesztelési kritérium Matematikai modell TL formulák Modellellenőrző Teszteset 12

A működés menete IV. Mérnöki modell Matematikai modell Modellellenőrző Teszteset Tesztelési kritérium TL formulák A kiadódó ellenpéldák egy-egy tesztesetet adnak meg. 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 és átmenet egyértelműen 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 kezdőá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 teszt esetet kapjuk! Sok modellellenőrző konfigurálható: Szélességi bejárás kérhető Mélységi bejáráshoz mélységkorlát megadható Rövidebb ellenpélda iteratívan kereshető Legrövidebb/legkisebb tesztkészlet kiválasztása: NP-teljes probléma! Absztrakt és konkrét teszt esetek 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 Longest test sequence -i 22m 32.46s 17 3 -dbfs 11m 48.83s 17 3 -i -m1000 4m 47.23s 17 3 -I 2m 48.78s 25 6 default 2m 04.86s 385 94 -I -m1000 1m 46.64s 22 4 -m1000+ 1m 25.48s 97 16 -m200 -w24 46.7s 17 3 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 Mobiltelefon vezérlését leíró modell 10 állapot, 21 átmenet 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 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 SAT alapú modellellenőrzővel Logikai függvény konstruálása: Kihajtogatás 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, FQL nyelv teszt célokhoz (FSHELL): in /code.c/ cover @line(6),@call(f1) passing @file(c1.c) \ @call(f2) 0 0 1 k SAT ( ) path(, s,..., ) I s s s TG Kezdőállapot Modell széthajtogatás 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 az iteráció során megtalálható 22

Ö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 23