Skip to main content

Den genomsnittliga uppmärksamhetsspannet hos en människa är mindre än 9 sekunder! Har du någonsin undrat varför? De flesta mobilapplikationer som har dykt upp under den senaste tiden kräver att du bläddrar nedåt i ett flöde där hjärnan är finjusterad 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 den stora mängd mobilapplikationer som finns tillgängliga i appbutiken följer ett stort ansvar för testning av mobilappar och skalning av regressionsinsatserna. Det är där verktyg för testning av mobilappar kommer väl till pass. 

Jag var en av de tidiga användarna av ramverk för testning av mobilappar, och enligt min erfarenhet har fokus på automatisering, formfaktorer och prestandatestning spelat en lika viktig roll för att skala upp och öka effekten 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 beakta

Testning på en specifik plattform har sina egna utmaningar, men med mobila enheter har du dessa ytterligare parametrar som du måste ta hänsyn till. Oavsett om du utför manuell testning eller testautomatisering behöver dina testfall, utöver funktionell testning, fokusera på:

Anslutning

Det är viktigt att ta hänsyn till 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 testning utföras genom att simulera platsen med hjälp av verktyg som MobileSpy, Location Spoofer och liknande. 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 begär en resa från NYC och ändringar har gjorts i backend-mikrotjänsterna som är specifika för att hitta föraren på den platsen. Utan simulering skulle testerna inte ge korrekta resultat. 

Operativsystem

Särskilt med 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 medför och som är relaterade till Xcode-versioner kopplade till ändringar i OS-versionerna. 

Numera vänder sig företag till tredjepartsleverantörer som BrowserStack för att tillhandahålla simulatorer/emulatorer för olika operativsystem, enhetstestning och testning över flera webbläsare. 

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

De olika tangentkombinationerna på mobila enheter som ska användas beroende på olika typer av operativsystem för att ta skärmbilder vid felsökning ä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 när man bygger mobilapplikationer innebär att säkerställa responsivitet när samma app öppnas på olika mobila enheter och operativsystem. När appanvändningen sträcker sig ö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öretagen senare att behöva lägga tid och arbete på att omstrukturera och omdesigna 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å båda plattformarna – vilket innebär att vi behöver separata inbyggda testramverk för att testa samma sak, till exempel Espresso på Android, XCUITest på iOS med mera. 

React Native är ännu ett vanligt programmeringsspråk för utveckling av responsiva mobilapplikationer som gjordes tillgängligt som öppen källkod av Facebook. Målet var att förena utvecklingsinsatserna för mobila enheter på båda plattformarna så att det kan finnas ett enda team och så att element-ID:na i båda apparna är desamma – vilket innebär att endast ett testramverk, som Appium, behövs för 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 en rad 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 hjälper till att begränsa testinsatserna. 

För att kunna skala upp testinsatserna för 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 vår diskussion till följande två verktyg för automatisering:

  • XCUITest
  • Appium
XCUITestAppium
Ramverk för inbyggda appar som kan ligga i iOS-källkodbasen. Fristående testramverk som byggs utanför källkodbasen. 
Skrivet i Objective C eller SwiftSkrivet i Java, Python med mera.
Explicit väntan som tillämpar ett villkor. Implicit väntan som innebär användning av sleep(), vilket gör testerna instabila. 
Simulering av svar från backend-API:er med hjälp av bibliotek med öppen källkod, som MockingjayStöder användning av en simuleringsserver. 
Eftersom detta är ett ramverk för inbyggda appar kan det endast användas för att testa iOS-applikationer. Eftersom testerna ligger utanför källkodbasen och kan skrivas på språk som Java, Python med mera kan det användas för att testa plattformsöverskridande applikationer som Windows-, iOS- och Android-appar, så länge element-ID:na är desamma på båda plattformarna. 

Jag har använt simuleringsservrar för att simulera backend-anropen 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 startsida för hemtjänst

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 också en bättre användarupplevelse.

Ramverk för Android-automatisering hjälper definitivt till att snabba upp testprocesserna, till exempel Robotium och Selendroid. Inom ramen för vår diskussion 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 med flera.
Explicita väntetider, asynkrona åtgärder stöds av funktioner för väntande resurserImplicita väntetider som innebär användning av sleep(), vilket gör tester instabila. 
Simulering av backend-svar med hjälp av bibliotek med öppen källkod, till exempel Mockito och Retrofit BuilderStöd för användning av simuleringsservrar.
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 i språk som Java, Python med flera, 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 användargränssnittet separat. Här är ett exempel på ett kodavsnitt som visar hur jag har fått det att fungera:

skärmbild av kod för 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 enligt följande i testet:

skärmbild av test för startsidan

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

skärmbild av test för startsidan

Verktyg för testning av mobilappar

Det finns olika testverktyg i branschen, och valet beror på flera faktorer: 

  • Teamets kompetens
  • Syftet med automatiseringen
  • Målgrupp för automatiseringen: produktchefer/försäljning/ingenjörer/testare
  • Kompatibilitet mellan testramverket och den inbyggda källkoden
  • Antalet hybridappar

Olika verktyg som används ofta i branschen är bland andra:

  • Selendroid
  • Robotium
  • Appium
  • Testdroid
  • UiAutomator

och många fler. 

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

Prestandatestning av mobilapplikationer

Vid testning av mobilapplikationer bör vi, förutom att fokusera på automatisering för att skala upp 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 det tar mer än 2 sekunder att läsa in skärmen blir människor otåliga – det knyter an till vår forskning om uppmärksamhetsspann, och för att behålla användarna behöver vi därför investera i prestandatestning. 

Vid testning av appens prestanda behöver vi identifiera nyckeltalen och jämföra resultaten med dem: 

  • 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-övervakning, som ger kontroll över prestandadata genom att dela insikter om hur din app presterar, 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 för att utforma din utvecklingsprocess kan du prenumerera på nyhetsbrevet från The QA Lead.

Relaterad läsning:

Kolla även in:

Relaterad lista över verktyg: