Regisztráció és bejelentkezés

Szimbolikus végrehajtás alapú tesztgenerálás támogatása és analízise

Napjaink komplex szoftverrendszerei újabb és újabb kihívások elé állítják a mérnököket. A tervezés és fejlesztés során egyre nagyobb szerepet kap az ellenőrzés, hiszen nem csak a szoftverek mérete növekszik, hanem a bennük maradó hibák száma is. A minőség javulásának és a hibák kiküszöbölésének egyik módja – többek között – a szoftverek mélyreható tesztelése a fejlesztés során. Az ismert fejlesztési modellek, metodikák túlnyomó többsége tartalmaz tesztelést magában foglaló részeket, amelyek a fenti igényeket hivatottak kielégíteni, azonban a tesztek megfelelő kiválasztása meglehetősen összetett feladat. Az automatikus tesztgenerálás megoldást jelenthet a probléma bonyolultságának enyhítésére.

Tesztek automatikus generálására meglehetősen sok technika áll rendelkezésre, ezek kiindulási pontja lehet egy működést leíró modell vagy maga a forráskód. A forráskód alapú módszerek közé sorolható a dinamikus szimbolikus végrehajtás, amelynek központi eleme a kód szimbolikus értékekkel történő végrehajtása, és annak konkrét futásokból nyert kényszerekkel való finomítása. A komplex technika hatékonyan deríti fel a bonyolult szoftverek lehetséges lefutásait, és generál tesztbemeneteket a kód ellenőrzéséhez. Az iparban történő széleskörű használatot azonban számos esetben akadályozza, hogy a feladat komplexitása miatt nem jut eredményre az algoritmus, és a mérnök nem látja át ennek okát. Ugyanakkor további hátráltató tényező lehet, hogy nincs részletes információ arról, hogy a generált tesztbemenetek a szoftver pontosan mely lefutásait fedik le. A probléma tehát a technika elméleti háttere és a mérnöki használat során felmerülő igények összeköttetésének hiányából fakad.

Dolgozatomban bemutatott munkám célja, hogy közelebb hozza egymáshoz a dinamikus szimbolikus végrehajtás technikáját és a mérnöki gyakorlatot azáltal, hogy kiegészítésekkel támogatom a tesztgenerálás hatékonyabb áttekintését. A dolgozatomban javasolok egy vizualizációs módszert, amely egy bejárási fa csomópontjaira képezi le a szimbolikus végrehajtás egyes lépéseit, megjelölve őket a hozzájuk tartozó metainformációkkal (pl. a forráskódban lévő helyük). A módszer során a bejárás áttekinthetőségének növelése érdekében 1) felbontom az egyes lefutásokhoz tartozó útvonalkényszereket, 2) osztályozom az egyes lefutási útvonalakat a generált teszthalmaz szempontjából, és 3) azonosítom, hogy egy adott lefutás hol vezet ki a tesztelt komponensből. Ezt felhasználva mutatok egy automatikus módszert, amely során a komplex, elakadást okozó hívások absztrakt értékekre cserélődnek, ami további lefutásokat biztosíthat, ezáltal újabb tesztbemeneteket eredményezhet.

A mérnöki alkalmazhatóság alátámasztásához a módszert a Microsoft Pex eszközének kiegészítéseként megvalósítottam. Az elkészült keretrendszer használhatóságát és korlátait esettanulmányokon keresztül mutatom be.

szerző

  • Honfi Dávid
    mérnökinformatikus
    nappali

konzulensek

  • Dr. Micskei Zoltán
    egyetemi docens, Méréstechnika és Információs Rendszerek Tanszék
  • Vörös András
    tudományos segédmunkatárs, Méréstechnika és Információs Rendszerek Tanszék

helyezés

Morgan Stanley II. helyezett