Android APP Testing Tutorial med Automation Framework
Hvorfor Android Testing?
Android er det største operativsystemet i verden. Samtidig, Android er fragmentert. det er tonnevis av enheter og Android versjoner som appen din må være kompatibel med.
Det spiller ingen rolle hvor mye tid du investerer i design og implementering, feil er uunngåelige, og feil vil dukke opp.
Android Teststrategi
En korrekt android-teststrategi bør inkludere følgende
- Enhetstest
- Integrasjonstest
- Operanasjonal test
- Systemtest
Enhetstester
Enhetstester inkluderer sett med ett eller flere programmer som er designet for å verifisere en atomenhet av kildekode, for eksempel en metode eller en klasse.
Android plattformen kommer forhåndsintegrert Junite 3.0 rammeverk. Det er åpen kildekode-rammeverk for automatisering Enhetstesting. Android Testing Framework er et kraftig verktøy for utviklere for å skrive det effektive enhetstestprogrammet.
.png)
Et tillegg til Unit Testing er User Interface (UI) tester. Disse testene er relatert til brukergrensesnittkomponentene til målapplikasjonen din. UI-tester sikrer at applikasjonen din returnerer riktig UI-utdata som svar på rekkefølgen av brukerhandlinger på enheten.

Den vanlige måten å utføre UI-tester på enheten er Android Instrumentleverandører . Men dette har ytelsesproblemer. Et av de beste verktøyene å utføre UI-testing på Android is Robotium.
Integrasjonstester
In Integrasjonstesting, alle enhetstestede moduler, er kombinert og verifisert. I Android, involverer integrasjonstester ofte å sjekke integrasjon medAndroid komponenter som Tjenestetesting, Aktivitetstesting, Innholdsleverandørtesting, etc

Det er mange testrammer som brukes til å utføre integrasjonstest for Android som Troyd, Robolectric, Robotium.
Operanasjonale prøver
- Operasjonelle kalles også funksjonelle tester eller aksepterte tester. De er tester på høyt nivå designet for å kontrollere fullstendigheten og riktigheten av søknaden.
- In Android, FitNesse er åpen kildekode-rammeverk som gjør det enkelt å gjennomføre driftstester for målapplikasjon.
Systemtester
In Systemtesting systemet testes som en helhet og samspillet mellom komponentene, programvare og maskinvare kontrolleres.
In Android, Systemtesting inkluderer normalt
- GUI-tester
- Brukervennlighetstester
- Ytelsestester
- Stresstester
I listen ovenfor, Ytelsestesting får mer fokus. Du kan bruke verktøy som Traceview å gjennomføre ytelsestest på Android .Dette verktøyet kan hjelpe deg med å feilsøke applikasjonen og profilere ytelsen.
Automatisert ANDROID-TESTING
Siden Android er fragmentert, er testing på en rekke enheter nødvendig. Men dette vil også koste deg penger. Automatisert Android Testing kan bidra til å redusere kostnadene
Fordeler med automatisert Android-testing
- Reduser tid for gjennomføring av testsaker
- Øk produktiviteten i utviklingsprosessen din
- Tidlig feildeteksjon, spar kostnad på vedlikehold av programvare
- Finn og fiks feilene raskt ved implementering
- Sikre kvaliteten på programvaren
Vi vil studere følgende 2 rammeverk
- Android Testramme
- Rammeverk for roboelektrisk testing
Android testramme
Et av standard testrammeverk for Android programmet er Android testramme. Det er et kraftig og brukervennlig testrammeverk som er godt integrert med Android SDK-verktøy.
.png)
- Søknadspakke er målapplikasjonen din som må testes
- InstrumentationTestRunner er den Testsak løper som utfører testcase på målapplikasjonen. Det inkluderer:
2) Testverktøy: Et SDK-verktøy for byggetest. De er integrert i Eclipse IDE eller kjør som kommandolinje.
2b) MonkeyRunner: Et verktøy som gir APIer for å skrive program som kontrollerer en Android enhet eller emulator utenfor Android kode.
- Testpakke er organisert i testprosjekter. Denne pakken følger navnekonvensjonen. Hvis applikasjonen som testes har pakkenavnet «com.mydomain.myapp», bør testpakken være «com.mydomain.myapp.test». Testpakken inkluderer 2 objekter som nedenfor:
3a) Testtilfelleklasser: inkluderer testmetoder som skal utføres på målapplikasjonen.
3b) Mock-objekter: inkluderer mock-data som vil bli brukt som eksempelinndata for testtilfeller.
Android Test Case-klasser

- TestCase inkluderer JUnit metoder for å kjøre JUnit test
- TestSuite brukes til å kjøre sett med testtilfeller
- InstrumentationTestSuite er en TestSuite som injiserer instrumentering i InstrumentationTestCase før du kjører dem.
- InstrumentationTestRunner er testcase-løperen som utfører testcase på målapplikasjonen.
- AndroidTestCase strekker JUnit TestCase. Den inneholder metoder for å få tilgang til ressurser som aktivitetskontekst.
- ApplicationTestCase verifiserer applikasjonsklassene i et kontrollert miljø.
- InstrumentationTestCase verifiserer en bestemt funksjon eller oppførsel til målapplikasjonen, for eksempel verifiser UI-utdata for applikasjonen.
- ActivityTestCase er en basisklasse som støtter testing av applikasjonsaktivitetene.
- ProviderTestCase er en klasse for testing av enkelt innholdsleverandør.
- ServiceTestCase brukes til å teste serviceklasser i testmiljø. Den støtter også tjenestens livssyklus.
- SingeLauchActivityTestCase brukes til å teste enkeltaktivitet med en InstrumentationTestCase.
- ActivityUnitTestCase brukes til å teste enkelt isolert aktivitet.
- ActivityInstrumentationTestCase2 utvider JUnit TestCase klasse. Den kobler deg til målapplikasjonen med instrumentering. Med denne klassen kan du få tilgang til applikasjonens GUI-komponent og sende UI-hendelse (tastetrykk eller berøringshendelse) til UI.
Nedenfor er et eksempel på ActivityInstrumentationTestCase. Den verifiserer brukergrensesnittet til kalkulatorapplikasjonen, kontroller riktigheten av utdataene til brukergrensesnittet.

Rammeverk for roboelektrisk testing
Testing ved hjelp av Android Det er vanskelig å teste rammeverk med enhet eller emulator. Bygge- og kjøretest er treg og krever mye utviklingsinnsats. For å fikse dette problemet, er det et annet valg – Robolektrisk testramme.
Roboelektrisk rammeverk lar deg løpe Android tester direkte på JVM uten behovet for en enhet eller en emulator.
.png)
Klasser for roboelektriske testtilfeller
.png)
- Som vist ovenfor kan Robolectric utføre følgende handlinger:
- Registrer deg og lag en Shadow-klasse
- Avskjære lasting av Android klasse
- Bruker javaassist for å overstyre metodelegemene til Android klasse
- Bind Shadow-objektet til Android klasse
- Dette gjør at koden som testes kan kjøres uten Android miljø.
Andre tester rammeverk
I tillegg til testrammeverk som ble nevnt ovenfor, er det mange andre testrammeverk som:
- Android Junit Rapport, en tilpasset instrumenteringstestløper for Android som genererer XML-rapporter for integrasjon med andre verktøy.
- uttrykke
- Appium
Myter om Android Testing
Mange bedrifter utvikler Android Testing strategier som er basert på vanlige misoppfatninger. Denne delen undersøker noen få populære myter og realiteter Android testing.
Myte #1: Alle Android enhetene er de samme ... test på emulatorer er nok
La oss starte med et enkelt eksempel. En applikasjon fungerer perfekt på emulatorer, men på noen ekte enheter krasjer den under kjøring

Emulatorer er ikke nok for mobiltesting. Du må teste appen din på ekte enheter.
Myte #2: Det er nok å teste på noen vanlige enheter
- På forskjellige enheter ser applikasjonen din annerledes ut fordi forskjellige enheter har forskjellig maskinvare, skjermstørrelser, minne osv. Du må teste applikasjonen din på forskjellige enheter, OS-versjoner, operatørnettverk og plasseringer.
Myte#3:Utforskende testing rett før lansering er nok
- Generelt i all testing designer vi testsakene og utfører dem. Men i utforskende testing, testdesign og utførelse vil alt gjøres sammen.
- I utforskende testing er det ingen plan og ingen forberedelse, da vil testeren gjøre tester han ønsker å gjøre. Noen funksjoner vil bli testet gjentatte ganger, mens noen funksjoner ikke vil bli testet helt.
Myte#4:Hvis det er noen feil i programmet, vil brukerne forstå
- Hvis applikasjonen ikke fungerer og har feil, avinstallerer brukere appen din
- Kvalitetsproblemer er den første grunnen til dårlig anmeldelse i Google Play. Det påvirker omdømmet ditt og du mister kundens tillit.
Derfor er det viktig å ha en riktig android-teststrategi på plass
Beste praksis i Android Testing
- Applikasjonsutviklere bør lage testsakene samtidig når de skriver koden
- Alle testtilfeller bør lagres i versjonskontroll sammen med kildekode
- Bruk kontinuerlig integrasjon og kjør tester hver gang koden endres
- Unngå å bruke emulatorer og rotfestede enheter


.png)
.png)