Android APP Testing Tutorial med Automation Framework

Innehållsförteckning:

Anonim

Varför testa Android?

Android är det största operativsystemet i världen. Samtidigt är Android fragmenterad. det finns massor av enheter och Android-versioner som din app måste vara kompatibel med.

Det spelar ingen roll hur mycket tid du investerar i design och implementering, misstag är oundvikliga och buggar kommer att visas.

I den här handledningen lär du dig-

  • Varför testa Android?
  • Android-teststrategi
    • Enhetstester
    • Integrationstester
    • Operativa tester
    • Systemtest
  • Automatiserad ANDROID-TESTNING
    • Android-testramverk
    • Robolektriskt testramverk
  • Myter om Android-testning
  • Bästa metoder i Android-testning

Android-teststrategi

En korrekt Android-teststrategi bör innehålla följande

  1. Enhetstest
  2. Integrationstest
  3. Operativt test
  4. Systemtest

Enhetstester

Enhetstester inkluderar uppsättningar av ett eller flera program som är utformade för att verifiera en atomenhet av källkod, till exempel en metod eller en klass.

Android-plattformen kommer förintegrerat Junit 3.0-ramverk. Det är en öppen källkod för automatisering av enhetstestning. Android Testing Framework är ett kraftfullt verktyg för utvecklare att skriva ett effektivt enhetstestprogram.

Integrationen av Android och JUnit framework

Ett tillägg till Unit Testing är UI-tester (User Interface). Dessa tester avser UI-komponenter i din målapplikation. UI-test säkerställer att din applikation returnerar rätt UI-utgång som svar på sekvensen av användaråtgärder på enheten.

Vanliga användargränssnittsåtgärder på applikationen

Det vanliga sättet att utföra UI-tester på enheten är Android Instrumentation. Men detta har prestandafrågor. Ett av de bästa verktygen för att utföra UI-testning på Android är Robotium.

Integrationstester

I Integration Testing kombineras och verifieras alla enhetstestade moduler. I Android involverar integrationstester ofta kontroll av integration med Android-komponenter som servicetestning, aktivitetstestning, innehållsleverantörstestning etc.

Typer av integrationstest på Android

Det finns många testramar som används för att genomföra integrationstest för Android som Troyd, Robolectric, Robotium.

Operativa tester

  • Operational kallas också Functional Tests eller Acceptation Tests. Det är tester på hög nivå som är utformade för att kontrollera fullständigheten och riktigheten i applikationen.
  • I Android är FitNesse ett open source-ramverk som gör det enkelt att utföra operativa tester för målapplikationen.

Systemtest

Vid systemtestning testas systemet som en helhet och interaktionen mellan komponenter, programvara och hårdvara kontrolleras.

I Android inkluderar systemtest normalt

  • GUI-tester
  • Användbarhetstester
  • Prestandatester
  • Stresstester

I listan ovan ges prestandatestning mer fokus. Du kan använda verktyg som Traceview för att utföra prestandatest på Android. Detta verktyg kan hjälpa dig att felsöka din applikation och profilera dess prestanda.

Automatiserad ANDROID-TESTNING

Eftersom android är fragmenterad är det nödvändigt att testa på många enheter. Men detta kommer också att kosta dig pengar. Automatiserad Android-testning kan hjälpa till att sänka kostnaderna

Fördelar med automatiserad Android-testning

  • Minska tiden för att genomföra testfall
  • Öka produktiviteten i din utvecklingsprocess
  • Tidig upptäckt av fel, spara kostnader vid programunderhåll
  • Snabbt hittat och fixat buggar vid implementering
  • Säkerställa kvaliteten på programvaran

Vi kommer att studera följande två ramar

  • Android-testramverk
  • Robolektriskt testramverk

Android-testramverk

En av de vanliga testramarna för Android-applikationer är Android-testramverk . Det är ett kraftfullt och lättanvänt testramverk som är väl integrerat med Android SDK-verktygen.

Android-testramverk Arkitektur

  1. Applikationspaketet är din målapplikation som måste testas
  2. InstrumentationTestRunner är testfallslöparen som kör testfall på målapplikationen. Det inkluderar:

2a) Testverktyg: Ett SDK-verktyg för att bygga test. De är integrerade i Eclipse IDE eller körs som kommandorad.

2b) MonkeyRunner: Ett verktyg som tillhandahåller API: er för att skriva program som styr en Android-enhet eller emulator utanför Android-koden.

  1. Testpaketet är organiserat i testprojekt. Detta paket följer namngivningskonventionen. Om applikationen som testas har ett paketnamn "com.mydomain.myapp" än testpaket bör vara "com.mydomain.myapp.test". Testpaketet innehåller två objekt enligt nedan:

3a) Testfallsklasser: inkludera testmetoder som ska köras i målapplikationen.

3b) Mock-objekt: inkluderar mock-data som kommer att användas som provingång för testfall.

Android-testfallsklasser

AndroidTestCase klassdiagram

  1. TestCase innehåller JUnit-metoder för att köra JUnit-test
  2. TestSuite används för att köra uppsättning testfall
  3. InstrumentationTestSuite är en TestSuite som injicerar Instrumentation i InstrumentationTestCase innan du kör dem.
  4. InstrumentationTestRunner är testfallslöparen som utför testfallet på målapplikationen.
  5. AndroidTestCase utökar JUnit TestCase. Den innehåller metoder för att komma åt resurser som Activity Context.
  6. ApplicationTestCase verifierar applikationsklasserna i en kontrollerad miljö.
  7. InstrumentationTestCase verifierar en viss funktion eller beteende hos målapplikationen, till exempel verifierar UI-utdata från applikationen.
  8. ActivityTestCase är basklass som stöder testning av applikationsaktiviteter.
  9. ProviderTestCase är klass för testning av enstaka ContentProvider.
  10. ServiceTestCase används för att testa serviceklasser i testmiljö. Den stöder också Service livscykel.
  11. SingeLauchActivityTestCase används för att testa enstaka aktivitet med ett InstrumentationTestCase.
  12. ActivityUnitTestCase används för att testa enstaka isolerade aktiviteter.
  13. ActivityInstrumentationTestCase2 utökar JUnit TestCase-klassen. Det ansluter dig till målapplikation med instrumentering. Med den här klassen kan du komma åt programmets GUI-komponent och skicka UI-händelse (tangenttryckning eller pekhändelse) till UI.

Nedan följer ett exempel på ActivityInstrumentationTestCase. Det verifierar användargränssnittet för Calculator-applikationen, kontrollera att UI-utgångarna är korrekta.

ActivityInstrumentationTestCase2 testexempel

Robolektriskt testramverk

Testning med Android Testing framework med enhet eller emulator är svårt. Att bygga och köra test är långsamt och kräver mycket utvecklingsarbete. För att åtgärda problemet finns det ett annat val - Robolektrisk testramverk .

Robolectric ramverk låter dig köra Android-tester direkt på JVM utan att behöva en enhet eller en emulator.

Förhandsfunktioner i Robolectric

Robolektriska testfallsklasser

Drift av Robolectric

  • Som visas ovan kan Robolectric utföra följande åtgärder:
  • Registrera dig och skapa en Shadow-klass
  • Avlyssna laddningen av Android-klass
  • Använder javaassist för att åsidosätta metodkropparna i Android-klassen
  • Bind Shadow-objekt till Android-klass
  • Detta gör att koden som testas kan köras utan Android-miljö.

Andra testar ramverk

Förutom testramar som nämnts ovan finns det många andra testramar som:

  • Android Junit Report, en anpassad instrumentlöpare för Android som genererar XML-rapporter för integration med andra verktyg.
  • Expresso
  • Appium

Myter om Android-testning

Många företag utvecklar Android-teststrategier som bygger på vanliga missuppfattningar. I det här avsnittet undersöks några populära myter och verkligheter för Android-testning.

Myt nr 1: Alla Android-enheter är desamma ... test på emulatorer räcker

Låt oss börja med ett enkelt exempel. Ett program fungerar perfekt på emulatorer men på vissa riktiga enheter kraschar det under körning

Program kraschar under körning på riktig enhet

Emulatorer räcker inte för din mobiltestning. Du måste testa din app på riktiga enheter.

Myt nr 2: Det räcker att testa på vissa vanliga enheter

  • På olika enheter ser din applikation annorlunda ut eftersom olika enheter har olika hårdvara, skärmstorlekar, minne etc. Du måste testa din applikation på olika enheter, OS-versioner, operatörsnätverk och platser.

Myt nr 3: Explorerande testning precis innan lanseringen räcker

  • Generellt i alla tester designar vi testfallet och kör dem sedan. Men i Exploratory testing, testdesign och utförande kommer allt att göras tillsammans.
  • I utforskande testning finns det ingen plan och ingen förberedelse, då skulle testaren göra tester som han vill göra. Vissa funktioner testas upprepade gånger, medan vissa funktioner inte testas helt.

Myt nr 4: Om det finns några buggar i applikationen kommer användarna att förstå

  • Om applikationen inte fungerar och har buggar avinstallerar användare din app
  • Kvalitetsfrågor är den första anledningen till dålig granskning i Google Play. Det påverkar ditt rykte och du tappar kundens förtroende.

Därför är det viktigt att ha en ordentlig Android-teststrategi på plats

Bästa metoder i Android-testning

  • Applikationsutvecklare bör skapa testfall samtidigt som de skriver koden
  • Alla testfall bör lagras i versionskontroll tillsammans med källkod
  • Använd kontinuerlig integration och kör test varje gång koden ändras
  • Undvik att använda emulatorer och rotade enheter