Menü Bezárás

Windows asztali alkalmazások tesztelésének automatizálása

Az automatizált tesztek futtatásának előnyei minden szoftvertesztelő számára láthatóak. Az így készült tesztkészletek alkalmasak alkalmazások funkcióinak gyors tesztelésére. Gyakorlatilag egy hatékony konzisztencia ellenőrzést kell megvalósítaniuk. A funkcionális teszt részbeni automatizációjának köszönhetően elkerülhető a tesztelés repetitív feladatokból álló része, mindamellett, hogy teszteléshez szükséges időablak mérete drasztikusan redukálható. Tipikusan ilyen tevékenység az űrlapok beküldése vagy fájlok tömeges feltöltése. A célterület és a tesztelendő alkalmazás funkcionalitása okán korlátokba ütközhetünk. Korlátot azonban az egyes platformok speciális jellege is létrehozhat. A Windows asztali alkalmazások automata tesztelése kihívást rejtő feladat, kiváltképp ingyenes segédalkalmazásokkal, keretrendszerekkel dolgozva. Ez a cikk a Windows asztali alkalmazások black-box módszertannal való tesztelésének lehetséges megoldásait járja körül – bemutatva a feladathoz rendelkezésre álló eszközöket – mind az ingyenesen, mind üzleti csomagban hozzáférhetőeket. Két csoportra oszthatóak az eszközök, felhasználási célterület szerint megkülönböztetünk white-box és black-box teszthez alkalmasakat. Azonban balról jobbra az átjárhatóság bizonyos köztes megoldásokkal részben biztosítható, amire a cikkben példát is hozok.

A Windows asztali alkalmazások csupán egy gyűjtőfogalom, ami számos technológiát foglal magában. Ezek közti választás gyártói oldalról egy kulcsfontosságú része az úgynevezett “vendor lock-in” stratégiának is. A black-box teszteléshez használható eszközöknél az első lépés a tesztelendő alkalmazás és a teszteszköz kompatibilitásának vizsgálata. Elmondható, hogy nem létezik mindig működő recept a Windows alkalmazások tesztelésére, nincsenek olyan jól bevált univerzális eszközök, mint amik a webes alkalmazások tesztelésének eszköztárában szerepelnek. Az eltérő technológiákkal fejlesztett alkalmazásokban megjelenő objektumok azonosításához és tárolásához eltérő megoldásokra van szükség. Ezért is van jelen sok, egy-egy célfeladatra alkalmas eszköz ezen a területen. Sajátosságuk, hogy a webes alkalmazások területén már jól ismert és elterjedten alkalmazott “headless” futtatást nem támogatnak ezen megoldások, hiszen a felületi elemek emulálása azok megjelenítése nélkül nem megvalósítható. A következő fejezetben sorra veszem azokat az eszközöket, amelyekkel egy tesztelő találkozhat blogokban, cikkekben, összehasonlításokban, bemutatva a keretrendszerek és segédeszközök alapvető természetét és lehetséges felhasználási területét.

A bemutatásra kerülő tesztelési keretrendszerek rendelkeznek a kulcsszó alapú automatizálás lehetőségével. A módszer lényege, hogy nem szkripteken alapul, hanem a futtatás kulcsszavak alapján történik, amik közvetetten hívják meg a szkripteket. Így biztosított a kódok újrafelhasználhatósága is. Az eszközöknek így mindegyike a tesztelési keretrendszerek evolúciójának a negyedik lépcsőfokán áll. Elengedhetetlen, hogy olyan automatizáló eszközt válasszunk, amely a csapat produktivitását maximalizálja, a szükséges funkciókat biztosítja, emellett azonban nem köti meg a tesztelő kezét felesleges konvenciókkal. A tesztelési módszertan előzetes átgondolása nagyon fontos ehhez. A tesztelés hatékonyságának növeléséhez elsődleges szempont a megfelelő tesztesetek létrehozása.

Elérhető szoftver megoldások a tesztelés gyakorlati kivitelezéséhez:

Az eszközök nagy hátránya, hogy általánosságban csak 1-1 GUI technológiát támogatnak, így AWT, SWT vagy csak Swing Java esetleg JavaFX alkalmazások teszteléséhez ideálisak. A rendszerek nagy része a webes alkalmazások tesztelésénél jól bevált Selenium megoldásán alapszik, annak egy adaptációja..

A Windows Application Driver a Microsoft keretrendszere UWP és Win32 alkalmazások tesztelésére, azonban csak Windows 10 alatt használható.

A Coded UI tesztek Visual Studio komponensként hozhatóak létre. Rendelkezik interakció rögzítési és kódgenerálási megoldással is. Azonban ez black-box tesztelésre nem használható, a saját fejlesztésű alkalmazások fejlesztői tesztjeinek gyors és hatékony megvalósítására alkalmas.

Az egyik legismertebb eszköz, a Winium csak WPF, WinForms, illetve Windows Phone-ra készült alkalmazásokat támogat, .

A SikuliX, amely az MIT-n fejlesztett Sikuli szoftveren alapul egy nyílt forráskódú eszköz. Python-t használhatunk a scriptek megírásához. OpenCV-n alapuló megoldás, ami a képernyő egyes elemeinek gépi felismerésén alapul. Ebből adódik, hogy az elkészült megoldás gyakorlatilag egy adott rendszer pillanatyni konfigurációjához kötött.

A TestFX esetében – amely nevéhez híven JavaFX alkalmazások teszteléséhez ideális – a teszt szkriptnek és a tesztelendő alkalmazásnak ugyanazon JavaFX folyamatban kell futnia. Ellenkező esetben API kapcsolat biztosítása szükséges az állapotgráf lekérdezéséhez. A Scenic View alkalmas egy JavaFX alkalmazás állapot gráfjának vizsgálatára, id és style adatok lekérésére az alkalmazás forráskódjához való hozzáférés nélkül. (A Scenic View megoldása: https://bitbucket.org/scenicview/scenic-view/src/73003b257b7e/src/main/java/org/fxconnector)

A Robot Framework egy általános célú kulcsszó alapú tesztelési keretrendszer, amely két különálló komponensből áll. Megvalósítja a teszt adatok és a tesztelés alatt álló alkalmazással kommunikáló kódkönyvtárak közötti transzfert. A tesztek fejlesztése Python-ban vagy Jython-ban történik. Fő felhasználási területe az elfogadási tesztelés(Acceptance testing). Windows alkalmazások teszteléséhez a TestFX esetében már ismertetetthez hasonló megoldásra van szükség. Egy lehetséges implementáció: https://github.com/eficode/JavaFXLibrary .

Az AutoIt v3 a Windows ablakainak, standard elemeinek, beépített natív alkalmazásainak és a folyamatok kezelésére alkalmas megoldás. A kívánt elemek rögzítése után az azokkal végzendő műveleteket au3 fájlokban írjuk le. Az így létrejött, a BASIC-hez hasonló szkriptekből exe fájlt fordítva tudjuk meghívni akár egy Java forrásból. Ebből adódóan ez kiegészítő megoldásnak lehet jó, adott esetben webes alkalmazás esetén a fájl kiválasztó ablak kezelésére. A segédeszközök, keretrendszerek mellett találkozhatunk wrapperekkel is, amelyek egy meglévő alapra építenek hozzáadott funkcionalitást. Jelen esetben ilyen az AutoItX4Java is, amely az AutoIt adta lehetőségeket teszi elérhetővé Java kódból. https://github.com/accessrichard/autoitx4java Az így elkészült kódok karbantarthatósága nehézkes lehet, hiszen a wrapper is folyamatos aktualizálásra szorul az újabb keretrendszer verziók megjelenése nyomán.

Az egyik legismertebb, üzleti csomagban kínált alternatíva a MicroFocus Unified Functional Testing keretrendszere, amely a korábban HP Quick Test Professional néven ismert szoftvercsomag utódja, 12 éves múltra tekint vissza. A szoftvernek nagy előnye, hogy natívan integrálható a HP Application Lifecycle Management néven ismert komplex szoftver termék menedzser termék csomaggal. Az ALM az adminisztrációt központosítja és az üzleti követelményektől egészen a késztermékig végigkövethetjük használatával a tervezés, fejlesztés, tesztelés fázisai. A termék használata során kiemelt figyelmet kell fordítani a számunkra hasznos bővítmények kiválasztására, a többinek pedig a kikapcsolására, hiszen lassú működést tapasztalhatunk ellenkező esetben. Támogatja teljes tesztesetek rögzítését is a felvevő eszközével, azonban az így kapott szkriptek minősége gyakran nagyon alacsony.

Univerzális megoldásnak a Zaptest tekinthető. A MicroFocus Unified Functional Testing-hez hasonló funkció csoportokkal rendelkezik, azonban folyamatos fejlesztés alatt áll, illetve a program használata során alacsonyabb válasz időkkel kell számolnunk. A termék Windows / iOS / Android / Mac / Linux / BB platformokra írott szoftverek teszteléséhez használható. A tesztkészlet összeállítása VBScript vagy JavaScript nyelven történhet. Támogatása kiemelkedő, az ingyenesen használható fórumon is egy napon belül választ kaphatunk egy szakértőtől. A HP ALM és a JIRA integráció is biztosított gyártói illesztőkkel. Nagy előnye, hogy használatával a teljes ökoszisztéma lefedhető, hiszen támogat mobil platformokat, webes és asztali alkalmazásokat is. Az ingyenes kiadása gyakorlatilag csak kipróbálásra, ismerkedésre alkalmas, hiszen For / While ciklusok nem használhatóak benne.

Az Applitools Eyes megoldása egy komplex megoldás a teszteredmények validálására és a kiértékelésükre, ezáltal kicsit kilóg a sorból, hiszen itt nem egy klasszikus értelemben vett keretrendszerről beszélhetünk. Önmagában egy SaaS, azaz szoftver szolgáltatás, ami azt jelenti, hogy az infrastrukturális felépítést teljes egészében elfedi, a felhasználó csak az alkalmazási réteggel kerül kapcsolatba. A tesztelendő rendszerrel való közvetlen interakciót nem valósítja meg, hanem egyes SDK biztosította interfészeken kommunikál azokkal. Számos technológiát és platformot támogat, több mint 40 SDK-t számlál az egyes platformok kezeléséhez.

Összefoglalásként a tesztelés előtt mindig fontos a tesztelési koncepció és terv elkészítése. A tesztelendő alkalmazás alapvetően meghatározhatja a használható keretrendszerek körét, hiszen univerzális megoldások, mindig működő receptek nem léteznek. Gyakran több, autonóm megoldás kombinációja jelentheti a megoldást a specifikus tesztelési feladatra. Az ár-érték arány, kompatibilitás, terméktámogatás és használhatóság tekintetében a ZAPTEST megoldása a legjobb választás véleményem szerint. Mind az Atlassian termékekhez, mind a HP ALM-hez biztosít integrációs lehetőségeket natív megoldásokkal. Ennek köszönhetően a csapat által valószínűleg már használt és megismert teszt menedzsment eszközt nem szükséges cserélni a teszteszköz váltáshoz, amellett, hogy maga az eszköz is teret enged a tesztelői önmegvalósításnak.

A szerző

Kovács Ákos
Kovács Ákos vagyok, 2015-ben diplomázott mérnökinformatikus. Certified Tester (ISTQB). Tesztautomatizálási mérnökként dolgozom.
Vissza