Általános regressziós tesztelő módszer modellalapú fejlesztéshez
A regressziós tesztelés célja, hogy meggyőződjünk arról, hogy a korábban működő funkciók az elvégzett módosítások mellett is működőképesek maradnak. Ezt általában a meglévő tesztkészlet ismételt futtatásával érjük el. A rendszer méretétől és a tesztektől függően ez sok időt vehet igénybe, valamint olyan részeit is ellenőrizheti a rendszernek, ami nem is módosult.
Ennek optimalizálására már léteznek módszerek, ilyen például a tesztkészlet minimalizálás, a tesztkiválasztás, illetve a teszt prioririzálás. Továbbá léteznek eszközök is, melyek ezt elvégzik, bár általában ezek egy programnyelvre működnek.
Modellalapú szoftverfejlesztés esetén azonban a rendszerrel kapcsolatos információt modellekben tároljuk, amikből előállítható forráskód, tesztkód, sőt akár a dokumentáció is. Mivel a modell, mint központi elem jelenik meg a fejlesztés során, így a regressziós tesztelés is elsősorban a modellen végzendő el.
Példaképp tekintsünk egy olyan esetet, amikor modellek alapján generálunk teszteseteket a fejlesztendő rendszerhez. Ilyenkor a rendszerrel kapcsolatos változások a modellekben jelenik meg. Regressziós tesztelés során e változások alapján el kell tudnunk dönteni minden tesztesetről, hogy érdemes-e újrafuttatni. Bár a probléma hasonló a klasszikus, forráskód alapú regressziós teszteléshez, modellalapú rendszerrel kapcsolatban lényegesen kevesebb kutatás található az irodalomban. Ezért a célom egy olyan általános regressziós tesztelő módszer megalkotása, amely többféle bemeneti modellel is működik.
A fenti követelmények és problémák kezelésére:
1. definiáltam egy általános modellt, amely leírja a tesztkiválasztás (RTS) problémáját,
2. bemutattam, hogy a már meglévő optimalizálási algoritmusok módosításával a modellekhez tartozó tesztesetek csoportosíthatóak (újrafuttatandóság szempontjából) egy-egy módosításhoz,
3. kidolgoztam egy módszert, amelyben a rendszer- és a tesztmodellek megfeleltethetőek ennek az általános optimalizációs modellnek.
A módszer kiértékelése érdekében implementáltam azt egy Eclipse alapú prototípusban. Az eszköz képes a változtatások alapján kategorizálni a teszteseteket, illetve kiválasztani közülük néhányat, melyekkel elérhető a maximális tesztfedettség.
Továbbá alkalmaztam a módszert egy esettanulmányban, amelyben a bemeneti modellt a mobil robotok fejlesztése során használt kontextus és konfigurációs modellek jelentik.
A modellbemenetek mellett, a módszer általánosságát hangsúlyozandó, elkészítettem egy kódfedési jelentés (code coverage report) és az optimalizációs modell közötti leképezést is.
szerző
-
Molnár Gábor
Mérnök informatikus szak, mesterképzés
mesterképzés (MA/MSc)
konzulens
-
Dr. Micskei Zoltán
egyetemi docens, Mesterséges Intelligencia és Rendszertervezés Tanszék