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.

Android Testing

Det spiller ingen rolle hvor mye tid du investerer i design og implementering, feil er uunngåelige, og feil vil dukke opp.

Android Testing

Android Teststrategi

En korrekt android-teststrategi bør inkludere følgende

  1. Enhetstest
  2. Integrasjonstest
  3. Operanasjonal test
  4. Systemtest

Android Teststrategi

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.

Integrasjon av Android og JUnit Rammeverk
Integrasjonen av Android og JUnit rammeverk

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.

Vanlige brukergrensesnitthandlinger på applikasjoner
Vanlige brukergrensesnitthandlinger på applikasjonen

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

Integrasjonstester
Typer integrasjonstest på Android

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.

Android Testramme
Android testramme Architecture
  1. Søknadspakke er målapplikasjonen din som må testes
  2. 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.

  1. 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

Android Test Case-klasser
AndroidTestCase klassediagram
  1. TestCase inkluderer JUnit metoder for å kjøre JUnit test
  2. TestSuite brukes til å kjøre sett med testtilfeller
  3. InstrumentationTestSuite er en TestSuite som injiserer instrumentering i InstrumentationTestCase før du kjører dem.
  4. InstrumentationTestRunner er testcase-løperen som utfører testcase på målapplikasjonen.
  5. AndroidTestCase strekker JUnit TestCase. Den inneholder metoder for å få tilgang til ressurser som aktivitetskontekst.
  6. ApplicationTestCase verifiserer applikasjonsklassene i et kontrollert miljø.
  7. InstrumentationTestCase verifiserer en bestemt funksjon eller oppførsel til målapplikasjonen, for eksempel verifiser UI-utdata for applikasjonen.
  8. ActivityTestCase er en basisklasse som støtter testing av applikasjonsaktivitetene.
  9. ProviderTestCase er en klasse for testing av enkelt innholdsleverandør.
  10. ServiceTestCase brukes til å teste serviceklasser i testmiljø. Den støtter også tjenestens livssyklus.
  11. SingeLauchActivityTestCase brukes til å teste enkeltaktivitet med en InstrumentationTestCase.
  12. ActivityUnitTestCase brukes til å teste enkelt isolert aktivitet.
  13. 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.

ActivityInstrumentationTestCase2 Testing
ActivityInstrumentationTestCase2 testeksempel

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.

Avanserte funksjoner i Robolectric
Avanserte funksjoner i Robolectric

Klasser for roboelektriske testtilfeller

Operasjon av Robolectric
Operasjon av Robolectric
  • 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:

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

Applikasjon krasjer under kjøring på ekte enhet
Applikasjonen krasjer under kjøring på ekte enhet

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