Párhuzamos program unit-tesztelése

OData támogatás
Konzulens:
Dr. Dudás Ákos
Automatizálási és Alkalmazott Informatikai Tanszék

A párhuzamos programok egyre inkább megkerülhetetlenek, a modern hardverek kihasználásához és a legtöbb alkalmazáshoz ma már szinte elengedhetetlen, hogy a program valamilyen szinten párhuzamos legyen. Ennek ellenére a legtöbb fejlesztőeszköz nem támogatja a párhuzamosságból eredő egyedi problémák hatékony megoldását.

Ilyen probléma a párhuzamos programok unit-tesztelése is, ahol elvárás lenne, hogy egy teszt többször, különböző ütemezések mellett is lefusson. A diplomaterv ezt a problémát mutatja be és nyújt egy lehetséges megoldást egy konkrét, Java programokhoz megvalósított eszközben.

Különböző ütemezések heurisztikus előidézésére megoldás olyan utasítások beszúrása a kódba, amelyek a szálakat véletlenszerű mértékben lassítják. A beszúráshoz a kódot instrumentálom. A beszúrások helyeinek meghatározását a Java Memory Model alapján vizsgáltam.

Annak megállapítására, hogy egy tesztet hányszor kell lefuttatni, párhuzamos fedési metrikákat használok. Ezek alapulhatnak párhuzamos eseményeken vagy párhuzamos hibákat detektáló algoritmusokon. Több metrikát is bemutatok és implementáltam.

Az eszköz egy Java Agent-tel módosítja a tesztelt programot, és a JUnit 4 tesztelési keretrendszerrel együtt használható. A hatékonyságáról méréseket készítettem, amelyek alapján elmondható, hogy a megoldás hatékonyan használható párhuzamos hibák felfedésére.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.