Hvorfor test af Android?
Android er det største operativsystem i verden. På samme tid er Android fragmenteret. der er masser af enheder og Android-versioner, som din app skal være kompatibel med.
Det betyder ikke noget, hvor meget tid du investerer i design og implementering, fejl er uundgåelige, og fejl vises.
I denne vejledning lærer du-
- Hvorfor test af Android?
- Android teststrategi
- Enhedstest
- Integrationstest
- Operationelle tests
- Systemtest
- Automatiseret ANDROID-TESTING
- Android-testramme
- Robolektrisk testramme
- Myter om Android-test
- Bedste fremgangsmåder i Android-test
Android teststrategi
En korrekt Android-teststrategi skal omfatte følgende
- Enhedstest
- Integrationstest
- Operationel test
- Systemtest
Enhedstest
Enhedstest inkluderer sæt af et eller flere programmer, der er designet til at verificere en atomare enhed af kildekoden, såsom en metode eller en klasse.
Android-platformen er præintegreret Junit 3.0-rammen. Det er open source-ramme til automatisering af enhedstest. Android Testing Framework er et kraftfuldt værktøj for udviklere til at skrive det effektive enhedstestprogram.
Integrationen af Android og JUnit framework
En tilføjelse til Unit Testing er UI-tests (User Interface). Disse tests vedrører 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 bruger-UI-handlinger på applikationen
Den almindelige måde at udføre UI-tests på enheden er Android Instrumentation. Men dette har præstationsproblemer. Et af de bedste værktøjer til at udføre UI-test på Android er Robotium.
Integrationstest
I Integration Testing kombineres og verificeres alle enhedstestede moduler. I Android involverer integrationstest ofte kontrol af integration med Android-komponenter såsom servicetest, aktivitetstest, indholdsudbydertest osv
Typer af integrationstest på Android
Der er mange testrammer, der bruges til at gennemføre integrationstest til Android som Troyd, Robolectric, Robotium.
Operationelle tests
- Operationel kaldes også Functional Tests eller Acceptation Tests. De er test på højt niveau designet til at kontrollere fuldstændigheden og rigtigheden af applikationen.
- I Android er FitNesse open source-ramme, der gør det let at udføre operationelle tests til målapplikation.
Systemtest
I systemtest testes systemet som en helhed, og interaktionen mellem komponenter, software og hardware kontrolleres.
I Android inkluderer systemtest normalt
- GUI-tests
- Usability tests
- Ydelsestest
- Stresstest
På ovenstående liste får Performance Testing mere fokus. Du kan bruge værktøjer som Traceview til at udføre ydelsestest på Android. Dette værktøj kan hjælpe dig med at fejle din applikation og profilere dens ydeevne.
Automatiseret ANDROID-TESTING
Da android er fragmenteret, er det nødvendigt at teste på mange enheder. Men dette vil også koste dig penge. Automatiseret Android-test kan hjælpe med at reducere omkostningerne
Fordele ved automatiseret Android-test
- Reducer tiden til udførelse af testsager
- Øg produktiviteten i din udviklingsproces
- Tidlig bugsporing, spar omkostninger ved vedligeholdelse af software
- Hurtigt fundet og rette fejlene ved implementering
- Sikre kvaliteten af softwaren
Vi studerer de følgende 2 rammer
- Android-testramme
- Robolektrisk testramme
Android-testramme
En af standardtestrammerne til Android-applikationer er Android-testrammer . Det er en kraftfuld og brugervenlig testramme, der er godt integreret med Android SDK-værktøjerne.
Android-testramme Arkitektur
- Ansøgningspakke er din målapplikation, der skal testes
- InstrumentationTestRunner er Test Case-løberen, der udfører testcase på målapplikationen. Det omfatter:
2a) Testværktøjer: Et SDK-værktøj til bygningstest. De er integreret i Eclipse IDE eller kører som kommandolinje.
2b) MonkeyRunner: Et værktøj, der leverer API'er til skriveprogrammer, som styrer en Android-enhed eller emulator uden for Android-kode.
- Testpakken er organiseret i testprojekter. Denne pakke følger navngivningskonventionen. Hvis applikationen under test har pakkenavnet "com.mydomain.myapp" end Testpakke skal være "com.mydomain.myapp.test". Testpakke indeholder 2 objekter som nedenfor:
3a) Test case klasser: inkluderer testmetoder, der skal udføres på målapplikationen.
3b) Mock-objekter: inkluderer mock-data, der vil blive brugt som prøveindgang til testsager.
Android Test Case-klasser
AndroidTestCase klassediagram
- TestCase inkluderer JUnit-metoder til at køre JUnit-test
- TestSuite bruges til at køre sæt testsager
- InstrumentationTestSuite er en TestSuite, der injicerer Instrumentation i InstrumentationTestCase, før den køres.
- InstrumentationTestRunner er testcase-løberen, der udfører testcase på målapplikationen.
- AndroidTestCase udvider JUnit TestCase. Den indeholder metoder til adgang til ressourcer som Activity Context.
- ApplicationTestCase verificerer applikationsklasser i et kontrolleret miljø.
- InstrumentationTestCase verificerer en bestemt funktion eller adfærd for målapplikationen, for eksempel for at verificere UI-output fra applikation.
- ActivityTestCase er basisklasse, der understøtter test af applikationsaktiviteter.
- ProviderTestCase er klasse til test af enkelt ContentProvider.
- ServiceTestCase bruges til at teste serviceklasser i testmiljø. Det understøtter også Services livscyklus.
- SingeLauchActivityTestCase bruges til at teste enkelt aktivitet med en InstrumentationTestCase.
- ActivityUnitTestCase
bruges til at teste enkelt isoleret aktivitet. - ActivityInstrumentationTestCase2
udvider JUnit TestCase-klassen. Det forbinder dig til målapplikation med instrumentering. Med denne klasse kan du få adgang til applikations GUI-komponent og sende UI-begivenhed (tastetryk eller berøringshændelse) til UI.
Nedenfor er et eksempel på ActivityInstrumentationTestCase. Det verificerer UI-funktionen i Calculator-applikationen, kontroller rigtigheden af UI-output.
ActivityInstrumentationTestCase2 testeksempel
Robolektrisk testramme
Test ved hjælp af Android Testing framework med enhed eller emulator er vanskelig. Opbygning og kørsel test er langsom og kræver meget udviklingsindsats. For at løse dette problem er der et andet valg - Robolektrisk testramme .
Robolektrisk ramme giver dig mulighed for at køre Android-tests direkte på JVM uden behov for en enhed eller en emulator.
Avancerede funktioner i Robolectric
Robolektriske testklasser
Drift af Robolectric
- Som vist ovenfor kan Robolectric udføre følgende handlinger:
- Registrer og opret en Shadow-klasse
- Opfang indlæsningen af Android-klasse
- Bruger javaassist til at tilsidesætte metoderne i Android-klassen
- Bind skyggeobjekt til Android-klasse
- Dette gør det muligt for koden under test at køre uden Android-miljø.
Andre tester rammer
Udover testrammer, der blev nævnt ovenfor, er der mange andre testrammer som:
- Android Junit Report, en brugerdefineret instrumenteringstest til Android, der genererer XML-rapporter til integration med andre værktøjer.
- Expresso
- Appium
Myter om Android-test
Mange virksomheder udvikler Android-teststrategier, der er baseret på almindelige misforståelser. Dette afsnit undersøger et par populære myter og realiteter af Android-test.
Myte nr. 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
Applikation går ned under udførelse på ægte enhed
Emulatorer er ikke tilstrækkelige til din mobiltest. Du skal teste din app på rigtige enheder.
Myte nr. 2: Det er nok at teste på nogle almindelige enheder
- På forskellige enheder ser din applikation anderledes ud, fordi forskellige enheder har forskellige hardware, skærmstørrelser, hukommelse osv. Du skal teste din applikation på forskellige enheder, OS-versioner, transportnetværk og placeringer.
Myte nr. 3: Eksplorativ test lige før lanceringen er nok
- Generelt i al test designer vi testkasserne og udfører dem derefter. Men i sonderende test, testdesign og udførelse vil alle blive gjort sammen.
- I sonderende test er der ingen plan og ingen forberedelse, så tester ville lave tests, som han ønsker at gøre. Nogle funktioner testes gentagne gange, mens nogle funktioner ikke testes helt.
Myte nr. 4: Hvis der er nogle fejl i applikationen, vil brugerne forstå det
- Hvis applikationen ikke fungerer og har fejl, afinstallerer brugerne din app
- Kvalitetsproblemer er den første årsag til dårlig gennemgang i Google Play. Det påvirker dit omdømme, og du mister kundens tillid.
Derfor er det vigtigt at have en ordentlig Android-teststrategi på plads
Bedste fremgangsmåder i Android-test
- Applikationsudviklere skal oprette testsagerne på samme tid, når de skriver koden
- Alle testsager skal opbevares i versionskontrol sammen med kildekode
- Brug kontinuerlig integration og kør tests hver gang koden ændres
- Undgå at bruge emulatorer og rodfæstede enheder