Taszktesztelő eszköz fejlesztése

Az elmúlt két hónapban egy taszktesztelő fejlesztése volt a feladatom, mely projekt-független fehérdobozos teszteszközt biztosít a felhasználó számára unit-szinten történő teszteléshez. Egy korábban fejlesztett keretrendszert vettem át, melyet további modulokkal egészítettem ki.

Unit-szinten történő tesztelésre alkalmas eszköz eddig is rendelkezésre állt, azonban csak projekt-specifikusan volt használható. A fent említett projekt-függetlenség a sok beégetett paraméter miatt nem volt elérhető.

A projekt-független felület ebben az esetben azt              jelenti, hogy a tesztkörnyezet forráskódja nem tartalmaz beégetett paramétereket (például elérési útvonalakat). Egy adott teszt futtatásához szükséges, projektre jellemző paramétereket a felhasználó által szerkesztendő konfigurációs fájlok tartalmazzák. Ezekben a fájlokban kerülnek meghatározásra a bemeneti fájlok, a tesztfuttatáshoz szükséges függőségek, teszteredmények célmappájának elérési útvonalai és egyéb elérési útvonalak. Ez azért hasznos, mert nem csak egy porjektnél használható a teszteszköz, hanem a cégnél párhuzamosan futó különböző projektek forráskódjai egyazon teszteszközzel tesztelhetőek.

Tesztfuttatás első lépéseként a teszteszköz a fent említett konfigurációs fájlokat felolvassa és az ebben meghatározott paraméterek alapján építi föl a környezetet, melyben a teszt fut. A tesztkeretrendszer Perl nyelven íródott, melynek nagy előnye a könnyen használható fájlkezelés és a reguláris kifejezések.

A keretrendszer egy olyan tesztkörnyezetet épít fel, melyben a valós működési környezetéből kiszakítva, egy szimulált környezetben futtatjuk a tesztelni kívánt taszkot. Ennek előnye, hogy a taszkok egymástól való függőségeit megszűntetve tudunk egy adott problémára koncentrálni. Hátránya azonban, hogy az eredeti környezet hatása is okozhat problémákat egy adott taszk működésében. Ezért nem elég taszk-szinten tesztelni, hanem ezután egy magasabb absztrakciós szinten is tesztelés alá kell vetnünk a környezetünket, mely során megbizonyosodhatunk arról, hogy a rendszerünk építőköveiként szolgáló taszkok nem csak egyenként, de együtt is helyesen, a követelményeknek megfelelően működnek.

A tesztfuttatáshoz szükséges generált fájlok létrehozását template fájlok segítik. A template fájlok egyszerű szöveges fájlok melyekben a generálni kívánt fájl tartalmát tároljuk. Ezek a template fájlok továbbá tartalmaznak speciális kulcsszavakat is. Ezek a kulcsszavak azért szükségesek, hogy generálás során őket a futtatott tesztre specifikus adatokkal kicseréljük. A Perl nyelvben ez a csere egyetlen sorral megvalósítható.

A teszteredmények webes felületen jeleníthetők meg. Itt egymás mellett megjelennek az elvárt és a teszt kimeneti eredményei, melyből egyértelműen látszik , hogy melyek azok a pontok, ahol a teszt elbukott. Az elvárt eredményeket a felhasználónak kell manuálisan megírni a követelmények alapján.

A teszteszköz felhasználható szerveren történő futtatásra, melynek nagy előnye, hogy regressziós tesztelés is végezhető.

 

Vezsenyi Bálint