Android alkalmazások tesztelése Doktor Tibor, Nagy Ákos
Android Linux alapú operációs rendszer mobil eszközökre Fejlesztési lehetőségek: Java nyelven (Dalvik VM) Natív alkalmazás
Fejlesztés Java nyelven Natív alkalmazások Activity Service Képernyő Service Háttérben futó műveletek, pl. zene lejátszása Content Provider Adatok tárolása/kinyerése az összes alkalmazás számára ContentResolver: ezen keresztül érhetők el a provider-ek DataSet azonosítása egy URI segítségével, "content://” Natív alkalmazások JNI-n keresztül natív API-k hívása NativeActivity (Android 2.3) Nincs Service, ContentProvider
Tesztelés Android testing framework Komponens tesztelés JUnit alapokon Integrálva a fejlesztői környezetbe Komponens tesztelés JUnit alapokon JUnit kiegészítve komponens-specifikus test case osztályokkal Helper metódusok mock objektumok és metódusok létrehozásához MonkeyRunner Androidos eszközök, emulátorok irányítása kívülről (Python) Több eszköz kezelése Funkcionális tesztelés Regressziós tesztelés UI/Application Exerciser Monkey UI stress-testing
Testing framework Test package: ebbe szervezzük a teszteket InstrumentationTestRunner: Test case-ek futtatása Test case osztályok: setUp() tearDown() testXXX() Instrumentation: életciklus callback-ek hívása Mock objects: ezek lesznek a stubok
Activity testing InstrumentationTestCase ActivityTestCase őse Életciklus kezelése: start, pause, destroy activity Helper metódusok mock objektumok generálására, pl. Context UI interaction, pl. touch event küldése ActivityTestCase fontosabb leszármazottai ActivityInstrumentationTestCase2: Funkcionális teszteléshez AcitivityUnitTestCase: Izolált teszt egy activity-hez SingleLaunchActivityTestCase: Nem változó környezetben tesztelés, nincsenek mock objectumok Mit teszteljünk? Input validáció, életciklus és más események, konfiguráció változása, képernyő méret és felbontás
Service testing ServiceTestCase Mit érdemes tesztelni Saját tesztelési környezetet, vagy létrehoz egyet MockContext, MockApplication Mit érdemes tesztelni Életciklus metódusok meghívodnak-e (pl. Context.StartService() -> onCreate()), több hívás kezelése, üzleti logika
Content Provider testing Izolált tesztelési környezet ProviderTestCase2 IsolatedContext: csak file és adatbázis műveletek MockContentResolver Mit teszteljünk? resolver metódusok, URI-k , provider műveletek (pl. query, insert, delete), üzleti logika
Mit érdemes még tesztelni? Orientáció változik Felhasználó elfordítja az eszközt Konfiguráció változik Pl. a felhasználó megváltoztatja a nyelvet Akkumulátor élettartam Minimalizálni kell a használatát Külső erőforrásoktól való függés Mi van akkor ha nem elérhetőek ezek az erőforrások
Köszönjük a figyelmet!