Hvorfor Android-tester?
Android er det største operativsystemet i verden. Samtidig er Android fragmentert. det er mange 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åelig og feil vil dukke opp.
I denne veiledningen vil du lære-
- Hvorfor Android-tester?
- Android-teststrategi
- Enhetstester
- Integrasjonstester
- Operasjonelle tester
- Systemtester
- Automatisert ANDROID-TESTING
- Android-testrammeverk
- Robolektrisk testrammeverk
- Myter om Android-testing
- Beste fremgangsmåter innen Android-testing
Android-teststrategi
En riktig Android-teststrategi bør inneholde følgende
- Enhetstest
- Integrasjonstest
- Operasjonell test
- Systemtest
Enhetstester
Enhetstester inkluderer sett med ett eller flere programmer som er designet for å verifisere en atomenhet med kildekode, for eksempel en metode eller en klasse.
Android-plattformen kommer forhåndsintegrert Junit 3.0-rammeverk. Det er åpen kildekode for automatisering av enhetstesting. Android Testing Framework er et kraftig verktøy for utviklere å skrive det effektive enhetstestprogrammet.
Integrasjonen av Android og JUnit framework
Et tillegg til Unit Testing er UI-tester. Disse testene gjelder UI-komponenter i målapplikasjonen. UI-tester sørger for at applikasjonen din returnerer riktig UI-utgang som svar på rekkefølgen av brukerhandlinger på enheten.
Vanlige brukergrensesnitthandlinger på applikasjonen
Den vanlige måten å utføre UI-tester på enheten er Android Instrumentation. Men dette har ytelsesproblemer. Et av de beste verktøyene for å utføre UI-testing på Android er Robotium.
Integrasjonstester
I integrasjonstesting kombineres og verifiseres alle enhetstestede moduler. I Android innebærer integrasjonstester ofte å kontrollere integrering med Android-komponenter som tjenestetesting, aktivitetstesting, innholdsleverandørtesting osv
Typer av integrasjonstest på Android
Det er mange testrammer som brukes til å gjennomføre integrasjonstest for Android som Troyd, Robolectric, Robotium.
Operasjonelle tester
- Operasjonelle kalles også Funksjonstester eller Akseptasjonstester. Det er tester på høyt nivå som er utformet for å sjekke om applikasjonen er fullstendig og korrekt.
- I Android er FitNesse open source-rammeverk som gjør det enkelt å utføre operasjonelle tester for målapplikasjon.
Systemtester
I systemtesting blir systemet testet som en helhet og samspillet mellom komponentene, programvaren og maskinvaren blir sjekket.
I Android inkluderer systemtesting normalt
- GUI-tester
- Brukervennlighetstester
- Ytelsestester
- Stresstester
I listen ovenfor får Performance Testing mer fokus. Du kan bruke verktøy som Traceview til å utføre ytelsestest på Android. Dette verktøyet kan hjelpe deg med å feilsøke applikasjonen din og profilere ytelsen.
Automatisert ANDROID-TESTING
Ettersom android er fragmentert, er det nødvendig å teste på mange enheter. Men dette vil også koste deg penger. Automatisert Android-testing kan bidra til å redusere kostnadene
Fordeler med automatisert Android-testing
- Reduser tiden for gjennomføring av testsaker
- Øk produktiviteten i utviklingsprosessen
- Tidlig feildeteksjon, spar kostnader ved programvarevedlikehold
- Raskt funnet og fikset feilene ved implementering
- Sikre kvaliteten på programvaren
Vi vil studere de to følgende rammene
- Android Testing framework
- Robolectric Testing framework
Android-testrammeverk
En av standard testrammer for Android-applikasjoner er Android-testrammeverk . Det er et kraftig og brukervennlig testrammeverk som er godt integrert med Android SDK-verktøyene.
Android testing rammeverk Arkitektur
- Søknadspakke er målapplikasjonen din som må testes
- InstrumentationTestRunner er Test Case-løperen som utfører testcase på målapplikasjonen. Det inkluderer:
2a) Testverktøy: Et SDK-verktøy for å bygge test. De er integrert i Eclipse IDE eller kjøres som kommandolinje.
2b) MonkeyRunner: Et verktøy som gir APIer for å skrive program som styrer en Android-enhet eller emulator utenfor Android-koden.
- Testpakken er organisert i testprosjekter. Denne pakken følger navnekonvensjonen. Hvis applikasjonen som testes har pakkenavnet "com.mydomain.myapp" enn testpakke, bør det være "com.mydomain.myapp.test". Testpakke inneholder to objekter som nedenfor:
3a) Test case-klasser: inkluderer testmetoder som skal utføres på målapplikasjonen.
3b) Mock-objekter: inkluderer mock-data som vil bli brukt som prøveinngang for testsaker.
Android Test Case-klasser
AndroidTestCase klassediagram
- TestCase inkluderer JUnit-metoder for å kjøre JUnit-test
- TestSuite brukes til å kjøre sett med testtilfeller
- InstrumentationTestSuite er en TestSuite som injiserer Instrumentation i InstrumentationTestCase før du kjører dem.
- InstrumentationTestRunner er test case-løperen som utfører test case på målapplikasjonen.
- AndroidTestCase utvider JUnit TestCase. Den inneholder metoder for tilgang til ressurser som Activity Context.
- ApplicationTestCase verifiserer applikasjonsklassene i et kontrollert miljø.
- InstrumentationTestCase verifiserer en bestemt funksjon eller oppførsel til målapplikasjonen, for eksempel for å verifisere UI-utdata fra applikasjonen.
- ActivityTestCase er basisklasse som støtter testing av applikasjonsaktivitetene.
- ProviderTestCase er klasse for testing av enkelt ContentProvider.
- ServiceTestCase brukes til å teste serviceklasser i testmiljø. Den støtter også Service livssyklus.
- SingeLauchActivityTestCase brukes til å teste enkelt aktivitet med en InstrumentationTestCase.
- ActivityUnitTestCase
brukes til å teste enkelt isolert aktivitet. - ActivityInstrumentationTestCase2
utvider JUnit TestCase-klassen. Den kobler deg til målapplikasjon med instrumentering. Med denne klassen kan du få tilgang til applikasjonens GUI-komponent og sende UI-hendelse (tastetrykk eller berøringshendelse) til brukergrensesnittet.
Nedenfor er et eksempel på ActivityInstrumentationTestCase. Det verifiserer UI-driften av Calculator-applikasjonen, sjekk riktigheten av UI-utgangene.
ActivityInstrumentationTestCase2 testing eksempel
Robolektrisk testrammeverk
Det er vanskelig å teste med Android Testing framework med enhet eller emulator. Bygging og løpingstest går tregt og krever mye utviklingsarbeid. For å løse dette problemet er det et annet valg - Robolectric testing framework.
Robolectric framework lar deg kjøre Android-tester direkte på JVM uten behov for en enhet eller en emulator.
Avanserte funksjoner i Robolectric
Robolektriske prøvesaksklasser
Drift av Robolectric
- Som vist ovenfor kan Robolectric utføre følgende handlinger:
- Registrer deg og opprett en Shadow-klasse
- Avskjær lasting av Android-klasse
- Bruker javaassist for å overstyre metodekroppene til Android-klassen
- Bind Shadow-objekt til Android-klasse
- Dette gjør at koden under test kan kjøres uten Android-miljø.
Andre tester rammeverket
I tillegg til å teste rammer som ble nevnt ovenfor, er det mange andre testrammer som:
- Android Junit Report, en tilpasset instrumenteringstestløper for Android som genererer XML-rapporter for integrering med andre verktøy.
- Expresso
- Appium
Myter om Android-testing
Mange bedrifter utvikler Android-teststrategier som er basert på vanlige misforståelser. Denne delen undersøker noen populære myter og realiteter av Android-testing.
Myte nr. 1: Alle Android-enheter er de samme ... test på emulatorer er nok
La oss starte med et enkelt eksempel. Et program fungerer perfekt på emulatorer, men på noen virkelige enheter krasjer det under utførelse
Søknad krasjer under kjøring på ekte enhet
Emulatorer er ikke tilstrekkelig for mobiltesting. Du må teste appen din på ekte enheter.
Myte nr. 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 på forskjellige enheter, OS-versjoner, operatørnettverk og steder.
Myte nr. 3: Utforskende testing rett før lansering er nok
- Generelt i all testing designer vi testtilfellene og utfører dem. Men i utforskende testing vil testdesign og utførelse bli gjort sammen.
- I utforskende testing er det ingen plan og ingen forberedelser, så tester vil gjøre tester han vil gjøre. Noen funksjoner vil bli testet gjentatte ganger, mens noen funksjoner ikke vil bli testet helt.
Myte nr.4: Hvis det er noen feil i applikasjonen, vil brukerne forstå det
- Hvis applikasjonen ikke fungerer og har feil, avinstallerer brukerne appen din
- Kvalitetsproblemer er den første årsaken til dårlig gjennomgang i Google Play. Det påvirker omdømmet ditt, og du mister kundens tillit.
Derfor er det viktig å ha en skikkelig Android-teststrategi på plass
Beste fremgangsmåter innen Android-testing
- Applikasjonsutviklere bør lage testtilfellene samtidig når de skriver koden
- Alle testtilfeller skal lagres i versjonskontroll sammen med kildekoden
- Bruk kontinuerlig integrering og kjør tester hver gang koden endres
- Unngå å bruke emulatorer og rotte enheter