Prečo Android Testing?
Android je najväčší operačný systém na svete. Android je zároveň fragmentovaný. existuje veľa zariadení a verzií systému Android, s ktorými musí byť vaša aplikácia kompatibilná.
Nezáleží na tom, koľko času investujete do návrhu a implementácie, chyby sú nevyhnutné a objavia sa chyby.
V tomto návode sa naučíte
- Prečo Android Testing?
- Stratégia testovania systému Android
- Jednotkové testy
- Integračné testy
- Prevádzkové skúšky
- Testy systému
- Automatizované testovanie ANDROID
- Rámec pre testovanie systému Android
- Robolektrický testovací rámec
- Mýty o testovaní systému Android
- Osvedčené postupy pri testovaní systému Android
Stratégia testovania systému Android
Správna stratégia testovania systému Android by mala obsahovať nasledovné
- Test jednotky
- Test integrácie
- Prevádzková skúška
- Test systému
Jednotkové testy
Testy jednotiek zahŕňajú sady jedného alebo viacerých programov, ktoré sú určené na overenie atómovej jednotky zdrojového kódu, napríklad metódy alebo triedy.
Platforma Android prichádza s predintegrovaným rámcom Junit 3.0. Je to open source rámec pre automatizáciu testovania jednotiek. Android Testing Framework je výkonný nástroj pre vývojárov na písanie efektívneho programu testovania jednotiek.
Integrácia rámca Android a JUnit
Dodatkom k testovaniu jednotiek sú testy používateľského rozhrania (UI). Tieto testy sa týkajú komponentov používateľského rozhrania vašej cieľovej aplikácie. Testy používateľského rozhrania zaisťujú, že vaša aplikácia vráti správny výstup používateľského rozhrania ako reakciu na postupnosť akcií používateľa v zariadení.
Bežné akcie používateľského rozhrania používateľa v aplikácii
Bežným spôsobom vykonávania testov používateľského rozhrania na zariadení je Android Instrumentation. Toto má ale problémy s výkonom. Jedným z najlepších nástrojov na vykonávanie testovania používateľského rozhrania v systéme Android je Robotium.
Integračné testy
Pri integračnom testovaní sú všetky jednotky testované moduly kombinované a overené. V systéme Android zahŕňajú integračné testy často kontrolu integrácie s komponentami Android, ako sú napríklad testovanie služieb, testovanie aktivity, testovanie poskytovateľa obsahu atď
Typy testu integrácie v systéme Android
Existuje veľa testovacích rámcov používaných na vykonávanie integračného testu pre Android, ako sú Troyd, Robolectric, Robotium.
Prevádzkové skúšky
- Prevádzkové sa tiež nazývajú funkčné testy alebo testy prijatia. Sú to testy na vysokej úrovni určené na kontrolu úplnosti a správnosti aplikácie.
- V systéme Android je FitNesse rámec otvoreného zdroja, ktorý uľahčuje vykonávanie prevádzkových testov pre cieľovú aplikáciu.
Testy systému
Pri testovaní systému sa testuje systém ako celok a kontroluje sa interakcia medzi komponentmi, softvérom a hardvérom.
Testovanie systému Android v systéme Android zvyčajne zahŕňa
- Testy GUI
- Skúšky použiteľnosti
- Výkonnostné testy
- Stresové testy
V zozname uvedenom vyššie sa viac zameriava na testovanie výkonnosti . Na vykonanie testu výkonnosti v systéme Android môžete použiť nástroje ako Traceview. Tento nástroj vám pomôže ladiť aplikáciu a profilovať jej výkon.
Automatizované testovanie ANDROID
Pretože je Android fragmentovaný, je potrebné testovať na mnohých zariadeniach. Toto vás však bude stáť aj peniaze. Automatizované testovanie systému Android môže pomôcť znížiť náklady
Výhody automatizovaného testovania systému Android
- Skráťte čas na vykonanie testovacích prípadov
- Zvýšte produktivitu procesu vývoja
- Včasná detekcia chýb, úspora nákladov na údržbu softvéru
- Rýchlo nájdite a opravte chyby pri implementácii
- Zaistite kvalitu softvéru
Budeme študovať nasledujúce 2 rámce
- Rámec pre testovanie systému Android
- Rámec robotického testovania
Rámec pre testovanie systému Android
Jedným zo štandardných testovacích rámcov pre aplikácie pre Android je Android testovanie rámec . Jedná sa o výkonný a ľahko použiteľný testovací rámec, ktorý je dobre integrovaný do nástrojov Android SDK.
Architektúra testovacieho rámca pre Android
- Balík aplikácií je vaša cieľová aplikácia, ktorú je potrebné otestovať
- InstrumentationTestRunner je testovací prípad, ktorý vykonáva testovací prípad v cieľovej aplikácii. Obsahuje:
2a) Testovacie nástroje: Nástroje SDK na testovanie budov. Sú integrované do Eclipse IDE alebo fungujú ako príkazový riadok.
2b) MonkeyRunner: Nástroj, ktorý poskytuje API na písanie programu, ktorý ovláda zariadenie alebo emulátor systému Android mimo kódu Android.
- Testovací balíček je usporiadaný do testovacích projektov. Tento balík sa riadi konvenciami pomenovania. Ak má testovaná aplikácia názov balíka „com.mydomain.myapp“, potom by testovací balík mal byť „com.mydomain.myapp.test“. Balík testu obsahuje 2 objekty, ako je uvedené nižšie:
3a) Triedy testovacích prípadov: zahŕňajú testovacie metódy vykonané v cieľovej aplikácii.
3b) Vysmievané objekty: zahŕňajú falošné údaje, ktoré sa použijú ako vstup vzorky pre testovacie prípady.
Triedy testovacích zariadení Android
Diagram triedy AndroidTestCase
- TestCase obsahuje metódy JUnit na spustenie testu JUnit
- TestSuite sa používa na spustenie sady testovacích prípadov
- InstrumentationTestSuite je TestSuite, ktorý pred spustením vstrekuje prístroje do prístroja InstrumentationTestCase.
- InstrumentationTestRunner je testovací prípad, ktorý vykonáva testovací prípad v cieľovej aplikácii.
- AndroidTestCase rozširuje JUnit TestCase. Obsahuje metódy na prístup k zdrojom, ako je napríklad kontext aktivít.
- ApplicationTestCase overuje triedy aplikácií v kontrolovanom prostredí.
- InstrumentationTestCase overuje konkrétnu vlastnosť alebo správanie cieľovej aplikácie, napríklad overuje výstup UI aplikácie.
- ActivityTestCase je základná trieda, ktorá podporuje testovanie aplikačných aktivít.
- ProviderTestCase je trieda na testovanie jednotlivých ContentProvider.
- ServiceTestCase sa používa na testovanie tried služieb v testovacom prostredí. Podporuje tiež životný cyklus služby.
- SingeLauchActivityTestCase sa používa na testovanie jednej aktivity pomocou InstrumentationTestCase.
- ActivityUnitTestCase
sa používa na testovanie jednej izolovanej aktivity. - ActivityInstrumentationTestCase2
rozširuje triedu JUnit TestCase. Spája vás s cieľovou aplikáciou s prístrojovým vybavením. S touto triedou môžete získať prístup k komponentu grafického používateľského rozhrania aplikácie a odosielať do používateľského rozhrania udalosť používateľského rozhrania (klávesová alebo dotyková udalosť).
Nižšie je uvedený príklad ActivityInstrumentationTestCase. Overuje činnosť UI aplikácie Calculator, kontroluje správnosť výstupov UI.
Príklad testovania ActivityInstrumentationTestCase2
Robolektrický testovací rámec
Testovanie pomocou testovacieho rámca Android so zariadením alebo emulátorom je ťažké. Testovanie priebehu a fungovania je pomalé a vyžaduje veľa vývojového úsilia. Na vyriešenie tohto problému existuje iná voľba - rámec Robolectric Testing .
Robolektrický rámec umožňuje spúšťať testy Androidu priamo na JVM bez potreby zariadenia alebo emulátora.
Pokročilé funkcie Robolectric
Triedy robotických testovacích prípadov
Prevádzka Robolectric
- Ako je uvedené vyššie, Robolectric môže vykonávať nasledujúce akcie:
- Zaregistrujte sa a vytvorte triedu Shadow
- Zachyťte načítanie triedy Android
- Používa javaassist na prepísanie telies metód triedy Android
- Zviažte objekt Shadow do triedy Android
- To umožňuje spustenie testovaného kódu bez prostredia Android.
Rámec pre ďalšie testovanie
Okrem vyššie uvedených testovacích rámcov existuje aj veľa ďalších testovacích rámcov, ako napríklad:
- Android Junit Report, vlastný testovací prístroj pre Android, ktorý generuje správy XML pre integráciu s inými nástrojmi.
- Expresso
- Appium
Mýty o testovaní systému Android
Mnoho spoločností vyvíja stratégie testovania systému Android, ktoré sú založené na bežných mylných predstavách. Táto časť skúma niekoľko populárnych mýtov a skutočností testovania systému Android.
Mýtus č. 1: Všetky zariadenia so systémom Android sú rovnaké ... Test na emulátoroch stačí
Začnime jednoduchým príkladom. Aplikácia funguje perfektne na emulátoroch, ale na niektorých skutočných zariadeniach zlyháva počas vykonávania
Aplikácia zlyhá počas vykonávania na skutočnom zariadení
Emulátory na testovanie na mobile nestačia . Svoju aplikáciu musíte vyskúšať na skutočných zariadeniach.
Mýtus č. 2: Testovanie na niektorých bežných zariadeniach stačí
- Na rôznych zariadeniach vyzerá vaša aplikácia inak, pretože rôzne zariadenia majú rozdielny hardvér, veľkosť obrazovky, pamäť atď. Aplikáciu musíte otestovať na rôznych zariadeniach, verziách operačného systému, sieťach operátora a umiestneniach.
Mýtus č. 3: Stačí prieskumné testovanie tesne pred spustením
- Spravidla pri všetkých testoch navrhujeme testovacie prípady a potom ich spúšťame. Ale v rámci Prieskumného testovania, návrhu a vykonania testu sa všetko uskutoční spoločne.
- Pri prieskumných testoch neexistuje plán ani príprava, potom by tester urobil testy, ktoré by chcel urobiť. Niektoré funkcie budú testované opakovane, zatiaľ čo niektoré funkcie nebudú testované úplne.
Mýtus č. 4: Ak sa v aplikácii vyskytnú nejaké chyby, používatelia to pochopia
- Ak aplikácia nefunguje a obsahuje chyby, používatelia ju odinštalujú
- Problémy s kvalitou sú prvým dôvodom nesprávnej kontroly v službe Google Play. Ovplyvňuje to vašu reputáciu a stratíte dôveru zákazníka.
Preto je nevyhnutné mať zavedenú správnu stratégiu testovania systému Android
Osvedčené postupy pri testovaní systému Android
- Vývojári aplikácií by mali vytvárať testovacie prípady súčasne s písaním kódu
- Všetky testovacie prípady by mali byť uložené v riadení verzií spolu so zdrojovým kódom
- Používajte nepretržitú integráciu a spúšťajte testy pri každej zmene kódu
- Nepoužívajte emulátory a rootované zariadenia