Automatizált tesztelés

A cikkben az automatizált tesztvégrehajtásról, annak előnyeiről és hátrányairól lehet olvasni. Szó lesz arról, hogyan építsünk fel hozzá megfelelő tesztkörnyezetet, milyen kisebb-nagyobb problémákba ütközhetünk. Valamint hogyan tegyük egyszerűbbé ezen rendszer kezelését, és hogy milyen alternatív lehetőségek állnak rendelkezésünkre.

Munkám során az orvosok számára fejlesztett platformot, és az arra készített applikációkat tesztelem. Az orvosi szoftverfejlesztés felelősségteljes és szabályozott mivolta miatt a szoftver tesztelése során kiemelt körültekintéssel kell eljárni, valamint gyakori, hogy ugyanazokat a teszteket többször is lefuttatjuk a lehető legtöbb tesztkonfiguráción és verzión. A kritikus esetek (performance, stress, database, network…) futtatása így rengeteg időt vesz igénybe, ezért döntöttünk ezeknek a teszteknek az automatizálása mellett.

Ebben a cikkben az automatizált tesztvégrehajtást fogom taglalni. Olvashatunk majd az előnyeiről, hátrányairól. Szó lesz arról, hogyan építsünk fel hozzá megfelelő tesztkörnyezetet, milyen kisebb-nagyobb problémákba ütközhetünk. Valamint hogyan tegyük egyszerűbbé ezen rendszer kezelését, és hogy milyen alternatív lehetőségek állnak rendelkezésünkre.

Általában az automatizált tesztelésről

Ha az automatizált tesztelést választjuk a manuálissal szemben, érdemes feltenni magunknak néhány kérdést: mit szeretnénk tesztelni, ezzel milyen követelményeket (requirements) érintünk, és hogy ezek alapján mely teszteket kell majd beválogatni futtatásra? Teljes vagy részleges automatizálásra van szükségünk? Hány gépen fut majd párhuzamosan a tesztelés, és hogyan szinkronizáljuk a működésüket?   Melyek a szükséges hardver, szoftver és humán erőforrások? Vagy egyszerűen mindössze egy-két „kényes” teszt lefuttatásához van szükségünk a rendszerre, mivel azok manuálisan nem lefuttathatóak és/vagy magas költségűek?

Az automatizálásnak nagy hasznát vehetjük továbbá regressziós tesztelés esetén is, főként akkor, ha nagy számú, gyakran lefuttatandó tesztünk van, illetve ha nagy számú bemenő vagy egymástól különböző tesztadattal kell dolgoznunk.   Előnyei közé sorolható még, hogy könnyebben dokumentálható, és hiba esetén nagy valószínűséggel reprodukálható. Általánosságban véve elmondható, hogy amennyiben hosszútávon gondolkodunk, az esetek döntő többségében a tesztek automatizációja a manuális teszteléshez képest sokkal olcsóbb és hatékonyabb megoldás.

Természetesen megvannak a hátrányai is, hiszen ettől még a tesztek elvégzéséhez szükséges idő nem feltétlenül csökken. Nem minden teszt automatizálható, valamint figyelembe kell vennünk a járulékos költségeket is (licencek, implementáció, emberek továbbképzése, szkriptek folyamatos fejlesztése), és az egészségügyi szektorban szükséges teszteszköz(tool)-validációt. Általános managementhibának számít az is, hogy egy jól automatizált tesztrendszer beszerzése után idővel csökkentik a tesztelőcsapat létszámát. Ez egy rendszerhiba esetén végzetes lehet, és csak magas költségek árán tudjuk pótolni a veszteségeket (határidőre nem verifikált illetve validált termék, rövid idő alatt új emberek felvétele és betanítása). Mindig tartsuk meg azt a létszámminimumot, amivel egy nagyobb hiba esetén is megfelelően tudjuk kontrollálni a helyzetet.

  Ha pedig nem szeretnénk saját embereket továbbképezni, pár perces böngészés után találunk az interneten olyan cégeket, amelyek viszonylag rövid idő alatt, alapos felmérés után elkészítik a számunkra megfelelő rendszert, és szükség esetén tovább is fejlesztik azt.

Összességében tehát elmondható, hogy a tesztfuttatás módjának körültekintő kiválasztása nagyon fontos, hiszen egy jó tesztelési stratégia alkalmazásával sok pénzt, időt és energiát takaríthatunk meg, ezzel értelemszerűen növelve hatékonyságunkat.

 

Autotesztkörnyezet – hogyan érdemes?

A legegyszerűbb autotesztkörnyezet kialakításához az alábbi főbb komponensekre van szükség: tesztkonfiguráció manager (test CM) és a teszteket végrehajtó elemek. Természetesen a környezet tetszés szerint bővíthető egyéb, a tesztelést segítő komponensekkel.

A test CM feladata a tesztek végrehajtásának vezérlése, azaz hogy az adott tesztekre konfigurálja a teszteket végrehajtó komponenseket, majd átadja nekik a futtatandó tesztek listáját. Ezek a listában szereplő teszteket lépésenként végrehajtják, folyamatosan naplóznak, valamint különböző fájlokban dokumentálják az eredményeket. Ezek az eredmények a tesztkonfiguráció managerre kerülnek vissza, ahol újabb futtatás indításakor archiválódnak, ezzel könnyítve a folyamatos dokumentálást és a historikus adatelemzést.

Problémák és megoldások - elosztott rendszerek

Napjainkban gyakori eset, hogy a tesztelendő rendszer számos hálózaton összekötött számítógépből áll, úgynevezett elosztott rendszert alkot. Ez esetben érdemes egy olyan frameworköt használni, ami lehetőséget biztosít ezen elosztott környezetben történő tesztfuttatásra. Egy egyszerű megoldás, ha a test CM-en egy webszerver fut, ahonnan a grafikus felület is elérhető. A futtatáshoz szükséges fájlokat (például egy teszteseteket tartalmazó állomány) érdemes ezen a webszerveren tárolni a könnyű elérhetőség végett. Hatékonyság szempontjából ez nagyon fontos, hiszen a rendszer innen letöltheti, majd továbbküldheti a teszteket végrehajtó komponenseknek a teszteléshez szükséges fájlokat.

Érdemes két külön programra bízni a tesztvégrehajtási problémát: kell egy, amely a teszt konfiguráció managerre kerül és a tesztfuttatás vezérléséért felelős, valamint szükségünk van egy, a tesztek futtatását elvégző programra, amely az összes tesztet végrehajtó komponensen megtalálható, és a beérkező tesztfuttatási kérésekre vár.

Problémák és megoldások - szkriptek

Az automatikus tesztszkriptek karbantartási költségei magasak, ezért a teszteket a lehető legkisebb komponensekre bontsuk fel, ezzel csökkentve a tesztrendszer fejlesztési költségeit.

Ezzel a körültekintő és előrelátó tervezéssel nagyon sok fejfájást spórolhatunk meg a tesztelő csapatnak és a fejlesztőknek is, hiszen a globális változókat (mint például egy loginhoz tartozó jelszót) elég egy ponton átírnunk, így ehhez hasonló változások esetén nem lesz szükség a tesztesetek egyenként történő átírására.

GUI

Azon túl, hogy a grafikus felületen lehetőséget biztosítunk a futtatni kívánt tesztek kiválasztására, nem hagyhatjuk figyelmen kívül a munkavégzés szempontjából hasznos információk megjelenítését sem. Ilyenek lehetnek például a tesztfuttatás indítójának kiléte, a teszt ideje, eredménye, lefedettsége, illetve minden ehhez kapcsolódó, valóban releváns adat.

A rengeteg adat szűréséhez mindenképpen fejlesszünk filtert, amivel akár dátumra, a tesztelő kilétére is szűkíthetünk.

Biztonsági megfontolásból az egyszerű felhasználók mellé javasolt egy tágabb jogkörrel rendelkező manager felhasználó létrehozása is, melynek joga van karbantartani a tesztek eredményeit, a futtatandó teszteseteket, stb.

Valamint mindenképpen kell egy dashboard felület is, így a vezetőknek, fejlesztőknek screenshotokat, eredményeket, grafikonokat tudunk mutatni az aktuális és régebbi állapotokról, eredményekről. Plusz funkció lehet például az eredményekből pdf, Excel stb. formátumok generálása, és azok közvetlen továbbíthatósága a managereknek, ezzel biztosítva az állandó információáramlást.

Egyéb megoldások

Célszerű használni különböző automata, félautomata teszteszközöket, melyekkel a tesztelés során ismétlődő részeket fel tudunk venni, és az adott pillanatban visszajátszani. Ezek az eszközök rögzített adatértékekkel dolgoznak, ez lehet például input érték, ablak koordináta, illetve megadott, vagy felvett idő.

Támogatják a több gépes tesztelést is, azaz az eszközök több kliensen futnak egyszerre, így lehetőség nyílik a párhuzamos tesztelésre. További előnyük, hogy ezekhez általában elég a licencet megvásárolni, viszont a betanuláshoz szükséges idő lassíthatja a bevezetését, ezzel mindenképpen számolnunk kell.

Bízom benne, hogy ezzel a rövid áttekintéssel sikerült átfogóbb képet nyújtanom az automatizált tesztelésről, a tervezéstől a kivitelezésig tartó folyamatról és az eközben felvetendő kérdésekről.

Szerző:
Horváth Nóra

<< Vissza