Regisztráció és bejelentkezés

Tesztgenerálás részlegesen modellezett állapotalapú szoftverkomponensekhez

Beágyazott szoftverkomponensek fejlesztése során a komponensek (elvárt vagy tényleges) működését pontosan és szemléletesen leírhatjuk modellek használatával. Állapotalapú komponensek esetében a mérnökök legtöbbször állapotgépeket használnak erre a célra. A modell célja, hogy egy magasabb absztrakciós szinten mutassa meg, hogyan kellene a komponensnek működnie. Ha a modell kellően precíz és teljes, felhasználható a fejlesztési folyamat támogatására, például kód, vagy akár tesztkészlet generálásával. Ezek a technikák jelentősen gyorsabbá, olcsóbbá és hatékonyabbá tehetik a fejlesztést, azonban aprólékos, lehetőleg formális modellezést igényelnek a tervező mérnökök részéről.

A gyakorlatban azonban jóval egyszerűbb és átláthatóbb egyes modellelemeket rövid szöveggel reprezentálni, melyek pontos megvalósítását a végleges kódban implementálják majd a fejlesztők. Állapotgépeknél ez jellemzően az őrfeltételeket és akciókat érinti, míg az állapotokat és állapotátmeneteket többnyire pontosan leírja a modell. Ebben az esetben a kódgenerátorok jellemzően a fő logikát megvalósító kódot készítik el, ahol a szövegesen specifikált elemek a kódban egy függvénycsonkként jelennek meg, amit a fejlesztők a megfelelő módon implementálnak. Ez a fajta részleges modellezés jól kombinálható a kódgenerálással, azonban jelentősen megnehezíti a tesztgenerálást, mivel a modell önmagában nem értelmezhető, csak a kitöltött függvények kódjával együtt.

A munkámban egy olyan módszert dolgozok ki, amely megkísérel választ adni a fentebb vázolt problémára. A megoldás három fő lépésre osztható: 1) Utak generálása a tesztekhez az állapotgép modell alapján (adott fedettségi metrikára optimalizálva); 2) Kódrészletek generálása minden egyes úthoz, melyek tartalmazzák az összes kódot, ami az út végrehajtása során lefutna; 3) Hagyományos tesztgeneráló eszköz segítségével konkrét tesztesetek generálása a kódrészletekhez.

A modellből való útgenerálás és azokra építve a kódrészletek kialakítása lehetővé teszi, hogy a fő problémát kiküszöböljük: összekötjük a kódot, ami az őrfeltételeket írja le a hiányos modellel. A konkrét tesztesetek létrehozásához egy ún. "concolic" tesztgenerátor eszközt használok, ami információt gyűjt a lefutást befolyásoló változókról, majd egy megoldó segítségével konkrét értékeket ad nekik az egyes tesztesetekben.

A dolgozatban bemutatom az általános megoldást, és ezen felül egy AUTOSAR-specifikus prototípus implementációt is. Ezt felhasználva demonstrálom a módszer működését egy autóipari esettanulmányon keresztül. Az esettanulmányban egy AUTOSAR-alapú környezetben értelmezendő szoftverkomponens belső viselkedését leíró részleges állapotgép-modelljét vizsgálom. A fentebb leírt módszert alkalmazva bemutatom, hogy a megközelítés alkalmas tesztesetek generálására az AUTOSAR szoftverkomponenshez.

szerző

  • Seres Soma
    Mérnök informatikus szak, alapképzés
    alapképzés (BA/BSc)

konzulens

  • Dr. Molnár Vince
    Adjunktus, Méréstechnika és Információs Rendszerek Tanszék

helyezés

III. helyezett