Skip to main content

En människas genomsnittliga uppmärksamhetsspann är mindre än 9 sekunder! Har du någonsin undrat varför? De flesta mobilapplikationer som har dykt upp på senare tid kräver att du rullar ned genom ett flöde, där hjärnan finjusteras för att inte titta på något i mer än några sekunder. Detta har lett till en betydande minskning av den genomsnittliga användarens uppmärksamhetsspann.

Med det stora utbudet av mobilapplikationer som finns i appbutiken följer ett stort ansvar för testning av mobilappar och för att skala upp regressionstestningen. Det är där verktyg för mobiltestning kommer väl till pass. 

Jag var en av de tidiga användarna av ramverk för mobiltestning, och enligt min erfarenhet har fokus på automatisering, formfaktorer och prestandatestning spelat en lika viktig roll för att skala upp och öka genomslaget i mobilvärlden. I den här artikeln delar jag med mig av de mest effektiva teknikerna för att automatisera tester av dina mobilapplikationer.

Continue Reading for Free

Create a free account to finish this article, plus get ongoing access to timely insights and practical resources.

Testning av mobilapplikationer: komponenter att ta hänsyn till

Testning på en specifik plattform har sina egna utmaningar, men med mobiler finns det ytterligare parametrar som du behöver ta hänsyn till. Oavsett om du utför manuell testning eller testautomatisering behöver dina testfall, utöver funktionstestning, fokusera på:

Anslutning

Det är viktigt att hantera vad som händer om en användare använder sin mobila enhet i flygplansläge eller offline, vad som händer om bandbredden varierar och så vidare, för att säkerställa att appen fungerar. 

Get regular tech leadership wisdom for delivering better software and systems.

Plats 

Särskilt för mobilapplikationer som är beroende av GPS eller platsbaserade tjänster måste testningen utföras genom att simulera plats med hjälp av verktyg som MobileSpy, Location Spoofer och så vidare. Annars skulle det vara svårt att testa – till exempel om du vill simulera ett testscenario för en mobilapplikation för samåkning, där någon beställer en resa från NYC och ändringar har gjorts i de backend-mikrotjänster som är specifika för att hitta föraren på den platsen. Utan simulering skulle testerna inte ge korrekta resultat. 

Operativsystem

Särskilt med tanke på det antal Android-telefoner som finns på marknaden idag är det nästan omöjligt att testa alla tillgängliga OS-versioner – hur prioriterar man då? Med iOS har du ytterligare utmaningar som Apple ställer inför dig när det gäller Xcode-versioner som är kopplade till ändringar i OS-versionen. 

Numera använder företag tredjepartsleverantörer som BrowserStack för att tillhandahålla simulatorer/emulatorer för olika operativsystem, enhetstestning och testning mellan webbläsare. 

Användargränssnittets ikoner skiljer sig åt beroende på operativsystem: Windows, iOS och Android, och när det gäller testautomatisering använder de flesta av oss slutligen simulatorer – Android-simulatorerna tar mycket längre tid att läsa in, medan iOS-enheterna är snabbare.

De olika mobila knappkombinationerna som ska användas beroende på olika typer av operativsystem för att ta skärmbilder vid felsökning av problem är en viktig uppgift för alla som testar mobilapplikationer. 

Formfaktor

Vid utveckling av mobilapplikationer finns det 5 huvudsakliga formfaktorer som behöver beaktas för de olika OS-versionerna, utöver stående eller liggande läge på var och en av dessa enhetstyper: 

EnhetSkärmstorlek
Små mobila enheter3,5 tum eller mindre
Medelstora mobila enheter3,5 till 5 tum
Surfplattor5 till 7 tum
Små surfplattor7 till 8,5 tum
Surfplattor i full storlek8,5 tum eller större

Så väljer du rätt ramverk för mobilautomatisering

Att ta hänsyn till formfaktorer vid utveckling av mobilapplikationer innebär att säkerställa responsivitet när samma app öppnas på olika mobila enheter och operativsystemstyper. När appen används över hela världen och företag vill öka sin användarbas behöver de fatta detta beslut tidigt i utvecklingsprocessen och välja React Native-ramverk framför inbyggd Android- eller iOS-utveckling.

Annars kommer företag senare att behöva lägga tid och arbete på att omstrukturera och göra om apparna för att byta till React Native-ramverk. Detta påverkar direkt antalet team och underhållsarbetet, eftersom React Native-ramverk stöder utveckling av både iOS- och Android-applikationer. 

När mobilapplikationer utvecklas med React Native-ramverk minskar det också belastningen på testautomatiseringen, eftersom du bara behöver underhålla ett enda ramverk för testautomatisering för både iOS och Android. 

Det finns olika sätt att utveckla mobilapplikationer. Vissa företag väljer att använda inbyggda programmeringsspråk som Java och Objective C för Android- respektive iOS-applikationer. Fördelen med att använda inbyggda språk är att de kan erbjuda omfattande funktionalitet i sina applikationer.

Å andra sidan kommer element-ID:na att vara olika på de båda plattformarna – vilket innebär att vi behöver ha separata inbyggda testramverk för att testa samma sak, till exempel Espresso på Android, XCUITest på iOS och så vidare. 

React Native är ett annat vanligt programmeringsspråk för utveckling av responsiva mobilapplikationer, och gjordes tillgängligt som öppen källkod av Facebook. Målet var att förena utvecklingsarbetet för mobila enheter på båda plattformarna, så att det kunde finnas ett enda team och så att element-ID:na i de båda apparna skulle vara samma – vilket endast kräver ett enda testramverk, som Appium, för att hjälpa till att testa mobilapplikationerna. 

När det gäller att automatisera tester av dina mobilapplikationer kan valet av rätt verktyg för QA-automatisering göra stor skillnad för testeffektiviteten.

Så automatiserar du testning av iOS-mobilapplikationer 

Vid manuell testning finns det ett antal kriterier som måste följas: de flesta företag som utvecklar iOS-appar anger tydligt vilka operativsystem och SDK-versioner som stöds. Detta bidrar till att begränsa ditt testarbete. 

För att kunna skala upp testningen av programvara behöver vi investera i automatisering. Det finns många populära ramverk som stöder automatiserad testning av mobilappar för iOS. Av dessa begränsar vi diskussionen till följande två automatiseringsverktyg:

  • XCUITest
  • Appium
XCUITestAppium
Inbyggt appramverk som kan finnas i iOS-källkodens kodbas. Avskilt testramverk som byggs utanför källkodens kodbas. 
Skrivet i Objective C eller SwiftSkrivet i Java, Python och så vidare.
Explicita väntningar som tillämpar ett villkor. Implicita väntningar som innebär användning av sleep(), vilket gör tester instabila. 
Simulering av svar från API:er i serverdelen med hjälp av bibliotek med öppen källkod, som MockingjayStöder användning av mockservrar. 
Eftersom detta är ett inbyggt appramverk kan det endast användas för att testa iOS-applikationer. Eftersom testerna finns utanför källkodens kodbas och kan skrivas i språk som Java, Python och så vidare kan det användas för att testa plattformsoberoende applikationer, som Windows-, iOS- och Android-appar, så länge element-ID:na är samma på båda plattformarna. 

Jag har använt mockservrar för att simulera anropen till serverdelen och enbart testa användargränssnittet genom att skapa en basklass enligt följande: 

skärmbild av test av basklass

Nu när basklassen är klar lägger jag till det faktiska testet genom att använda designmönstret för sidobjekt enligt följande: 

skärmbild av test av bas för hemsjukvård

Så automatiserar du testning av Android-mobilapplikationer

Det finns över 2 miljarder aktiva Android-enheter i världen. Att testa din Android-applikation på olika enhets- och operativsystemstyper är nästan omöjligt! Därför anger företag uttryckligen vilka versioner de stöder. Detta säkerställer även en bättre användarupplevelse.

Ramverk för Android-automatisering kommer definitivt att bidra till att påskynda testprocesser, exempelvis Robotium och Selendroid. För diskussionens syfte begränsar vi oss till automatiseringsverktygen Espresso och Appium:

EspressoAppium
Inbyggt ramverk som kan finnas i Android-källkodens kodbas. Isolerat testramverk som byggs utanför källkodens kodbas. 
Skrivet i Java och KotlinSkrivet i Java, Python osv.
Explicita väntetider, asynkrona operationer stöds av funktionen för inaktiva resurserImplicita väntetider som innebär användning av sleep(), vilket gör testerna instabila. 
Simulering av backend-svar med hjälp av bibliotek med öppen källkod, som Mockito och Retrofit builderStöder användning av en simuleringsserver.
Eftersom detta är ett inbyggt ramverk kan det endast användas för att testa Android-applikationer. Eftersom testerna finns utanför källkodens kodbas och kan skrivas på språk som Java, Python osv. kan det användas för att testa plattformsoberoende applikationer på både iOS och Android, så länge element-ID:na är desamma på båda plattformarna. 

En av fördelarna med att använda inbyggda app-ramverk är att använda simuleringsservrar för att simulera backend-API-anrop och därmed testa enbart användargränssnittet. Här är ett kodexempel på hur jag har fått det att fungera:

kodskärmbild av simuleringsserver

Beroende på hur din mikrotjänstarkitektur är utvecklad hämtar du antingen svaret från webbläsarens nätverksflik eller direkt från utvecklarna och refererar till det på följande sätt i ditt test:

skärmbild av hemtest

Som du kan se i exemplet ovan anropas HomeTabPage i testet, i stället för att varje element behöver verifieras uttryckligen – jag har använt sidobjektmönstret i ramverket på följande sätt:

skärmbild av test för startsida

Testverktyg för mobilappar

Det finns olika testverktyg på marknaden och valet beror på flera faktorer: 

  • Teamets kompetens
  • Syftet med automatiseringen
  • Målgruppen för automatiseringen: produktchefer/försäljning/utvecklare/testare
  • Kompatibiliteten mellan testramverket och den inbyggda källkoden
  • Antalet hybridappar

Olika verktyg som används populärt i branschen är bland annat:

  • Selendroid
  • Robotium
  • Appium
  • Testdroid
  • UiAutomator

och många fler. 

Känner du inte för att utföra dina egna tester internt? Du kan också anlita testtjänster för mobilappar som gör det åt dig.

Prestandatestning av mobilapplikationer

När vi testar mobilapplikationer bör vi, utöver att fokusera på automatisering för att skala testinsatserna, även prioritera prestandatestning eftersom den spelar en avgörande roll för att avgöra om en användare kommer att fortsätta använda vår applikation.

Om skärmen tar mer än 2 sekunder att läsa in blir människor rastlösa – det hänger ihop med vår forskning om uppmärksamhetsspann, och för att behålla användarna behöver vi därför investera i prestandatestning. 

När vi testar appens prestanda behöver vi identifiera KPI:er och jämföra dem med följande riktvärden: 

  • Maximal svarstid
  • Genomsnittlig svarstid
  • Genomsnittlig genomströmning
  • Maximalt antal aktiva användare för varje operativsystem och enhet

Att använda ett testverktyg för mobilappar kan förenkla prestandatestningen. Apptim kan till exempel spåra prestandamätvärden för slutanvändare – det tillhandahåller omfattande prestandarapporter för alla viktiga prestandaparametrar.

För att övervaka mobilapplikationens prestanda kan vi använda Firebase Performance Monitoring, som ger kontroll över prestandadata genom att visa insikter om hur appen fungerar, med en uppdelning av spårnings- och nätverksdata efter dimensioner som appversion, land, enhet och nätverkstyp. 

Det finns andra verktyg som Appium Studio, Sauce Labs, Testdroid med flera, som erbjuder liknande funktioner för prestandaövervakning. 

Vi hoppas att den här artikeln gav dig en introduktion till testning av mobilapplikationer och de kritiska faktorer som hör samman med den! 

För fler bästa praxis och tips som hjälper dig att forma din utvecklingsprocess kan du prenumerera på The QA Leads nyhetsbrev.

Relaterad läsning:

Ta även en titt:

Relaterad lista över verktyg: