Negyedik generációs nyelvek

Negyedik generációs nyelveken (Magic / uniPaaS) készített alkalmazások tesztelését és tesztelés hatékonyságnak mérését és javítását támogató eszközrendszer kifejlesztése - GOP-111-11-2011-0039

Negyedik generációs nyelveken (Magic / uniPaaS) készített alkalmazások tesztelését és tesztelés hatékonyságnak mérését és javítását támogató eszközrendszer kifejlesztése

Kedvezményezett: Szeged Software Zrt. (6727 Szeged, Irinyi u. 1.), Szegedi Tudományegyetem (6720 Szeged, Dugonics tér 13., 6722 Szeged, Tisza Lajos krt. 103.)
Közreműködő szervezet: Magyar Gazdaságfejlesztési Központ Zrt. (1539 Budapest, Pf. 684)
Irányító hatóság:Nemzeti Fejlesztési Ügynökség (1077 Budapest, Wesselényi u. 20-22.)

Pályázat azonosítója: GOP-111-11-2011-0039
Projekt összköltsége: 194 118 120 Ft
Támogatás összege: 133 158 240 Ft
Támogatás intenzitása: 68,5965 %

Projekt kezdete: 2011.12.01.
Projekt befejezése: 2014.05.31.

A szakirodalom és gyakorlati tapasztalatink szerint is a teljes szoftverfejlesztési ráfordítás közel felét a tesztelési költségek jelentik. A Magic-ben készített szoftverek fejlesztése és alkalmazása során a funkcionális tesztelés az egyetlen módja annak, hogy a fejlesztő, illetve a felhasználó meggyőződjön arról, hogy szoftvere a gyakorlatban is megfelelően működik-e. A manuálisan elvégzendő funkcionális tesztelés nagyon költséges. Továbbá a funkcionális tesztelés a Magic-ben készült alkalmazások jellegéből (nagy adatbázisokat használ, „ipari” környezet) adódóan sokszor csak a felhasználás helyszínén, éles környezetben oldható meg, amely megköveteli, hogy a tesztelés lefedettségét még a tesztelés minél rövidebb idő alatt és minél hatékonyabban történjen. A fejlesztési, tesztelési költségek drasztikusan csökkenthetők, ha a tesztelés lefedettségét még a teszt fázisában objektíven mérni tudnánk. A mérés azonban önmagában nem oldja meg a rossz minőségű (redundáns és/vagy hiányos) tesztelés problémáit, az igazi áttörés az lenne, ha a tesztelés lefedettségét és hatékonyságát is jelentősen javíthatnánk. Mindez növelné a kiadott szoftver minőségét, megbízhatóságát, amely kiemelten fontos az olyan működés-kritikus területeken, ahol a Magic alkalmazásokat jellemzően használják. Piacelemzők szerint azok a szervezetek, amelyek a tesztelés támogatására nem használnak hatékony módszereket már a közeljövőben kiszorulnak a szoftverfejlesztési piacról. Igazán hatékony megoldást a fejlesztő környezetek sajátosságai miatt csak a nyelv specifikus megoldások adnak.
Jelenleg a piacon nincs olyan eszköz, amely a Magic/uniPaaS-ra ezeket a feladatokat képes lenne ellátni. Az elérhető eszközök egyrészt 3GL-es nyelvekhez kerültek kifejlesztésre, illetve általában a szélesebb körben használt, általános célú környezetekre íródtak és sok esetben ott is csak részfeladatokat (pl. teszt menedzser feladatok) fednek le.

A fent részletezett piaci igények és piaci rés szerint a projekt keretében kifejlesztendő eszköt alapvetően két területre ad megoldást kifejezetten Magic/uniPaaS környezetre:

- a tesztelés lefedettségének objektív mérése dinamikus és statikus forráskód elemzési módszerekre alapozva

- lefedettség javítása (szemi) automatikus módszerekkel (tesztszkript és teszteset generálás, valamint teszt input javítása)

A lefedettség mérésekor vizsgáljuk, hogy egy tesztelési fázisban az alkalmazás „kódjának” hány %-át futtatták le a tesztelők. A le nem tesztelt részek, vagy a redundáns tesztek megjelölésével komoly minőségjavulás, illetve költségcsökkentés érhető el. A fejlesztendő eszköz képes lesz szofisztikált elemző algoritmusok meghajtására, amelyekkel a lefedettségi adatok mérhetők. Ehhez a Magic alkalmazás statikus elemzéséből kell megkapni a lehetséges futtatási útvonalakat (eljárás, esetleg branch szinten), továbbá a dinamikusan előállított futási tracekből ki kell nyerni a tesztelés során ténylegesen bejárt utakat.
A teszteset generálás során célzottan olyan tesztszkripteket generálunk, amelyekkel a lefedettségi értékek javíthatók. A feladatunk itt egy olyan eszköz kifejlesztése, amely képes automatikusan szkripteket generálni. A teszteset generálás mellett fontos a tesztinput generálás is, ez határozza meg, hogy a tesztautomatizáló milyen adatokkal fogja az adott felületet tesztelni. A tesztautomatizáló modul jól kezelhető Python szkriptek formájában támogatja a szkripteket, ami úgynevezett data-driven tesztelést tesz lehetővé, azaz a tesztelés lépéseitől leválaszthatóak az inputként adott adatok. A szkriptek és inputok generálása az alkalmazás statikus elemzése során épített CallGraph, Control Flow, Data Flow Graph alapján történik. A cél, hogy a grafikus felület tesztelését teljesen automatizálni lehessen.
A cég tervei szerint a saját fejlesztési és karbantartási munka javítása mellett, a világszinten is újdonságnak számító terméket a hazai és nemzetközi „Magic társadalom” számára is bemutatja. A projekt eredményeként 2 új K+F munkahely jön létre.

[Read more in English]