Android APP Test Tutorial med Automation Framework

Hvorfor Android Test?

Android er det stรธrste operativsystem i verden. Pรฅ samme tid, Android er fragmenteret. der er tonsvis af enheder og Android versioner, som din app skal vรฆre kompatibel med.

Android Test

Det er lige meget, hvor meget tid du investerer i design og implementering, fejl er uundgรฅelige, og fejl vil dukke op.

Android Test

Android Teststrategi

En korrekt android-teststrategi bรธr omfatte fรธlgende

  1. Enhedstest
  2. Integrationstest
  3. Operational test
  4. Systemtest

Android Teststrategi

Enhedstest

Enhedstest omfatter sรฆt af et eller flere programmer, som er designet til at verificere en atomare enhed af kildekode, sรฅsom en metode eller en klasse.

Android platform leveres prรฆ-integreret Junit 3.0 ramme. Det er open source-ramme til automatisering Enhedstest. Android Testing Framework er et kraftfuldt vรฆrktรธj for udviklere til at skrive det effektive enhedstestprogram.

Integration af Android og JUnit Framework
Integrationen af Android og JUnit rammer

En tilfรธjelse til Unit Testing er User Interface (UI) test. Disse tests relaterer sig til UI-komponenter i din mรฅlapplikation. UI-tests sikrer, at din applikation returnerer det korrekte UI-output som svar pรฅ rรฆkkefรธlgen af โ€‹โ€‹brugerhandlinger pรฅ enheden.

Almindelige brugergrรฆnsefladehandlinger pรฅ applikation
Almindelige brugergrรฆnsefladehandlinger pรฅ applikationen

Den almindelige mรฅde at udfรธre UI-test pรฅ enheden er Android Instrumentering. Men dette har prรฆstationsproblemer. Et af de bedste vรฆrktรธjer til at udfรธre UI-test pรฅ Android is Robotium.

Integrationstest

In Integrationstest, alle enhedstestede moduler, kombineres og verificeres. I Android, involverer integrationstest ofte kontrol af integration medAndroid komponenter som Servicetest, Aktivitetstest, Content Provider test mv

Integrationstest
Typer af integrationstest pรฅ Android

Der er mange testrammer, der bruges til at udfรธre integrationstest for Android sรฅsom Troyd, Robolectric, Robotium.

Operanationale prรธver

  • Operationelle kaldes ogsรฅ funktionelle tests eller accepttests. De er test pรฅ hรธjt niveau designet til at kontrollere fuldstรฆndigheden og rigtigheden af โ€‹โ€‹ansรธgningen.
  • In Android, FitNesse er open source-ramme, der gรธr det nemt at udfรธre operationelle test til mรฅlapplikation.

System tests

In Systemtest systemet testes som en helhed, og samspillet mellem komponenter, software og hardware kontrolleres.

In Android, Systemtest inkluderer normalt

  • GUI test
  • Brugbarhedstest
  • Ydelsestest
  • Stresstest

I ovenstรฅende liste, Test af ydeevne fรฅr mere fokus. Du kan bruge vรฆrktรธjer som f.eks Traceview at udfรธre prรฆstationstest pรฅ Android Dette vรฆrktรธj kan hjรฆlpe dig med at fejlsรธge din applikation og profilere dens ydeevne.

Automatiseret ANDROID-TEST

Da Android er fragmenteret, er det nรธdvendigt at teste pรฅ mange enheder. Men det vil ogsรฅ koste dig penge. Automatiseret Android Test kan hjรฆlpe med at reducere omkostningerne

Fordele ved automatiseret Android-test

  • Reducer tid til at udfรธre testcases
  • ร˜g produktiviteten i din udviklingsproces
  • Tidlig fejldetektion, spar omkostninger pรฅ softwarevedligeholdelse
  • Find hurtigt og ret fejlene ved implementering
  • Sikre kvaliteten af โ€‹โ€‹softwaren

Vi vil studere fรธlgende 2 rammer

  • Android Testramme
  • Roboelektrisk testramme

Android testramme

En af standard testrammer for Android ansรธgning er Android testramme. Det er en kraftfuld og nem at bruge testramme, der er godt integreret med Android SDK vรฆrktรธjer.

Android Testramme
Android testramme Architecture
  1. Ansรธgningspakke er din mรฅlapplikation, som skal testes
  2. InstrumentationTestRunner er Test sag runner, der udfรธrer testcase pรฅ mรฅlapplikationen. Det omfatter:

2) Testvรฆrktรธjer: Et SDK-vรฆrktรธj til byggetest. De er integreret i Eclipse IDE eller kรธr som kommandolinje.

2b) MonkeyRunner: Et vรฆrktรธj, der leverer API'er til at skrive program, der styrer en Android enhed eller emulator udenfor Android kode.

  1. Testpakke er organiseret i testprojekter. Denne pakke fรธlger navnekonventionen. Hvis applikationen under test har pakkenavnet "com.mydomain.myapp", skal testpakken vรฆre "com.mydomain.myapp.test". Testpakken indeholder 2 objekter som nedenfor:

3a) Testcaseklasser: omfatter testmetoder, der skal udfรธres pรฅ mรฅlapplikationen.

3b) Mock-objekter: inkluderer mock-data, der vil blive brugt som eksempelinput til testcases.

Android Test Case klasser

Android Test Case klasser
AndroidTestCase klassediagram
  1. Test sag omfatter JUnit metoder til at kรธre JUnit prรธve
  2. TestSuite bruges til at kรธre sรฆt af testcases
  3. InstrumentationTestSuite er en TestSuite, der injicerer Instrumentation i InstrumentationTestCase, fรธr de kรธres.
  4. InstrumentationTestRunner er testcase-lรธberen, der udfรธrer testcase pรฅ mรฅlapplikationen.
  5. AndroidTest sag udvider JUnit Test sag. Den indeholder metoder til at fรฅ adgang til ressourcer som Aktivitetskontekst.
  6. ApplicationTestCase verificerer applikationsklasserne i et kontrolleret miljรธ.
  7. InstrumentationTestCase verificerer en bestemt funktion eller adfรฆrd i mรฅlapplikationen, f.eks. verificere UI-output af applikationen.
  8. ActivityTestCase er basisklasse, der understรธtter test af applikationsaktiviteterne.
  9. ProviderTestCase er klasse til test af enkelt ContentProvider.
  10. ServiceTestCase bruges til at teste serviceklasser i testmiljรธ. Det understรธtter ogsรฅ tjenestens livscyklus.
  11. SingeLauchActivityTestCase bruges til at teste enkelt aktivitet med en InstrumentationTestCase.
  12. ActivityUnitTestCase bruges til at teste enkelt isoleret aktivitet.
  13. AktivitetInstrumentationTestCase2 udvider JUnit TestCase klasse. Det forbinder dig til mรฅlapplikationen med instrumentering. Med denne klasse kan du fรฅ adgang til applikationens GUI-komponent og sende UI-hรฆndelse (tastetryk eller berรธringshรฆndelse) til UI.

Nedenfor er et eksempel pรฅ ActivityInstrumentationTestCase. Det verificerer UI-driften af โ€‹โ€‹Calculator-applikationen, kontroller rigtigheden af โ€‹โ€‹UI-output.

ActivityInstrumentationTestCase2 Test
ActivityInstrumentationTestCase2 testeksempel

Roboelektrisk testramme

Test vha Android Det er svรฆrt at teste rammer med enhed eller emulator. Bygge- og kรธretest er langsom og krรฆver meget udviklingsindsats. For at lรธse dette problem er der et andet valg โ€“ Roboelektrisk testramme.

Robolectric framework giver dig mulighed for at lรธbe Android tests direkte pรฅ JVM uden behovet for en enhed eller en emulator.

Avancerede funktioner i Robolectric
Avancerede funktioner i Robolectric

Klasser af roboelektriske testtilfรฆlde

Operation af Robolectric
Operation af Robolectric
  • Som vist ovenfor kan Robolectric udfรธre fรธlgende handlinger:
  • Tilmeld dig og opret en Shadow-klasse
  • Opsnappe indlรฆsningen af Android klasse
  • Bruger javaassist til at tilsidesรฆtte metodelegemerne af Android klasse
  • Bind Shadow objekt til Android klasse
  • Dette gรธr det muligt for koden under test at kรธre uden Android miljรธ.

Andre testramme

Udover testrammer, som blev nรฆvnt ovenfor, er der mange andre testrammer sรฅsom:

Myter om Android Test

Mange virksomheder udvikler Android Test strategier, der er baseret pรฅ almindelige misforstรฅelser. Dette afsnit undersรธger et par populรฆre myter og realiteter om Android testning.

Myte #1: Alle Android enheder er de samme ... test pรฅ emulatorer er nok

Lad os starte med et simpelt eksempel. En applikation fungerer perfekt pรฅ emulatorer, men pรฅ nogle rigtige enheder gรฅr den ned under udfรธrelse

Applikationen gรฅr ned under udfรธrelse pรฅ rigtig enhed
Applikationen gรฅr ned under udfรธrelse pรฅ en rigtig enhed

Emulatorer er ikke tilstrรฆkkelig til din mobiltest. Du skal teste din app pรฅ rigtige enheder.

Myte #2: Det er nok at teste pรฅ nogle almindelige enheder

  • Pรฅ forskellige enheder ser din applikation anderledes ud, fordi forskellige enheder har forskellig hardware, skรฆrmstรธrrelser, hukommelse osv. Du skal teste din applikation pรฅ forskellige enheder, OS-versioner, operatรธrnetvรฆrk og placeringer.

Myte#3: Udforskende test lige fรธr lancering er nok

  • Generelt i al testning designer vi testcaserne og udfรธrer dem derefter. Men i Exploratory testing, testdesign og udfรธrelse vil alt blive udfรธrt sammen.
  • I udforskende test er der ingen plan og ingen forberedelse, sรฅ ville testeren lave test, som han vil lave. Nogle funktioner vil blive testet gentagne gange, mens nogle funktioner ikke vil blive testet helt.

Myte #4: Hvis der er nogle fejl i applikationen, vil brugerne forstรฅ

  • Hvis programmet ikke virker og har fejl, afinstallerer brugerne din app
  • Kvalitetsproblemer er den fรธrste รฅrsag til dรฅrlig anmeldelse i Google Play. Det pรฅvirker dit omdรธmme, og du mister kundernes tillid.

Derfor er det vigtigt at have en ordentlig android-teststrategi pรฅ plads

Bedste รธver sig i Android Test

  • Applikationsudviklere bรธr oprette testcases pรฅ samme tid, nรฅr de skriver koden
  • Alle testcases skal gemmes i versionskontrol sammen med kildekode
  • Brug kontinuerlig integration og kรธr test hver gang koden รฆndres
  • Undgรฅ at bruge emulatorer og rootede enheder

Opsummer dette indlรฆg med: