Modellek ellenőrzése

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

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

Modellek ellenőrzése

Modellek ellenőrzése

Szoftverminőségbiztosítás

Rendszermodellezés: házi feladat bemutatás

Modellek végrehajtása, kódgenerálás

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

Modellek ellenőrzése és tesztelése

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

3. gyakorlat Folyamatmodellek, kooperáló viselkedésmodellek Megoldások

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

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

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

Szoftverminőségbiztosítás

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

MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK A TESZT FEJLESZTÉSI FOLYAMATA A TESZTTERVEZÉSI TECHNIKÁK KATEGÓRIÁI

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

Szimuláció. Fault Tolerant Systems Research Group. Budapest University of Technology and Economics. Department of Measurement and Information Systems

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)

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

Szoftverminőségbiztosítás

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

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

Integrációs mellékhatások és gyógymódok a felhőben. Géczy Viktor Üzletfejlesztési igazgató

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

Modell alapú tesztelés mobil környezetben

Modellek fejlesztése

Modellek fejlesztése

Szoftverminőségbiztosítás

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

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

Szoftverminőségbiztosítás

Részletes szoftver tervek ellenőrzése

MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK STRUKTÚRA ALAPÚ, VAGY FEHÉRDOBOZ TECHNIKÁK TAPASZTALAT ALAPÚ TECHNIKÁK

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

Alapszintű formalizmusok

Részletes tervek ellenőrzése

Miskolci Egyetem Általános Informatikai Tanszék

A tesztelés feladata. Verifikáció

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

Kompetens szoftvertesztelés a gyakorlatban II. zárthelyi dolgozat

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

3. gyakorlat Folyamatmodellek, kooperáló viselkedésmodellek Megoldások

Követelmény alapú minőségbiztosítás az államigazgatásban

Teljesítménymodellezés

Teljesítménymodellezés

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

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

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

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

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

Programfejlesztési Modellek

Intelligens eszközök fejlesztése az ipari automatizálásban Evosoft Hungary kft., Evosoft Hungary Kft.

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

MIÉRT KELL TESZTELNI?

S01-9 Szoftverfejlesztés minőségi aspektusai

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

Laborgyakorlat 3 A modul ellenőrzése szimulációval. Dr. Oniga István

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Bevezetés az informatikába

Név: Neptun kód: Pontszám:

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba

Programtervezés. Dr. Iványi Péter

Nagy bonyolultságú rendszerek fejlesztőeszközei

A dokumentáció felépítése

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Digitális eszközök típusai

3. gyakorlat Folyamatmodellek, kooperáló viselkedésmodellek Megoldások

Statikus technikák: A szoftver átvizsgálása. Statikus technikák: A szoftver átvizsgálása

Bokor Péter. DECOS Nemzeti Nap október 15. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Szoftver karbantartás

Programozási technológia II 7. előadás. Verifikáció és validáció Giachetta Roberto

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

OO rendszerek jellemzői

Elérhetőségi analízis Petri hálók dinamikus tulajdonságai

Tesztelési szintek Tesztautomatizálás

Programozási nyelvek II. JAVA

Tartalom A verifikáció és validáció tervezése Szoftver vizsgálatok Automatizált statikus analízis Cleanroom szoftverfejlesztés

ORVOSTECHNIKAI ESZKÖZÖK GYÁRTMÁNYFEJLESZTÉSE AKTÍV ORVOSI ESZKÖZÖK FEJLESZTÉSE - PEMS V&V

Szoftverminőségbiztosítás

Szoftver modul/unit tesztelés

Szoftvertechnológia ellenőrző kérdések 2005

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Informatikai rendszertervezés

A TESZTELÉS ALAPJAI MIÉRT SZÜKSÉGES A TESZTELÉS? MI A TESZTELÉS? ÁLTALÁNOS TESZTELÉSI ALAPELVEK

Miért is transzformáljunk modelleket? Varró Dániel

Bevezetés a párhuzamos programozási koncepciókba

Autóipari beágyazott rendszerek. Kockázatelemzé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

Szoftverfejlesztés teszteléssel

Digitális technika (VIMIAA02) Laboratórium 4

Informatikai rendszertervezés

Verziókövető rendszerek használata a szoftverfejlesztésben

ELTE, Informatikai Kar december 12.

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Biztonsági folyamatirányító. rendszerek szoftvere

Digitális technika (VIMIAA02) Laboratórium 4

Modellezési alapismeretek

Átírás:

Modellek ellenőrzése Budapest University of Technology and Economics Fault Tolerant Systems Research Group Budapest University of Technology and Economics Department of Measurement and Information Systems 1

Ariane 5 hordozórakéta A legerősebb európai hordozórakéta 2

Ariane 5 hordozórakéta 1996. június 4-én 37 másodperccel a kilövés után megsemmisítette magát o A szállított négy műhold is megsemmisült o $370 milliós kár 3

Ariane 5 hordozórakéta 1996. június 4-én 37 másodperccel a kilövés után megsemmisítette magát o A szállított négy műhold is megsemmisült o $370 milliós kár A világ (egyik) legdrágább szoftverhibája o Elsődleges ok: 64 bites szám sikertelen konverziója 16 bitesre o Másodlagos ok: Soha nem tesztelték együtt a modulokat 4

Példa: Esterel SCADE Modellek ellenőrzése Specifikáció Modellek Ellenőrzés Generálás Repülőgép, kritikus ES, autó 5

Tartalom Alapfogalmak Statikus ellenőrzés Tesztelés Formális verifikáció 6

Motiváció: modellek életciklusa Modellek fejlesztése Követelmények, specifikáció Szoftverfejlesztés Követelmények, specifikáció Kezdeti modellek Tervezés Részletes modellek Tesztelés Implementáció Tesztelés Karbantartás Karbantartás 7

Kódgenerálás esetén Modellek fejlesztése Követelmények, specifikáció Szoftverfejlesztés Követelmények, specifikáció Kezdeti modellek Tervezés Részletes modellek Tesztelés Implementáció Tesztelés Karbantartás Karbantartás 8

Alapfogalmak Statikus ellenőrzés Tesztelés Formális verifikáció ALAPFOGALMAK 9

Modellek és feladatok Szintézis: Specifikációnak megfelelő modell? I M? O Analízis: Modell viselkedése? I M O? Vezérlés: Kívánt állapot hogy érhető el? I? O M 10

Helyesség Helyesség: modell vagy kód megfelelése a követelményeknek. o Funkcionális helyesség: megfelelés a funkcionális követelményeknek o Nemfunkcionális követelmények ellenőrzése: lásd teljesítménymodellezés előadás Szempontok: o Mindig képes teljesíteni a feladatot o Hibamentes o Nincs tiltott viselkedés 11

Funkcionális követelmények csoportosítása Megengedett viselkedés: o Milyen állapotokban lehet/nem lehet a rendszer o Milyen viselkedés tilos o Univerzális követelmények Mindig igaznak kell lenniük Elvárt viselkedés: o Milyen állapotokba kell tudni eljutni o Milyen funkciókat kell tudnia a rendszernek o Egzisztenciális követelmények Lehessen lehetőség a teljesülésükre 12

Funkcionális követelmények csoportosítása Megengedett viselkedés: o Milyen állapotokban lehet/nem lehet a rendszer Egy kereszteződés o Milyen viselkedés tilos lámpái soha nem o Univerzális követelmények lehetnek egyszerre zöldek. Mindig igaznak kell lenniük Elvárt viselkedés: o Milyen állapotokba kell tudni eljutni o Milyen funkciókat kell tudnia a A rendszernek lámpa legyen képes o Egzisztenciális követelmények zöldre váltani. Lehessen lehetőség a teljesülésükre 13

Holtpont Beragadt állapot: a rendszer csak külső segítséggel képes kilépni. o Pl. egymásra várakozó folyamatok miatt 14

Holtpont (deadlock) Olyan állapot, amelyből a rendszer külső beavatkozás nélkül képtelen továbblépni. Útkereszteződésben - ha közúti jelzésből vagy forgalmi szabályból más nem következik - a jobbról érkező járműnek van elsőbbsége. (1988. évi I. törvény a közúti közlekedésről) o Pl. egymásra várakozó folyamatok miatt?? 15

Holtpont feloldása Olyan állapot, amelyből a rendszer külső beavatkozás nélkül képtelen továbblépni. Ha 4 autó egyszerre ér a jobbkezes kereszteződésbe, akkor valamelyiknek le kell mondania az elsőbbségről és elengedni a másikat. Ha nem teszi, akkor a KRESZ szerint ott fognak állni örökké. (gyakorikerdesek.hu) o Pl. egymásra várakozó folyamatok miatt 16

Holtpont feloldása Olyan állapot, amelyből a rendszer külső beavatkozás nélkül képtelen továbblépni. Ha 4 autó egyszerre ér a jobbkezes kereszteződésbe, akkor valamelyiknek le kell mondania az elsőbbségről és elengedni a másikat. Ha nem teszi, akkor a KRESZ szerint ott fognak állni örökké. (gyakorikerdesek.hu) o Pl. egymásra várakozó folyamatok miatt Csak Ön után! Csak Ön után! Csak Ön után! Csak Ön után! 17

Újabb holtpont Olyan állapot, amelyből a rendszer külső beavatkozás nélkül képtelen továbblépni. Ha 4 autó egyszerre ér a jobbkezes kereszteződésbe, akkor valamelyiknek le kell mondania az elsőbbségről és elengedni a másikat. Ha nem teszi, akkor a KRESZ szerint ott fognak állni örökké. (gyakorikerdesek.hu) o Pl. egymásra várakozó folyamatok miatt 18

Holtpont feloldása Olyan állapot, amelyből a rendszer külső beavatkozás nélkül képtelen továbblépni. Útkereszteződésben - ha közúti jelzésből vagy forgalmi szabályból más nem következik - a jobbról érkező járműnek van elsőbbsége. (1988. évi I. törvény a közúti közlekedésről) o Pl. egymásra várakozó folyamatok miatt Akkor majd én Akkor majd én Akkor majd én Akkor majd én 19

Holtpont feloldása Olyan állapot, amelyből a rendszer külső beavatkozás nélkül képtelen továbblépni. Útkereszteződésben - ha közúti jelzésből vagy forgalmi szabályból más nem következik - a jobbról érkező járműnek van elsőbbsége. (1988. évi I. törvény a közúti közlekedésről) o Pl. egymásra várakozó folyamatok miatt Akkor majd én Akkor majd én Az életnek tanulunk: elromlott lámpák a Belgrád rakparton (ma reggel mind piros ) Akkor majd én Akkor majd én 20

Végtelen ciklus (livelock) Beragadt állapothalmaz: a rendszer csak külső segítséggel képes kilépni. o Pl. éppen a holtpont feloldása miatt?? 21

Holtpont (deadlock) Beragadt állapot: a rendszer csak külső segítséggel képes kilépni. o Pl. egymásra várakozó folyamatok miatt Gyakori tervezési hiba párhuzamos rendszereknél o Sokszor nehéz elkerülni, feloldani A jónak hitt megoldás is problémát okozhat o Nehéz tesztelni, látszólag véletlenszerű is lehet o Többmagos CPU krízis 22

Holtpont (deadlock) Beragadt állapot: a rendszer csak külső segítséggel képes kilépni. o Pl. egymásra várakozó folyamatok miatt Gyakori tervezési hiba párhuzamos rendszereknél o Sokszor nehéz elkerülni, feloldani A jónak hitt megoldás is problémát okozhat Két folyamat mindegyikének kétféle erőforrás kell a továbblépéshez, de mindegyikük egyet-egyet lefoglalt. o Nehéz tesztelni, látszólag véletlenszerű is lehet o Többmagos CPU krízis Két folyamatnak üzenetet kell cserélnie, de mind a kettő a másik üzenetére vár. 23

Modellek ellenőrzése Modell Követelmény Adatfolyamháló az utazási iroda és a bank közti kommunikációra Ellenőrzés Nem vész el üzenet és előbbutóbb lezárul a kommunikáció. 24

Vizsgálatok fajtái Cél szerint: o Verifikáció: jól csinálom a rendszert? Az implementáció megfelel a specifikációnak? o Validáció: jó rendszert csinálok? A rendszer teljesíti a felhasználói követelményeket? Módszer szerint: Alapfogalmak o Statikus ellenőrzés Statikus ellenőrzés o Dinamikus ellenőrzés Tesztelés Szúrópróbaszerű (tesztelés, szimuláció) Kimerítő/teljes (modellellenőrzés) Formális verifikáció 25

Alapfogalmak Statikus ellenőrzés Tesztelés Formális verifikáció STATIKUS ELLENŐRZÉS Hibaminták 26

Decision és Join Helyes-e az alábbi modell? Bankkártya Fizetési mód? Készpénz Kártyás fizetés Kasszakezelés Készlet csökkentés 27

Decision és Join Helyes-e az alábbi modell? Bankkártya Fizetési mód? Kártyás fizetés Kasszakezelés Készpénz? Készlet csökkentés Join: csak akkor léphet tovább, ha mindegyik bemeneten érkezett token DEADLOCK 28

Fork és Merge Helyes-e az alábbi modell? Tranzakció Készlet csökkentés Naplózás 29

Fork és Merge Helyes-e az alábbi modell? Tranzakció Készlet csökkentés Naplózás Merge: bármelyik ágon érkező tokent átengedi o Nem szinkronizálja a szálakat Készlet csökkentés kétszer fut le 30

Ciklus 1. Helyes-e az alábbi modell? Visszaszámolás Zéró? Igen Kilövés indítása Nem 31

Ciklus 1. Helyes-e az alábbi modell? Visszaszámolás Zéró? Igen Kilövés indítása? Nem Join: csak akkor léphet tovább, ha mindegyik bemeneten érkezett token DEADLOCK 32

Ciklus 2. Helyes-e az alábbi modell? Képkocka renderelés Utófeldolgozás 33

Ciklus 2. Helyes-e az alábbi modell? Képkocka renderelés Utófeldolgozás? Join: csak akkor léphet tovább, ha mindegyik bemeneten érkezett token DEADLOCK 34

Ciklus 3. Helyes-e az alábbi modell? Képkocka renderelés Utófeldolgozás 35

Ciklus 3. Helyes-e az alábbi modell? Képkocka renderelés Utófeldolgozás 36

Ciklus 3. Helyes-e az alábbi modell? Képkocka renderelés Utófeldolgozás Minden iterációban egy új képkocka o Mindegyikre utófeldolgozás (sokszor hányszor?) Határeset 37

Ciklus 3. Helyes-e az alábbi modell? o És így? Login Munkamenet Minden login után újabb login o és egy munkamenet? Szálakat termel a hibás implementáció 38

Termináló csomópont Helyes-e az alábbi modell? Pontokat kihirdet Jegyeket beír 39

Termináló csomópont Helyes-e az alábbi modell? Pontokat kihirdet Jegyeket beír 40

Termináló csomópont Helyes-e az alábbi modell? Pontokat kihirdet Jegyeket beír Termináló csomópont: azonnal leállítja az egész folyamatot A másik tevékenység nem fog lefutni 41

Jólstrukturált folyamatmodellek Tanulság: Jólstrukturált folyamatmodellekkel ezek a hibák elkerülhetők Üres folyamat Megengedett minták: Elemi tevékenység Alfolyamat Döntés Tevékenység Alfolyamat Ciklus Alfolyamat Alfolyamat Alfolyamat Párhuzamosság 42

Adatkezelés statikus ellenőrzése Egy eljárás két egész számot szoroz o Származtatott követelmény: Ha legalább az egyik páros, az eredmény is az o Végigkövethető a kódon Fejben végrehajtás Szimbolikus végrehajtás o Konkrét értékek helyett értékhalmazokkal hajtjuk végre a programot o Érdekes bemenetek meghatározhatóak Pl. ahol belső elágazások vannak Milyen bemenettel érhetőek el az ágak? 43

Statikus ellenőrzés: szintaxisellenőrzés Szintaktikai ellenőrzés: modellező eszközök összekötik a logikailag egymásra épülő modellelemeket Deklarálás interfészen: var clock: integer = 60 Szintaxisvezérelt szerkesztő o Szerkesztés közben hiba Couldn t resolve reference o Fejlett szerkesztőeszköz (például lehetőségek felkínálása) Kód és diagram együtt Használat modellben: after 1 s [clock>0]/ clock -= 1 Programozás: Modellezés: szerkesztés közben hibás szerkesztés közben helyes 44

Statikus ellenőrzés: strukturális helyesség Strukturális ellenőrzés: modell gráf vizsgálata Hibaminták keresése szerkesztés közben Például elérhetetlen állapot: Node is not reachable. További ellenőrzések: hiányzó kezdőállapot, holtpont, változó értékadások, stb. 45

Statikus ellenőrzés: tervezési szabályok Példa 3. Tervezési irányelvek támogatása: További szabályok adhatóak a modellhez. o Always és Oncycle: Órajelre tüzelő esemény o Tetszőleges frekvencia Tipikusan hibás működés A házi feladatban tilos az Always és Oncycle események használata. 46

Alapfogalmak Statikus ellenőrzés Tesztelés Formális verifikáció TESZTELÉS Csupán próbálgatás? 47

Modellek tesztelése Tesztbemenet Tesztvégrehajtó Teszteredmény SUT System Under Test 48

Modellek tesztelése Orákulum: elvárt eredmények előállítása és összehasonlítása Orákulum Tesztbemenet Teszteredmény SUT Valós kimenet 49

Modellek tesztelése Referencia: tesztbemenet alapján elvárt kimenet Referencia Elvárt kimenet Tesztbemenet = Teszteredmény SUT Valós kimenet 50

Modellek tesztelése példa: Yakindu állapotgép Tesztesetek Bemeneti eseménysor Elvárt akciók, események Elvárt kimenet = Teszteredmény Tesztbemenet SUT Valós kimenet 51

Modellek tesztelése példa: Yakindu állapotgép Példa teszteset: Beállítások menüben 1 és 3 perc között lehet 5 másodperc léptekkel állítani a kezdőidőt. Bemenetek Vizsgált automata Elvárt kimenet leolvasása 52

Modellek tesztelése példa: Yakindu állapotgép Példa teszteset: Beállítások menüben 1 és 3 perc között lehet 5 másodperc léptekkel állítani a kezdőidőt. 01:00 01:05 A + Gomb megnyomására 5 másodperccel nő Kezdtedben a kijelző 1 percet mutat Bemenetek Vizsgált automata 01:10 02:50 02:55 03:00 03:00 03:05 Elvárt kimenet leolvasása Tovább nem nő 53 Hibás kimenet Jelzünk a fejlesztőnek

Bemenetek ellenőrzése Öntesztelés (monitor) Hihetőségvizsgálat Bemeneti invariánsok Elfogadott/elvárt bemenetek leírása (előfeltétel) Kimeneti invariánsok Bemenet SUT Kimenet Invariáns tulajdonság: folyamatosan igaznak kell lennie 54

Bemenetek ellenőrzése Öntesztelés (monitor) Hihetőségvizsgálat Bemeneti invariánsok Elfogadható/ígért kimenetek leírása (utófeltétel) Kimeneti invariánsok Bemenet SUT Kimenet Invariáns tulajdonság: folyamatosan igaznak kell lennie 55

Öntesztelés vs. Külső tesztelés Bemenetek ellenőrzése Hihetőségvizsgálat Tesztbemenet Tesztvégrehajtó Teszteredmény Egyetlen, öntesztelő komponens Bemeneti invariánsok SUT Kimeneti invariánsok Külön tesztelő rendszer Bemenet SUT Kimenet 56

Öntesztelő program Előfeltétel: a diszkrimináns nemnegatív void Roots(float a, b, c, float &x1, &x2) { float d = sqrt(b*b-4*a*c); } x1 = (-b + d)/(2*a); x2 = (-b d)/(2*a); Utófeltétel: mindkét megoldás zérushely void RootsMonitor(float a, b, c, float &x 1, &x 2 ) { // előfeltétel float D = b 2-4 a c; if (D < 0) throw "Invalid input!"; } // végrehajtás Roots(a, b, c, x 1, x 2 ); // utófeltétel assert(a x 12 +b x 1 +c == 0 && a x 22 +b x 2 +c == 0); 57

Öntesztelő program Előfeltétel: a diszkrimináns nemnegatív void Roots(float a, b, c, valósítjuk float &x1, meg. &x2) { Oka: hibás használat. float d = sqrt(b*b-4*a*c); } Exception (kivétel): A normálistól eltérő, váratlan helyzet, aminek kezelését máshol x1 Assert = (-b (feltételezés): + d)/(2*a); x2 Hibás = (-b állapot, d)/(2*a); aminek kezelésére a kód nincs felkészítve. Oka: hibás implementáció vagy futásidejű hiba. Utófeltétel: mindkét megoldás zérushely void RootsMonitor(float a, b, c, float &x 1, &x 2 ) { // előfeltétel float D = b 2-4 a c; if (D < 0) throw "Invalid input!"; } // végrehajtás Roots(a, b, c, x 1, x 2 ); // utófeltétel assert(a x 12 +b x 1 +c == 0 && a x 22 +b x 2 +c == 0); 58

Öntesztelés Yakinduban Párhuzamosan fut a SUT és a monitor régió o Jó eset: Érvényes bemenet (valid) Helyes üzemmód A házi feladatban a beállítás és játék között válthatunk. SUT 59

Öntesztelés Yakinduban Párhuzamosan fut a SUT és a monitor régió o Jó eset: o Rossz eset: Érvényes bemenet (valid) Hibás bemenet InvalidInput Helyes üzemmód Hibás kimenet Error SUT 60

Öntesztelés Yakinduban Párhuzamosan fut a SUT és a monitor régió o Jó eset: o Rossz eset: Érvényes bemenet (valid) Hibás bemenet InvalidInput Helyes üzemmód Hibás kimenet Error Exception SUT Assert 61

Modellek tesztelése A modell futtatása: szimuláció o Adott bemenetekre vizsgált viselkedés Teszteset: 1. Tesztbemenet pl. értéktartomány közepe és két széle 2. Elvárt kimenet Milyen bemenetekkel teszteljünk? 62

Fedettség Adott tesztkészlet esetén a fedettség a tesztek futtatása alatt érintett részek aránya a modellben. o Állapot lefedettség (állapotgépben): érintett állapotok összes állapot o Átmenet lefedettség (állapotgépben): érintett átmenetek összes átmenet o Utasítás lefedettség (vezérlési folyamban): érintett tevékenységek összes tevékenység 63

Példa: Felhőalapú adattárolás elvet elvet írás Szinkron írás Piszkos Ütközés [Szerver.Szinkron] szinkronizál [Szerver.Frissült] szinkronizál Felhő alapú adattárolást modellezünk, egyetlen állományra szorítkozva. A kliens írhatja az állományt, szinkronizálhat a szerverrel és elvetheti a helyi módosításokat. A szerveren tárolt változat verziójától függően a szinkronizálás ütközést is okozhat, ha más is módosította az állományt. 64

Példa: Felhőalapú adattárolás 3 állapot 6 átmenet elvet elvet írás Szinkron írás Tesztkészlet fedése: Állapotfedés: 66% Átmenetfedés: 33% Piszkos Ütközés [Szerver.Szinkron] szinkronizál [Szerver.Frissült] szinkronizál Tesztkészlet fedése: Állapotfedés: 100% Átmenetfedés: 66% 1. Teszteset: a) írás b) elvet 2. Teszteset: a) írás b) Szerver = Frissült c) szinkronizál d) elvet 65

Példa: Felhőalapú adattárolás 3 állapot 6 átmenet elvet elvet írás Szinkron írás Tesztkészlet fedése: Állapotfedés: 100% Átmenetfedés: 100% [Szerver.Szinkron] szinkronizál Piszkos [Szerver.Frissült] szinkronizál 3. Teszteset: a) írás b) Szerver = Frissült c) szinkronizál d) írás e) Szerver = Szinkron f) szinkronizál Ütközés 66

Fedettség 1. Teszteset után: Állapotfedés: 2/3=66% Átmenetfedés: 2/6=33% 2. Teszteset után: Állapotfedés: 3/3=100% Átmenetfedés: 4/6=66% 3. Teszteset után: Állapotfedés: 3/3=100% Átmenetfedés: 6/6=100% 67

Tesztelt modellek használata Szoftvertesztelés: o (100%-osan fedő) tesztkészlet újrafelhasználása o Fedő tesztbemenetek (bemenet) o Modell által adott kimenetek (elvárt kimenet) Monitorozás: a modell szimulálása a szoftver futtatása mellett o Azonos bemenetek a modellnek és a programnak o Kimenetek összevetése hibadetektálás Logelemzés: o Monitor futtatása naplózott bemenetek/kimeneten 68

Tesztelt modellek használata Szoftvertesztelés: o (100%-osan fedő) tesztkészlet újrafelhasználása o Fedő tesztbemenetek (bemenet) o Modell által adott kimenetek (elvárt kimenet) Monitorozás: a modell szimulálása a szoftver futtatása mellett Futtatás o Azonos bemenetek a modellnek és a programnak közben o Kimenetek összevetése hibadetektálás Logelemzés: o Monitor futtatása naplózott bemenetek/kimeneten 69 Futtatás előtt Futtatás után

Tesztdokumentáció A teszteseteket és teszteredményeket is dokumentálni kell! o Mit vizsgál? o Milyen követelmény alapján? o Milyen bemenettel? o Futott-e már? o Ha igen, sikeres volt? Nyomonkövethetőség: o Teszteletlen kódrészletek és ellenőrizetlen követelmények felderítése o Teszteredmények nyilvántartása 70

Tesztek fajtái, szakaszai Modultesztelés: egy komponens leválasztása és tesztelése Integrációs tesztelés: több komponens együttes tesztelése Rendszertesztelés: a teljes rendszer együttes tesztelése Regressziós tesztelés: változtatások utáni (szelektív) újratesztelés Modul-tesztelés Integrációs tesztelés Rendszertesztelés Regressziós tesztelés 71

Alapfogalmak Statikus ellenőrzés Tesztelés Formális verifikáció FORMÁLIS VERIFIKÁCIÓ Modellellenőrzés 72

Formális verifikáció Formális verifikáció: modellek/programok helyességének bizonyítása matematikai eszközök segítségével o Bővebben lásd: Formális Módszerek MSc tárgy Eszközök: o Modellellenőrzés Lehetséges viselkedések kimerítő vizsgálata o Automatikus helyességbizonyítás Axiómarendszerek alapján automatikus tételbizonyítás o Konformancia vizsgálatok Megfelelőség ellenőrzése modellek között 73

Modellellenőrzés Modellellenőrzés: a modell lehetséges viselkedéseinek kimerítő (teljes) vizsgálata adott követelmények alapján o Hibás működések keresése ellenpélda Tesztelés Szúrópróbaszerű Elvárt kimeneteket ellenőriz Kisebb számítási igényű Nem bizonyítóerejű Modellellenőrzés Kimerítő/teljes Állapotok sorozatát ellenőrzi Nagy számítási igényű Formálisan bizonyít 74