Handledning för testning av iOS-appar

⚡ Smart sammanfattning

iOS-apptestning verifierar att en applikation installeras, fungerar och beter sig korrekt på Apple-enheter. Den kombinerar manuella tekniker med automatiserade ramverk som XCTest och XCUITest för att upptäcka krascher, inkompatibiliteter och minnesläckor tidigt.

  • 📱 Foundation: iOS körs bara på Apple-hårdvara, så varje app måste valideras mot stödda iOS-versioner och enheter.
  • checklista: Generiska kontroller täcker installation, starttid, orientering, behörigheter och synlighet i App Store.
  • 🤖 Automation: XCTest och XCUITest ersätter de föråldrade ramverken OCUnit och UIAutomation för enhets- och UI-testning.
  • 🧪 Manuella metoder: Utforskande, användbarhets-, koncept-, beta- och A/B-testning fångar upp verklig användarfeedback.
  • 🚀 Inverkan: Testning av verkliga enheter plus betadistribution av TestFlight ger stabil prestanda innan App Store-lansering.

iOS-apptestning - manuell och automatiserad

Vad är iOS App Testing?

iOS-apptestning är en testprocess där en iOS-applikation testas på riktiga Apple-enheter för att kontrollera om den fungerar som förväntat eller inte för specifika användaråtgärder som installationstid, användargränssnitt, användarupplevelse, utseende, beteende, funktionalitet, laddningstid, prestanda, app Butiksinformation, OS-versionsstöd etc.

Varför testa iOS-appar?

iOS-apptestning krävs eftersom iOS är Apples plattform för mobilapplikationer, som först släpptes den 29 juni 2007. Till skillnad från AndroidApple licensierar inte iOS för installation på hårdvara som inte kommer från Apple. iOS och iOS-applikationer kan bara installeras på Apple-enheter; därför måste din iOS-app vara kompatibel med de iOS-versioner och iOS-enheter som dina användare äger.

Apple-enheter som kör iOS-appar

Figuren nedan visar vanliga frågor som utvecklare möter när de skapar en iOS-applikation.

Vanliga frågor när du skapar en iOS-app

Det spelar ingen roll hur mycket tid du investerar i design och implementering; misstag är oundvikliga och buggar kommer att dyka upp. Figuren nedan visar några vanliga buggar i iOS-applikationer.

Vanliga buggar i iOS-applikationer

Appen kraschar

Ett av de mest frustrerande problemen när man använder Apples enheter är att en applikation kraschar ofta under körning. Ofta kraschar appen på grund av buggar eller minnesläckor i koden.

Applikationsinkompatibiliteter

Din iOS-applikation kanske fungerar perfekt på den nuvarande iOS-versionen, men om iOS uppgraderas kanske den inte fungerar på grund av kompatibilitetsproblem.

Säkerhetssårbarhet

En säkerhetsbrist i iOS gör det möjligt för en hackare att attackera dina iOS-enheter och stjäla din privata information. Under årens lopp har allvarliga säkerhetsbrister i iPhone upptäckts i olika iOS-versioner.

Minne läcker

Minnesläckor är block av allokerat minne som programmet inte längre använder. Minnesläckor gör att din iOS-applikation kraschar.
De är buggar och bör alltid fixas.

iOS testar MindMap

iOS-testning MindMap med saker att överväga

Som visas i bilden ovan, iOS Testning MindMap visar alla punkter som en testare bör tänka på när de utför tester på iOS.

Checklista för iOS-applikationstestning

Den här checklistan är specifikt utformad för att testa egenskaperna hos iOS-mobilappar. Självklart testar den endast generiska applikationsegenskaper och inte appens funktionalitet.

  • Kontrollera installationstiden som det tar för applikationen på enheten. Se till att applikationen installeras inom en acceptabel tid.
  • När appen är installerad, kontrollera om den har en appikon och ett namn. Se också till att både ikonen och namnet är självförklarande och återspeglar appen.
  • Starta applikationen och kontrollera om en välkomstskärm visas.
  • Kontrollera tidsgränsen för startskärmen och tiden det tar att ladda startskärmen. Applikationens startskärm bör laddas inom en acceptabel tid. Om det tar för lång tid för startskärmen att laddas är det större risk att användaren avslutar eller till och med avinstallerar själva applikationen. Kontrollera också hur innehållet laddas på startskärmen.
  • Applikationens huvudfunktion bör vara uppenbar omedelbart. Det borde tala för sig självt.
  • Kontrollera om appen stöder både liggande och stående läge. Om så är fallet, kontrollera appen i båda lägena. Applikationens användargränssnitt bör justeras därefter.
  • Starta appen utan internetanslutning. Se till att appen fungerar som den ska. Det finns en risk att appen kraschar vid start eller bara visar en tom skärm.
  • Om appen använder platstjänster, kontrollera om platsbehörighetsaviseringen visas eller inte. Denna avisering ska endast visas en gång för användaren.
  • Om applikationen skickar push-meddelanden, kontrollera om tillåtelseaviseringen för push-meddelanden visas eller inte. Denna avisering ska också endast visas en gång för användaren.
  • Starta appen, avsluta den och starta om den. Kontrollera om appen beter sig som avsett/önskat.
  • Stäng applikationen genom att tryckaping tryck på enhetens hemknapp och öppna appen igen. Kontrollera om appen fungerar som avsedd/önskad.
  • När appen är installerad, kontrollera om den finns med i inställningsappen på din iPhone.
  • När appen har släppts, kontrollera om den finns i "App Store". Det finns operativsystemversioner som stöds för appen. Se därför till att appen finns i "App Store" för enheter med operativsystemversioner som stöds. Appen bör inte heller finnas med i "App Store" för enheter med operativsystemversioner som inte stöds.
  • Kontrollera om programmet går i viloläge när det körs i bakgrunden för att förhindra att batteriet laddas ur.
  • Om applikationens prestanda är långsam eller när innehållet laddas, kontrollera om det finns en statusikon för förloppet ("Lasar in..."), helst med ett specifikt meddelande.
  • Sök efter appen med dess namn i enhetens sökfält. Kontrollera om appen finns med i listan.
  • Kontrollera om utseendet på knappar som utför standardåtgärder inte ändras i appen (till exempel: uppdatera, organisera, papperskorgen, svara, tillbaka osv.)
  • Kontrollera om standardknappar inte används för andra funktioner än de de normalt används för

iOS-teststrategi

När du väl vet vad du ska kontrollera är nästa steg hur du testar det. Figuren nedan presenterar några vanliga typer av iOS-teststrategier.

Vanliga typer av iOS-teststrategier

Automatiserad testning

Automatiserad testning är en av de största fördelarna med iOS-testning. Det gör att du snabbt kan upptäcka buggar och prestandaproblem. Fördelarna med automatiserad testning visas nedan:

  • Automatisk testning kan köras på flera enheter, vilket sparar tid
  • Automatiserad testning kan rikta in sig på SDK:er. Du kan köra tester på olika SDK-versioner.
  • Automatiserad testning ökar din testproduktivitet och sparar på kostnader för mjukvaruutveckling
  • Det finns många ramverk för öppen källkod för testning som stöder automatiserad testning på iOS

Enhetstestning med OCUnit

När den ursprungliga iOS SDK släpptes saknades den Enhetstestning funktioner. Så Apple tog med sig OCUnit enhetstestlösning i iOS SDK version 2.2.

OCUnit var ett testramverk för Objective-C på Mac (nu macOSDen största fördelen med OCUnit-ramverket var dess täta integration i Xcode utvecklingsmiljön, som visas nedan.

Obs: OCUnit (SenTestingKit) är föråldrad; sedan Xcode 5, Apples XCTest ramverket har ersatt det som standard — se XCTest-avsnittet nedan. Skärmdumpar här visar ett äldre Xcode versionen.

OCUnit-integration i Xcode miljö

Några av fördelarna med OCUnit visas i figuren nedan.

Fördelar med enhetstestning med OCUnit

UI-testning med UIAutomation

UI-testning med UIAutomation

UI-automatisering var en JavaScript bibliotek från Apple Inc., vilket kan användas för att utföra automatiserade tester på riktiga enheter och i iOS-simulatorn. Detta ramverk lades till i iOS SDK 4.0. Med hjälp av UI Automation kan man automatisera testning av applikationen inte bara i simulatorn utan även på en riktig enhet.

Obs: Apple avskalade UI-automation i Xcode 8 (2016) och tog bort den senare. Använd XCUITest för nya UI-testprojekt; klasserna och skärmdumparna nedan återspeglar den äldre verktygskedjan.

UIAutomation gav dessa fördelar:

  • Minskad ansträngning på Manuell testning
  • Krävde mindre ansträngning för att utföra alla dina tester
  • Förenklade UI-testproceduren (tryck på några knappar och kör dina fullständiga testsviter)

UIAutomation-instrumentet fungerade från skript skrivna i JavaSkript. Det simulerade användarhändelser på mål-iOS-applikationen.

Nackdelar kontra fördelar med UIAutomation

Fördelar Nackdelar
1. Bra stöd för gester och rotation Det är inte öppen källkod, mindre stöd från utvecklaren
2. Kan köra UIAutomation-tester på enheten, inte bara simulatorn. Kan inte integreras med andra verktyg särskilt bra
3. Utvecklad i JavaScript, ett populärt programmeringsspråk.

Vanliga klasser i UIAutomation-ramverket

Figuren ovan representerar några vanliga klasser i UIAutomation-ramverket.

  • Ocuco-landskapet UIAElement class är superklassen för alla användargränssnittselement i automationssammanhang
  • Ocuco-landskapet UIATarget klass representerar användargränssnittselementen på hög nivå i systemet som testas
  • Ocuco-landskapet UIALogger klass ger test- och felinformation om hämtningsfunktionalitet
  • Ocuco-landskapet UIActivityView klass ger åtkomst till och kontroll över aktivitetsvyer i din app.
  • Ocuco-landskapet UIAAactionSheet klass ger åtkomst till och kontroll över åtgärdsblad i din app.
  • Användare Händelseåtgärd
  • UISlider klass
  • UIABnappklass
  • UIAKyckelklass
  • UIAtangentbordsklass

Andra ramverk för automatisk testning

  • Frank: Automatiserad Acceptanstest ramverk för iPhone och iPad (underhålls inte längre aktivt)
  • KIF: är en iOS integrationstest ramverk. Det möjliggör enkel automatisering av iOS-appar genom att utnyttja tillgänglighetsattributen som operativsystemet gör tillgängliga för personer med synnedsättning.
  • Appiumen populär öppen källkod, plattformsoberoende ramverk som automatiserar iOS-appar via Apples XCUITest-drivrutin

XCTest och XCUITest: Apples moderna testramverk

OCUnit och UIAutomation är viktiga historieböcker, men båda är nu pensionerade. Apple ersatte OCUnit med XCTest in Xcode 5 (2013) och föråldrad UIAutomation i Xcode 8 (2016) till förmån för XCUIT Test, UI-testkomponenten i XCTest. Dessa är testramverken som Apple levererar och stöder i alla aktuella versioner av Xcode.

Med XCTest skriver du enhetstester i Swift eller Objective-C och kör dem från Xcode Testnavigatorn xcodebuild kommandoraden, i simulatorn eller på riktiga enheter. XCUITest driver din app genom tillgänglighetslagret, så UI-tester beter sig ungefär som en riktig användare.

Äldre ramverk Modern ersättning Vad förändrades
OCUnit (SenTestingKit) XCTest Samma koncept för enhetstestning, nu inbyggda i alla Xcode projektmall
UIAutomation (JavaManus) XCUIT Test UI-tester är skrivna i Swift eller Objective-C istället för JavaScript

👍 Dricks: Plattformsoberoende verktyg som Appium automatisera iOS genom XCUITest under huven, så att dessa färdigheter överförs direkt.

Manuell testning

Automatisering ger snabbhet, men de manuella teknikerna nedan lägger till mänsklig bedömning som skript inte kan ge.

Utforskande testning

Det är testning utan en formell testplan. Explorativ testning är en billig testmetod, men den kan missa potentiella buggar i din iOS-applikation.

Exploratory Testing Nackdelar vs. Fördelar

Fördelar Nackdelar
1. Less förberedelse behövs; allvarliga buggar upptäcks tidigt. Kräver hög skicklighet av testaren
2. Nej Testplan behövs, vilket påskyndar feldetektering. Testtäckningen är låg. Det garanterar inte att alla dina krav testas.
3. De flesta buggar upptäcks tidigt genom någon form av utforskande testning Brist på testdokumentation

Användare Provning

Användartestning är en typ av manuell testning på iOS. Syftet med detta test är att skapa bättre appar, inte bara buggfri appar. Figuren nedan visar fyra typer av användartester.

Fyra typer av användartestning

Begreppstest

Utvärdera användarnas respons på en applikationsidé innan den släpps på marknaden. Procedurerna för koncepttestning på iOS beskrivs i figuren nedan.

Koncepttestningsprocedur på iOS

Användbarhetstestning

Användbarhetstestning är ett test av hur enkelt det är att använda din iOS-applikation. I iOS-testning kan ett användbarhetstest utföras registreras att komma ihåg eller att dela med andra.

Några verktyg som stöder användbarhetstestning på iOS är:

Trymata mobilanvändartestappar för Android och iOS.

Delight.io, det här verktyget kan fånga verklig användarinteraktion på dina iOS-appar.

Betatestning

Betatestning är integrationstest med verkliga data för att få slutgiltig feedback från användare. För att distribuera dina appar för betatestning måste du följa stegen nedan.

Steg för distribution av betatestning

-Förkonditionering: Om du betatestar en slutlig kandidat för en release, se till att validera appen innan du distribuerar den till testare.

-Hitta testare via tjänstendu samlar in enhets-ID:n från testare och lägger till dem i ditt Apple Developer-konto

-Skapa ad-hoc distributionAd hoc-distribution gör det möjligt för testaren att köra din app på sin enhet utan att behöva Xcode. Detta steg innehåller 2 delsteg

  • Skapa distributionscertifikat
  • Skapa ad-hoc provisioneringsprofiler

-Be om feedback från testare: Testare utför tester och skickar felrapporter till dig. När din app har släppts kan du få rapporterna från App Store Connect (förr iTunes ansluta).

Obs: Idag distribuerar de flesta team betaversioner med TestFlight, vilket låter dig bjuda in upp till 10 000 externa testare utan att behöva samla in enhets-ID:n manuellt.

A / B-testning

A / B-testning är ett av de mest kraftfulla sätten att utvärdera effektiviteten av din iOS-app. Det använder randomiserade experiment med två enheter, A och B.

A/B-testning på två iOS-enheter

A/B-testning omfattar tre huvudsteg

  • Konfigurera ett testFörbered två versioner av din iOS-app (A och B) och ett testmått
  • TestaTesta de två iOS-appversionerna ovan på enheter samtidigt.
  • AnalyseraMät och välj den bättre versionen att släppa

Följande verktyg stöder A/B-testning på iOS.

  • Stiga upp: A/B-testning för både iOS och AndroidDen kan integreras i din iOS-app och gör testprocessen snabbare.

Bästa metoder för A/B-testning

  • Definiera mål av ditt test. Alla tester är värdelösa utan ett mål.
  • Kolla på slutanvändare använder din app första gången
  • Körning ett endast test per uppdatering. Det sparar tid när du utför tester
  • Övervaka noggrant utföra ditt test. Du kan lära dig av ditt test genom att övervaka det.

iOS-testning Bästa praxis

Här är några tips du bör känna till när du organiserar testningen av din iOS-applikation

  1. Testa applikationen på en riktig enhet för att få en realistisk bild av prestandan
  2. Förbättra dina testmetoder, eftersom traditionella testmetoder inte längre räcker till för att täcka alla tester i iOS-testning
  3. Använd konsollogg för att testa iOS-applikationen. Den här iOS-funktionen innehåller information från alla applikationer på enheten.
  4. Dokument applikationsfel med hjälp av inbyggd skärmdump kommandot. Det hjälper utvecklaren att förstå hur buggarna uppstår.
  5. Kraschrapportering Verktyg är användbara när du testar din applikation. De kan upptäcka krascher och logga detaljer så att du enkelt kan undersöka buggarna.

MYTER om iOS-testning

Det här avsnittet undersöker några populära myter och realiteter kring iOS-testning

Testa applikationer på iOS och Android är samma sak.

iOS och Android är två plattformar utvecklade av Apple Inc. och Google respektive. De är helt olika i testmiljöer, testramverk och programmeringsspråk.

Det räcker med att testa applikationen på iOS-simulatorn.

iOS-simulatorn är inte tillräckligt kraftfull för att testa en app, eftersom den har vissa begränsningar:

  • Hårdvarubegränsningar (kamera, mikrofoningång, sensor)
  • Appens användargränssnitt kan se ut att fungera både snabbare och smidigare än på en enhet
  • API-begränsningar
  • Vissa ramverk stöds inte (Media Player, Store Kit, Message UI...)

Alla kommer att ladda ner mina appar från appbutiken eftersom de har många funktioner.

Ju fler funktioner din applikation har, desto fler buggar kan du få. Ingen användare kommer att ladda ner din applikation om den fortfarande har många defekter.

Vanliga frågor

Ja. AI-assisterade plattformar genererar testfall, upptäcker visuella regressioner och reparerar trasiga elementsökare när ditt användargränssnitt ändras. Verktyg som Testa sigma låt team skriva iOS-tester på enkel engelska.

AI-baserad självreparation uppdaterar elementlokaliserare efter gränssnittsändringar, flaggar instabila tester och prioriterar högriskfall, vilket minskar det manuella omarbetet som följer varje iOS-version.

Ja. Appium underhålls aktivt och driver iOS-appar genom Apples XCUITest-ramverk, vilket stöder tester i JavaManus, Python, Java, eller C#.

Nej. Ett gratis Apple-ID med Xcode låter dig testa på din egen enhet. Det betalda Apple Developer Program (99 USD/år) krävs för TestFlight distribution och lansering i App Store.

Sammanfatta detta inlägg med: