Att testa en app på Android eller iOS är inte så annorlunda. Syftet är detsamma, det önskade resultatet är detsamma, och processen är liknande. Den stora skillnaden kommer när vi börjar titta på detaljerna. Det är vad jag planerar att göra i den här artikeln.
Innan vi dyker in, låt oss prata om några testningsgrunder. Det är omöjligt att granska våra alternativ om vi inte förstår och förstår den fullständiga bilden.
Vad som gör att Android står ut är det mängder av möjligheter. På IOS finns iPhone, iPad och iPod Touch. De är olika, men den vanliga faktorn mellan iOS-enheter är pixeldensitet, skärmupplösning, processorhastigheter, minnesstorlek osv.
När det gäller Android finns det tusentals kombinationer när vi tittar på samma faktorer, skärmupplösning och storlek, processorhastigheter, minnesstorlek och körsbären på kakan, fragmenteringen av operativsystemet.
När det gäller operativsystemversioner är det inte ovanligt för bärare och telefonproducenter att sluta skjuta ut uppdateringar inte för länge efter att produkten släppts. Är detta ett problem? Ja. Ta en titt på Googles officiella Android-statistik för marknadsandelar för att få en bild av problemets skala.
I fallande order av marknadsandel har vi Jelly Bean (4.1-4.3), Gingerbread (2.3) och Ice Cream Sandwich (4.0).
Jämför det med antagningsgraden för Apples IOS 7. I slutet av januari i år körde 80% av iOS-enheterna IOS 7. Tänk på att iOS 7 släpptes i september 2013. Det är en stor skillnad.
Har du någonsin använt en riktigt dålig Android-applikation? Sämre än en riktigt dålig applikation är en riktigt bra som har några kvarstående buggar.
Jag känner en stor faktor i bra testning är uppmärksam på vad du använder, liksom och hatar. Hat är ett starkt ord, men jag är säker på att det finns något som alltid sticker ut.
Fråga dig själv följande frågor:
Låt oss referera till att Android OS marknadsandel diagram som vi såg tidigare. Det är orealistiskt att närma sig testtänkande att du stöder varje enhet och varje smak av Android.
Min poäng är att vi måste tänka på distributionen. Vad gör vår app och hur ser målmarknaden ut? Är det ett spel eller ett verktygsprogram?
Om det är ett spel kan fokusen sannolikt bara vara nyare och mer avancerade enheter. En applikation kan dock användas av en bredare publik och behöver fungera på ett större antal enheter.
Ett problem som jag känner att de flesta av oss stöter på är att vi är för nära våra projekt. Vi vet hur vi kan få vår app att misslyckas och hur får vi det till jobbet. Av detta skäl försöker jag avsiktligt att tänka mig på en användares. Jag sätter användare i två stora kategorier, den Knapp Masher och den Användare.
Button Masher är den typ av användare som bara börjar tappa på skärmen, en knapp här, en knapp där. "Den sista knappen gjorde ingenting, jag slår en annan."
Vad vi kan lära av den här användartypen är där vi har intensiva processer inom vår app. Om något händer och en annan förfrågan eller åtgärd inträffar spikar vi processorn eller fyller i enhetens minne? Gör det för att programmet ska krascha?
Den andra frågan som ytorna är "Hur bra informerar vi användaren om vad som händer." Varför slog de på en annan knapp istället för att vänta? Kan vi åtgärda detta genom att visa en laddningsskärm?
Användaren har avsikt. Ett bättre sätt att förklara denna typ av användare skulle vara att titta på användarfall. Det finns en specifik uppgift som de vill uppnå och ett specifikt flöde de ska försöka följa.
Vi kan lära oss hur tydligt appen är att styra en person genom en process eller åtgärd. Det kommer att visa oss var en användare går vilse och vilka områden kräver mer uppmärksamhet eller raffinering.
Vi har pratat genom vårt syfte och olika användartyper, men vad är våra alternativ och hur ska vi testa dem? Lyckligtvis finns det mycket. Och jag rekommenderar att du gör så många som möjligt.
Om du inte har lyxen att kunna gå ner till QA-avdelningen eller ett testlabb, kan du ringa en vän. Du behöver ögon och du behöver enheter.
När det gäller att testa mobilappar kan volymen göra skillnad, speciellt om du kan få en mängd olika enheter.
Automatiserad testning är din vän. Medan inget kommer att slå hands-on-tid med en komplett applikation är det också viktigt att se vad som händer under huven och hur din app kommer att reagera programmatiskt i vissa situationer eller när du lägger på stress.
Ännu viktigare, med enhetstestning kan du testa när du går, vilket kan spara mycket tid under testning och QA innan du släpper ut.
Android SDK kommer med Android-testramen, som består av ett test-API baserat på JUnit och monkeyrunner.
Android JUnit-tillägget tillåter utvecklare att skriva enhetstester mot Android-komponenter och Android API med förbyggda komponentspecifika testfallsklasser.
Monkeyrunner är ett Python-baserat API som låter dig skriva program som styr en enhet ur användarens perspektiv. Det innebär att du kan skapa test för att köra på många enheter eller emulatorer som kommer att interagera med din app, skicka tangenttryckningar och fånga skärmdumpar.
Det finns många testramar tillgängliga. Några av de mer populära är Robolectric och Robotium.
Robolectric är en enhetstestram som löper i din IDE. Det här är bra för att granska din kod före byggandet. Robotium kör test mot Android API i emulatorer. Medan det tar längre tid att slutföra testerna kommer din programkod att sätta igenom mycket mer av ett verkligt test mot enheter och API: n.
Ett annat intressant alternativ är Espresso. Det tjänar en mycket specifik syfte jämfört med de två föregående alternativen. Det är ett API för att köra test mot Android-användargränssnittet.
Alla ovanstående alternativ är bra, men om du bygger en hybridapp kan du kanske inte använda dem. Appium är en plattform för automation som gör att du kan bygga test med vilket språk du vill ha för både stora mobila plattformar.
Det är också mycket användbart att kunna se statistik och, viktigare, samla fel och kraschloggar. Det här är särskilt användbart om du har många testar din ansökan, eftersom det kan bli besvärligt att samla loggar från varje enskild användare.
Förutom att spåra appanvändningen kan Google Analytics också skicka undantag. Flurry är ett annat testat alternativ. De har funnits länge och rapporterings- och kraschrapporterna är lite mer detaljerade.
Medan det inte hjälper under utvecklingsfasen av din ansökan samlar Google också kraschrapporter för appar i Play Butik.
Vi vill alla ha 400 enheter att testa på, som de massiva testlaboratorierna vi har sett online. Det är dock inte realistiskt. För att svara på detta problem finns det många tjänster tillgängliga om du är villig att investera i testning.
Dessa tjänster sträcker sig från en-till-ett riktiga mänskliga test till helautomatiska testningar på hundratals enheter. Om du är villig att betala för den är den tillgänglig.
Jag har inte erfarenhet av de flesta av dessa, men den jag har använt är Användarprovning. Det är väldigt bra att se en person följa ditt testskript när de knackar igenom din ansökan och ger dig sina tankar.
Dessa är några tjänster att överväga:
För många gånger har jag stött på situationen där QA och testning verkade som en eftertanke. I verkligheten är det förmodligen den viktigaste delen av utvecklingsprocessen.
Android, med sina många smaker, kan tyckas skrämmande, men när det närmade sig nästan programmatiskt blir det verkligen bara en del av processen. Det är värt extra tid och ansträngning. Kvalitet apps händer inte bara.