Android rendszeren futó alkalmazások tesztelése Kundra László

Hasonló dokumentumok
ITIL alapú szolgáltatás menedzsement megvalósítása a KELER Zrt-ben





Számítógép hálózatok gyakorlat

Erste MobilBank Felhasználói kézikönyv










Broadcast Service Widget

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Tartalomjegyzék. Tartalom 1/16





Felhasználói útmutató Dahua gyártmányú digitális képrögzítő eszközökhöz

AZ ÖNÉRTÉKELÉS SZEREPE ÉS FOLYAMATA AZ INTÉZMÉNYFEJLESZTÉSBEN M&S Consulting Kft.

A szerzõrõl... xi Bevezetés... xiii

Az informatika helyzete Magyarországon Dr. Fehér Péter

Vasúti információs rendszerek gyakorlat


















Android 5.0.

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

ingyenes tanulmány GOOGLE INSIGHTS FOR SEARCH

My Hipernet Home üzembehelyezési útmutató

EPER E-KATA integráció

FORTE MAP 5.0 Felhasználói tájékoztató

A J2ME architektúrája. Léczfalvy Ádám

Szoftverfejlesztés a Google Android OS-re (Android 3.0, API level 11)


I. Országgyűlés Nemzeti Választási Iroda



DIGITÁLIS GAZDASÁGFEJLESZTÉS

UNIX operációs rendszer rövid története és jellemzői

OmniTouch 8400 Instant Communications Suite 4980 Softphone

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

FELHŐ ALAPÚ HELYMEGHATÁROZÓ SZOLGÁLTATÁS KIFEJLESZTÉSE MOBIL ESZKÖZÖK SZÁMÁRA

ÁFA felhasználói dokumentum Lezárva:

A) Belépés a Webinar felületére



Fábián Zoltán Hálózatok elmélet


Biztonsági mentés és visszaállítás Felhasználói útmutató

Digitális technika (VIMIAA01) Laboratórium 1




Vodafone ReadyPay. Használati útmutató


Programozás I gyakorlat

Az új modulrendszer tapasztalatai



AWP TELEPÍTÉSE- WINDOWS7 64 OPERÁCIÓS RENDSZEREN

Dr. Schuster György február 21. Real-time operációs rendszerek RTOS

HÁLÓZATSEMLEGESSÉG - EGYSÉGES INTERNET SZOLGÁLTATÁS-LEÍRÓ TÁBLÁZAT

Az MSZ EN ISO 19011:2012 szabvány változásai. Támpontok az auditorok értékeléséhez Előadó: Turi Tibor, az MSZT/MCS 901 szakértője

Számviteli elemzéshez mutatók


Növelhető-e a hazai szélerőmű kapacitás energiatárolás alkalmazása esetén?

Az Összetett hálózatok vizsgálata elektronikus tantárgy részletes követeleményrendszere

Java felhasználói felület

A kamarák szerepe a vállalkozások innovatív működésének elősegítésében

7. Sulinet nyíltnap - Napirend

Hidak építése a minőségügy és az egészségügy között

TANÚSÍTVÁNY. tanúsítja, hogy a. Mezőgazdasági és Vidékfejlesztési Hivatal (MVH). által üzemeltetett

Elektronikus öltözőszekrényzárak








Átírás:

Android rendszeren futó alkalmazások tesztelése Kundra László

Android tesztelés alapok Java alapú fejlesztés JUnit @Annotációs segédosztályok a teszteléshez Android build tools támogatással Teszt projekt generálása Build fájlok generálása Android testing API: JUnit API kibővítve Android specifikus tesztekkel.

Android Testing API JUnit TestCase osztály A tesztelt osztály nem használja az Android API-t AndroidTestCase A TestCase-ből származik JUnit Assert Eredmények összevetése és eltérés esetén AssertionException Testing API: MoreAsserts Bővített tudás, pl. reguláris kifejezés tesztelése Testing API: ViewAsserts A felületi elemek tesztelésében segít, pl. adott View-nak van-e addott koordinátájú képpontja.

Instrumentation és Mock objektumok Android instrumentation Android framework osztályok hook -okkal Életciklus befolyásolása A teszt projekt és az alkalmazás egy folyamatként töltődik be Külső függőségek feloldása tesztelés alatt: Mock objektumokkal Saját vagy OS szintű szolgáltatások (Service), kontextus (Context), stb. hiányának feloldása A rendszer biztonságban marad a fejlesztés / tesztelés alatt

A teszt felépítése I.

A teszt felépítése II.

Funkcionális tesztelés Monkey Parancssoros eszköz (ADB: Android Debug Bridge) Főleg UI és UX teszteléshez Gombnyomás, érintés, és gesztusok injektálása futás közben Stress-test Monkeyrunner Parancssoros eszköz (ADB-n) Python alapú futtatókörnyezet tesztelés Csomagok telepítése, képernyőképek, kapcsolatok állítása, stb. Teszt csomagok futtatása alkalmazásokon Komplex tesztek felépíthetők segítségével

UI tesztelése Automatizált blackbox UI tesztelés Nem lényeg az alkalmazás belső működése Az emberi munka drága, nem idő-hatékony és hibázhat Android tools: uiautomatorviewer Az eszköz képernyőjének hierarchikus bontása A nézetek (View-k) paramétereinek vizsgálata Android tools: uiautomator ADB-n keresztül meghívható Funkcionális tesztelés Java könyvtár UI tesztek létrehozásához és futtatásához Teszt projekt Java kóddal $ adb shell uiautomator runtest LaunchSettings.jar -c com.uia.example.my.launchsettings

A uiautomatorviewer valós eszközzel

A uiautomator API UI komponensek elérése és manipulálása UiDevice Az eszköz képernyőjének orientációja, felbontása; hardver gombok, stb. UiSelector A nézetek hierarchiájából lekéréssel visszaad egyet UiObject Grafikus elemet reprezentáló objektum, dinamikus: hozzáféréskor értékelődik ki! UiCollection Elemek gyűjteménye, viselkedsére hasonló a UiObject-hez. Pl.: email lista UiScrollable Görgethető komponenst reprezentál, melyet így tesztszerűen görgethető

A uiautomator API UI komponensek elérése és manipulálása UiDevice Az eszköz képernyőjének orientációja, felbontása; hardver gombok, stb. UiSelector A nézetek hierarchiájából lekéréssel visszaad egyet UiObject Grafikus elemet reprezentáló objektum, dinamikus: hozzáféréskor értékelődik ki! UiCollection.className("android.widget.FrameLayout")); Elemek gyűjteménye, int count viselkedsére = videos.getchildcount(new hasonló a UiObject-hez. UiSelector() Pl.: email lista.classname("android.widget.linearlayout")); UiScrollable getuidevice().presshome(); UiObject appitem = new UiObject(new UiSelector().className("android.widget.ListView").instance(1).childSelector(new UiSelector().text("Apps"))); UiObject okbutton = new UiObject(new UiSelector().text("OK")); UiCollection videos = new UiCollection(new UiSelector() UiScrollable settingsitem = new UiScrollable(new UiSelector().className("android.widget.ListView")); Görgethető komponenst reprezentál, melyet így tesztszerűen görgethető

Egyszerű példa public class LaunchSettings extends UiAutomatorTestCase { public void testdemo() throws UiObjectNotFoundException { getuidevice().presshome(); UiObject allappsbutton = new UiObject(new UiSelector().description("Apps")); allappsbutton.clickandwaitfornewwindow(); UiObject appstab = new UiObject(new UiSelector().text("Apps")); appstab.click(); UiScrollable appviews = new UiScrollable(new UiSelector().scrollable(true)); appviews.setashorizontallist(); UiObject settingsapp = appviews.getchildbytext(new UiSelector().className(android.widget.TextView.class.getName()), "Settings"); settingsapp.clickandwaitfornewwindow(); } } UiObject settingsvalidation = new UiObject(new UiSelector().packageName("com.android.settings")); asserttrue("unable to detect Settings", settingsvalidation.exists());

Mit mást érdemes tesztelni? Képernyő felbontás / orientáció változás Táblagépek támogatása, elforgatás kezelése minden felületen Konfiguráció változása Hálózati kapcsolat, billentyűzet megléte, rendszer nyelve, stb. Akkumulátor élettartam Bővebben: Google IO konferencia: Coding for Life -- Battery Life, That Is Egyéb külső függőségek GPS, Bluetooth megléte; SMS fogadás, mobilinternet, stb.

Tesztelést támogatóeszközök (ingyenes, többnyire nyílt forrás) Hamcrest (https://code.google.com/p/hamcrest/) Android FEST (https://github.com/square/fest-android) Android UI tesztelés és hibafelderítés Awaitility (https://code.google.com/p/awaitility/) Aszinkron tesztelés Spoon (http://square.github.io/spoon/) Elosztott tesztelés sok eszközön, vizuális jelentések, képernyőképek, stb.

Köszönöm a figyelmet!