Automatizált tesztelés Android alkalmazásokon
Az utóbbi években, a hordozható készülékek beköszöntésével, az emberek nagy számban váltottak mobil eszközökre a mobilitásuk, és könnyű használatuk miatt. Az elmúlt években az Android vált a mobil eszközök vezető platformjává. Google termék lévén nagy marketingnek örvend, és ebből következően sok ügyfél használja. A másik fő ok a hatalmas népszerűség mögött a nyílt forráskód és a számtalan fejlesztői közösség, amely alkalmazások ezreit készíti naponta. Az Android egy Java alapú alkalmazás platform Linux kernel-lel. Saját fordítója a Delvik az, ami az Android alkalmazás kódjait gépi kóddá alakítja.
Az Android készülékek növekvő népszerűségével megnőtt a robusztus, és megbízható Android alkalmazások iránti szükséglet is. A tesztelés mindig is nagyon fontos szerepet játszott a fejlesztésekben, melynek szükségessége még tovább emelkedett az Android alkalmazások esetén. Egy Android alkalmazás tesztelésénél az a probléma, hogy nem egyszerű tesztelni olyan mobil alkalmazásokat, amelyek platform-, és grafikus felhasználó interfész (GUI) orientált fejlesztésűek.
Számos automatizáló eszköz áll rendelkezésünkre a piacon, amelyek hatékonyan képesek tesztelni egy hagyományos desktop alapú, vagy webes alkalmazást, azonban az Android esetében nem olyan könnyű az automata tesztelés a mobilkészülékek sajátos korlátai miatt, mint például az alacsony energiafogyasztású CPU-k, korlátozott memória, és kicsi kijelző. Továbbá az Android fejlesztés még viszonylag gyerekcipőben jár, és nem tolonganak többéves tapasztalattal rendelkező Android fejlesztők a piacon, így a fejlesztés hajlamos előhozni olyan komplex hibákat, melyeket nem lehet automatikusan tesztelni.
Az Android alkalmazások újdonsága, és sajátossága
Az Android alkalmazások több szempontból sem olyanok, mint a megszokott alkalmazások. Az Android alkalmazások tipikus összetevői például az emberi tevékenységek (mozgások), vagy a tartalomszolgáltatók és különféle szolgáltatások adatai. Ezek az összetevők hiányoznak a hagyományos kliens-szerveralkalmazásokból, és az eseményvezérelt asztali alkalmazásokból. Ezen tényezők miatt a hibára való hajlamosság az Android alkalmazásoknál magasabb, így hatékonyabb tesztelést igényel. Ilyen típusú alkalmazások tesztelésénél nagyon hasznos lehet az automatizált tesztelés is a hatékonyságának és megbízhatóságának köszönhetően.
A GUI alapú mobil alkalmazások tesztelése nem determinisztikus, és a felhasználó bárhová képes a képernyőn kattintani. Szerencsére a mobil platformokon, mint az Android, külön tudjuk szedni a fejlesztést a deployment-től. A mobil készülék viselkedését szimulálni tudjuk a saját PC-nken. Ez számos tesztesethez nyitja meg az utat, melyek ezeken a szimulátorokon könnyedén tesztelhetőek, amihez egyébként dedikált készülékek lehetnek szükségesek.
A lehetőségek nagy száma miatt válik igazán nehézzé, hogy leteszteljük ezeket az alkalmazásokat. A GUI automatizált tesztelése nagyon hasznos lehet az alkalmazás tesztelésében. A GUI alapú automatizált tesztelés az Android alkalmazásoknál javítja a programok alapvető stabilitását, és különösen a regressziós tesztelésnél lesz segítségünkre.
Az Android alkalmazások GUI alapú automatizált tesztelése mögötti stratégia az, hogy a tesztelő teszt scripteket ír, amelyek szimulálják a felhasználó tényleges interakcióját a készülék grafikus felhasználói felületén. Az automatizált tesztesetek helyessége ezeken a szimulált interakciókon múlik. Az alkalmazásban zajló folyamatok és a GUI állapota is ellenőrizhető ezzel a technikával.
Android alkalmazástesztelő keretrendszerek
Számos más képességhez hasonlóan az Android integrált tesztelési stratégiát nyújt az automatizált tesztelési folyamathoz. A két leghíresebb automatizált tesztelési stratégia az Android Instrumentation keretrendszer, ami az SDK-val jött, és a másik a Positron keretrendszer modell.
Először is beszéljünk az Instrumentation keretrendszer alapjairól. Itt az Android alkalmazások tesztelése arra vonatkozik, hogy a kód elemzésével, debuggolásával, az események naplózásával és a performancia mérésével monitorozhassuk az alkalmazás folyamatait. Számos támogató osztály van jelen az Android Instrumentation keretrendszerben, amelyek segítségével tudunk indítani, megállítani, futtatni és megszakítani bármilyen Android alkalmazást a tesztkörnyezetben.
A GUI tesztelést nézve egy Android alkalmazást felbonthatunk több képernyőre, melyeket külön tevékenységeknek nevezhetünk. Maga az alkalmazásra egy sor tevékenység, ami egymásra van halmozva. Továbbá minden egyes tevékenység tartalmaz egy bizonyos számú GUI elemet. Ezért annak érdekében, hogy az Android alkalmazás GUI-ját teszteljük, le kell mennünk az összes komponens szintjének mélységéig minden egyes tevékenységnél, és ezekre a komponensekre külön automatizált teszteseteket kell írnunk. A GUI tesztelés ilyen fajta teszteléséhez az Android Instrumentation keretrendszere az ActivityInstrumentationTestCase2-t biztosítja.
Positron keretrendszer
Annak érdekében, hogy kezeljük a tevékenységeket, egy másik kliens-szerver alapú keretrendszer épült az Instrumentation keretrendszer tetejére, ezt hívjuk Positron keretrendszernek. Ez a keretrendszer magasabb szintű megközelítéssel bír azért, hogy könnyen írhassunk és futtathassunk automatizált teszteseteket. Az alkalmazás minden állapotát megfigyelheti a kliens. A kliens külön csatlakozik az alkalmazás komponenséhez a tevékenységet futtató szerveren. A kliensek és a szerver közötti kapcsolat az Android Debug Bridge-en keresztül jön létre. Az egyes tevékenységek példányait a klienssel való kapcsolódás hozza létre. A Positron keretrendszer motorja szálakkal dolgozik. Az alkalmazások tesztelése érdekében a GUI komponensek általában külön szálon futnak, így a megfelelő események is külön szálon vannak, hogy az alkalmazás érzékenysége maximalizálva legyen. A Positron keretrendszer hierarchikus módon, rendezetten foglalkozik minden egyes tevékenység komponenével.
Az alapvető különbség az Instrumentation és a Positron keretrendszer között, hogy a Instrumentation keretrendszer alacsonyszintű automatizált tesztelést hajt csak végre, mialatt a GUI interakcióit szimulálja. A másik oldalon a Positron keretrendszer magas szintű automatizálást hajt végre, és absztrakt módon a GUI teszteseteket szimulálja.
A cikk elején említett tényekből arra lehet következtetni, hogy az egyre növekvő Android alkalmazás populáció és a platform újdonsága párosul a tapasztalatlan Android fejlesztői közösséggel, vagyis igazi szükségletté vált a születő alkalmazások megfelelő tesztelése. Az új architektúrának köszönhetően egy Android alkalmazást teljesen más tesztelni, mint egy asztali-, vagy webes rendszert. Számos eszköz áll rendelkezésre, hogy automatizáltan teszteljünk Androidos alkalmazásokat. Ezek az eszközök egyaránt elvégezhetik az Instrumentation és a Positron féle teszteléseket, amelyeket fent említettem.
Az egyik ilyen eszköz ami megtalálható a piacon, a “RoutineBot”. Az eszköz a modern tesztelési eszközök minden funkcióját tartalmazza és automatizált GUI tesztelést is tud végezni. A eszköz részletes leírását, megtalálhatod a http://www.routinebot.com/ -on.
Kellemes kódolást!
Eredeti cikk: http://architects.dzone.com/articles/automation-testing-android
Szerző: Aleksey Savkin
A szerző
- Aleksey Savkin szoftvermérnök, valamint egyik alapítója az AKS-Labs-nak, amely a BSC tervező szoftverek és eszközök forgalmazója. Szakterületei a távoli csapatvezetés, és a Balanced Scorecard, illetve általános üzleti informatikai fejlesztés és marketing. Aleksey sok cikknek és könyvnek a szerzője, melyek a Balanced Scorecard-ról szólnak, illetve szemináriumokat tart erről a Moscow Business School (MBS) tanszékén.