Vejledning til test af iOS-apps

โšก Smart opsummering

iOS App Testing verificerer, at en applikation installeres, fungerer og opfรธrer sig korrekt pรฅ Apple-enheder. Den kombinerer manuelle teknikker med automatiserede frameworks som XCTest og XCUITest for at opdage nedbrud, inkompatibiliteter og hukommelseslรฆkager tidligt.

  • ???? Foundation: iOS kรธrer kun pรฅ Apple-hardware, sรฅ alle apps skal valideres mod understรธttede iOS-versioner og -enheder.
  • โœ… Tjekliste: Generiske kontroller dรฆkker installation, opstartstidspunkt, retning, tilladelser og synlighed i App Store.
  • ๐Ÿค– Automation: XCTest og XCUITest erstatter de forรฆldede OCUnit- og UIAutomation-frameworks til enheds- og brugergrรฆnsefladetestning.
  • ๐Ÿงช Manuelle metoder: Udforskende, brugervenligheds-, koncept-, beta- og A/B-testning indfanger reel brugerfeedback.
  • ๐Ÿš€ Indvirkning: Testning af rigtige enheder plus betadistribution af TestFlight leverer stabil ydeevne fรธr udgivelsen i App Store.

iOS App Test - Manuel og Automation

Hvad er iOS App Testing?

iOS app test er en testproces, hvor en iOS-applikation testes pรฅ rigtige Apple-enheder for at kontrollere, om den fungerer som forventet eller ej for specifikke brugerhandlinger som installationstid, brugergrรฆnseflade, brugeroplevelse, udseende, adfรฆrd, funktionalitet, indlรฆsningstid, ydeevne, app Butiksfortegnelse, understรธttelse af OS-version osv.

Hvorfor iOS-apptestning?

iOS app test er pรฅkrรฆvet, fordi iOS er Apples platform til mobilapplikationer, der fรธrst blev udgivet den 29. juni 2007. I modsรฆtning til AndroidApple licenserer ikke iOS til installation pรฅ hardware, der ikke er fra Apple. iOS og iOS-applikationer kan kun installeres pรฅ Apple-enheder; derfor skal din iOS-app vรฆre kompatibel med de iOS-versioner og iOS-enheder, dine brugere ejer.

Apple-enheder, der kรธrer iOS-apps

Figuren nedenfor viser almindelige spรธrgsmรฅl, som udviklere stรฅr over for, nรฅr de opretter en iOS-applikation.

Almindelige spรธrgsmรฅl, nรฅr du opretter en iOS-app

Det er ligegyldigt, hvor meget tid du investerer i design og implementering; fejl er uundgรฅelige, og der vil opstรฅ fejl. Figuren nedenfor viser nogle almindelige fejl i iOS-applikationer.

Almindelige fejl i iOS-applikationer

Applikationen gรฅr ned

Et af de mest frustrerende problemer ved brug af Apples enheder er, at en applikation ofte gรฅr ned under kรธrsel. Ofte gรฅr appen ned pรฅ grund af fejl eller hukommelseslรฆkager i koden.

Ansรธgningsinkompatibiliteter

Din iOS-applikation kรธrer muligvis perfekt pรฅ den nuvรฆrende iOS-version, men hvis iOS opgraderes, fungerer den muligvis ikke pรฅ grund af kompatibilitetsproblemer.

Sikkerhedssรฅrbarhed

En sikkerhedssรฅrbarhed i iOS giver en hacker mulighed for at angribe dine iOS-enheder og stjรฆle dine private oplysninger. Gennem รฅrene er der blevet opdaget alvorlige sikkerhedssรฅrbarheder i forskellige iOS-versioner pรฅ iPhones.

Hukommelse lรฆkker

Hukommelseslรฆkager er blokke af allokeret hukommelse, som programmet ikke lรฆngere bruger. Hukommelseslรฆkager fรฅr din iOS-applikation til at gรฅ ned.
De er fejl og bรธr altid rettes.

iOS tester MindMap

iOS-test MindMap over elementer, der skal overvejes

Som vist pรฅ figuren ovenfor, iOS Test MindMap viser alle de punkter, som en tester bรธr overveje, nรฅr de udfรธrer test pรฅ iOS.

Tjekliste til iOS-applikationstest

Denne tjekliste er specifikt designet til at teste karakteristikaene for iOS-mobilapplikationer. Den tester naturligvis kun generiske applikationskarakteristika og ikke appens funktionalitet.

  • Kontrollรฉr den installationstid, det tager for applikationen at installere pรฅ enheden. Sรธrg for, at applikationen installeres inden for en acceptabel tid.
  • Nรฅr applikationen er installeret, skal du kontrollere, om applikationen har et appikon og navn. Sรธrg ogsรฅ for, at bรฅde ikon og navn er selvforklarende og afspejler applikationens kernehensigt.
  • Start applikationen, og kontroller, om der vises en velkomstskรฆrm.
  • Kontroller timeout for startskรฆrmen og den tid, det tager at indlรฆse startskรฆrmen. Applikationens startskรฆrm bรธr indlรฆses inden for en acceptabel tid. Hvis startskรฆrmen tager for lang tid at indlรฆse, er der stรธrre chance for, at brugeren afslutter eller endda afinstallerer selve applikationen. Kontroller ogsรฅ, hvordan indholdet indlรฆses pรฅ startskรฆrmen.
  • Applikationens hovedfunktion skal vรฆre tydelig med det samme. Det burde tale for sig selv.
  • Tjek om appen understรธtter bรฅde liggende og stรฅende format. Hvis det er tilfรฆldet, sรฅ tjek appen i begge formater. Applikationens brugergrรฆnseflade burde justeres i overensstemmelse hermed.
  • Start applikationen uden en internetforbindelse. Sรธrg for, at appen fungerer som designet/รธnsket. Der er en risiko for, at applikationen gรฅr ned ved opstart eller blot viser en tom skรฆrm.
  • Hvis applikationen bruger lokationstjenester, skal du kontrollere, om alarmen om lokationstilladelse vises eller ej. Denne alarm bรธr kun vises til brugeren รฉn gang.
  • Hvis applikationen sender push-notifikationer, skal du kontrollere, om tilladelsesalarmen for push-notifikationer vises eller ej. Denne alarm bรธr ogsรฅ kun vises til brugeren รฉn gang.
  • Start applikationen, luk den, og genstart den. Kontroller, om appen opfรธrer sig som designet/รธnsket.
  • Luk applikationen ved at trykke pรฅping Tryk pรฅ enhedens hjem-knap, og รฅbn appen igen. Kontroller, om appen fungerer som designet/รธnsket.
  • Nรฅr appen er installeret, skal du kontrollere, om den er angivet i iPhones indstillinger.
  • Nรฅr applikationen er udgivet, skal du kontrollere, om den kan findes i "App Store". Der vil vรฆre understรธttede OS-versioner til applikationen. Sรธrg derfor for, at applikationen kan findes i "App Store" for enheder med understรธttede OS-versioner. Applikationen bรธr heller ikke vรฆre angivet i "App Store" for enheder med ikke-understรธttede OS-versioner.
  • Kontroller, om applikationen gรฅr i dvaletilstand, nรฅr den kรธrer i baggrunden, for at forhindre batteriafladning.
  • Hvis applikationens ydeevne er langsom, eller nรฅr indholdet indlรฆses, skal du kontrollere, om der er et statusikon for status ("indlรฆser..."), helst med en specifik meddelelse.
  • Sรธg efter appen med dens navn i enhedens sรธgefelt. Kontroller, om appen er pรฅ listen.
  • Tjek om udseendet af knapper, der udfรธrer standardhandlinger, ikke รฆndres i appen (f.eks.: opdater, organiser, papirkurv, svar, tilbage osv.)
  • Kontroller, om standardknapper ikke bruges til andre funktioner end dem, de normalt bruges til

iOS teststrategi

Nรฅr du ved, hvad du skal kontrollere, er nรฆste trin, hvordan du tester det. Figuren nedenfor introducerer nogle almindelige typer iOS-teststrategier.

Almindelige typer af iOS-teststrategier

Automatiseret test

Automatiseret testning er en af โ€‹โ€‹de stรธrste fordele ved iOS-testning. Det gรธr det muligt hurtigt at opdage fejl og ydeevneproblemer. Fordelene ved automatiseret testning er vist nedenfor:

  • Automatiseret test kan kรธre pรฅ flere enheder, hvilket sparer din tid
  • Automatiseret testning kan mรฅlrettes mod SDK'er. Du kan kรธre tests pรฅ forskellige SDK-versioner
  • Automatiseret testning รธger din testproduktivitet og sparer softwareudviklingsomkostninger
  • Der findes mange open source-testframeworks, der understรธtter automatiseret testning pรฅ iOS.

Enhedstest med OCUnit

Da den originale iOS SDK blev frigivet, manglede den Enhedstest muligheder. Sรฅ Apple bragte OCUnit enhedstestlรธsning i iOS SDK version 2.2.

OCUnit var et testframework til Objective-C pรฅ Mac (nu macOSDen stรธrste fordel ved OCUnit-frameworket var dets tรฆtte integration i Xcode udviklingsmiljรธ, som vist nedenfor.

Bemรฆrk: OCUnit (SenTestingKit) er udfaset; siden Xcode 5, Apples XCTest framework har erstattet det som standarden โ€” se XCTest-afsnittet nedenfor. Skรฆrmbilleder her viser et รฆldre Xcode version.

OCUnit-integration i Xcode miljรธ

Nogle af fordelene ved OCUnit er vist i figuren nedenfor.

Fordele ved enhedstestning med OCUnit

UI-test med UIAutomation

UI-test med UIAutomation

UI-automatisering var en JavaScript bibliotek leveret af Apple Inc., som kunne bruges til at udfรธre automatiserede tests pรฅ rigtige enheder og pรฅ iOS Simulator. Dette framework blev tilfรธjet i iOS SDK 4.0. Ved hjรฆlp af UI Automation kunne du automatisere test af applikationen ikke kun pรฅ simulatoren, men ogsรฅ pรฅ en rigtig enhed.

Bemรฆrk: Apple udfasede UI-automatisering i Xcode 8 (2016) og fjernede den senere. Brug XCUITest til nye UI-testprojekter; klasserne og skรฆrmbillederne nedenfor afspejler den รฆldre vรฆrktรธjskรฆde.

UIAutomation medfรธrte disse fordele:

  • Reduceret indsats pรฅ Manuel testning
  • Krรฆvede mindre indsats for at udfรธre alle dine tests
  • Forenklede UI-testproceduren (tryk pรฅ et par knapper, og kรธr dine fulde testpakker)

UIAutomation-instrumentet fungerede ud fra scripts skrevet i JavaScript. Det simulerede brugerhรฆndelser pรฅ den pรฅgรฆldende iOS-applikation.

Ulemper vs. fordele ved UIAutomation

FORDELE ULEMPER
1. God stรธtte til gestus og rotation Det er ikke open source, mindre stรธtte fra udvikleren
2. Kan kรธre UIAutomation-tests pรฅ enheden, ikke kun pรฅ simulatoren. Kan ikke integreres med andre vรฆrktรธjer sรฆrlig godt
3. Udviklet i JavaScript, et populรฆrt programmeringssprog.

Almindelige klasser i UIAutomation-frameworket

Ovenstรฅende figur reprรฆsenterer nogle almindelige klasser i UIAutomation-frameworket.

  • UIAElement klasse er superklassen for alle brugergrรฆnsefladeelementer i forbindelse med automatiseringen
  • UIATarget klasse reprรฆsenterer brugergrรฆnsefladeelementerne pรฅ hรธjt niveau i det system, der testes
  • UIALogger klasse giver test- og fejlinformation om genfindingsfunktionalitet
  • UIActivityView klasse giver adgang til og kontrol over aktivitetsvisninger i din app.
  • UIAAactionSheet klasse giver adgang til og kontrol over handlingsark i din app.
  • Bruger Begivenhedshandling
  • UISlider klasse
  • UIAButton klasse
  • UIAKรธgle klasse
  • UIAKeyboard klasse

Andre automatiserede testrammer

  • ร…ben: Automatiseret Acceptance Test framework til iPhone og iPad (vedligeholdes ikke lรฆngere aktivt)
  • KIF: er en iOS integrationstest rammer. Det giver mulighed for nem automatisering af iOS-apps ved at udnytte de tilgรฆngelighedsattributter, som OS gรธr tilgรฆngelige for dem med synshandicap.
  • Appiumen populรฆr open source, cross-platform et framework, der automatiserer iOS-apps via Apples XCUITest-driver

XCTest og XCUITest: Apples moderne testrammer

OCUnit og UIAutomation er vigtige historier, men begge er nu udgรฅet. Apple erstattede OCUnit med XCTest in Xcode 5 (2013) og udfasede UIAutomation i Xcode 8 (2016) til fordel for XCUIT Test, UI-testkomponenten i XCTest. Dette er de testframeworks, som Apple leverer og understรธtter i alle aktuelle versioner af Xcode.

Med XCTest skriver du enhedstests i Swift eller Objective-C og kรธr dem fra Xcode Testnavigatoren xcodebuild kommandolinjen, pรฅ simulatoren eller pรฅ rigtige enheder. XCUITest kรธrer din app gennem tilgรฆngelighedslaget, sรฅ brugergrรฆnsefladetests opfรธrer sig stort set som en rigtig bruger.

ร†ldre rammevรฆrk Moderne udskiftning Hvad รฆndrede sig
OCUnit (SenTestingKit) XCTest De samme enhedstestkoncepter, nu indbygget i alle Xcode projektskabelon
UIAutomation (JavaManuskript) XCUIT Test UI-tests er skrevet i Swift eller Objective-C i stedet for JavaScript

๐Ÿ’ก Tip: Cross-platform vรฆrktรธjer som f.eks. Appium automatiser iOS via XCUITest under motorhjelmen, sรฅ disse fรฆrdigheder overfรธres direkte.

Manuel test

Automatisering bringer hastighed, men de manuelle teknikker nedenfor tilfรธjer menneskelig dรธmmekraft, som scripts ikke kan levere.

Undersรธgende test

Det er testning uden en formel testplan. Udforskende testning er en billig testmetode, men den kan overse potentielle fejl i din iOS-applikation.

Udforskende test Ulemper vs. Fordele

FORDELE ULEMPER
1. Less forberedelse er nรธdvendig; alvorlige fejl opdages tidligt. Krรฆver hรธj dygtighed af testeren
2. Ingen Testplan er nรธdvendig, hvilket fremskynder fejldetektering. Testdรฆkningen er lav. Det garanterer ikke, at alle dine krav er testet.
3. De fleste fejl opdages tidligt ved en form for udforskende test Manglende testdokumentation

Bruger Testing

Brugertest er en type manuel test pรฅ iOS. Formรฅlet med denne test er at skabe bedre apps, ikke kun fejlfri apps. Figuren nedenfor viser fire typer brugertestning.

Fire typer brugertestning

Koncepttest

Evaluer brugerens reaktion pรฅ en applikationsidรฉ, fรธr den frigives til markedet. Procedurerne for koncepttestning pรฅ iOS er beskrevet i figuren nedenfor.

Procedure for koncepttestning pรฅ iOS

Usability Testing

Usability Testing er en test af, hvor nemt det er at bruge din iOS-applikation. I iOS-testning kan en brugervenlighedstest udfรธres registreres at huske eller dele med andre.

Nogle vรฆrktรธjer, der understรธtter brugervenlighedstest pรฅ iOS, er:

Trymata mobile brugertest apps til Android og iOS.

Delight.io, kan dette vรฆrktรธj fange รฆgte brugerinteraktion pรฅ dine iOS-apps.

Betatestning

Beta-test er integrationstest med reelle data for at fรฅ endelig feedback fra brugerne. For at distribuere dine apps til betatestning skal du fรธlge nedenstรฅende trin.

Trin til distribution af betatest

-Pre-condition: Hvis du betatester en endelig kandidat til en udgivelse, skal du sรธrge for at validere appen, fรธr du distribuerer den til testere.

-Find tester via serviceDu indsamler enheds-id'er fra testere og tilfรธjer dem til din Apple Developer-konto

-Opret ad hoc distributionAd hoc-distribution giver testeren mulighed for at kรธre din app pรฅ sin enhed uden at skulle Xcode. Dette trin omfatter 2 undertrin

  • Opret distributionscertifikater
  • Opret ad-hoc-klargรธringsprofiler

-Bed om feedback fra testeren: Testere udfรธrer test og sender fejlrapporter til dig. Nรฅr din app er udgivet, kan du fรฅ rapporterne fra App Store Connect (tidligere iTunes Opret forbindelse).

Bemรฆrk: I dag distribuerer de fleste teams betaversioner med TestFlight, som giver dig mulighed for at invitere op til 10,000 eksterne testere uden at skulle indsamle enheds-id'er manuelt.

A / B-test

A / B-test er en af โ€‹โ€‹de mest kraftfulde mรฅder at evaluere effektiviteten af โ€‹โ€‹din iOS-app. Det bruger randomiserede eksperimenter med to enheder, A og B.

A/B-testning pรฅ to iOS-enheder

A/B-test omfatter tre hovedtrin

  • Konfigurer en testForbered 2 versioner af din iOS-app (A & B) og en testmetrik
  • TestTest de 2 ovenstรฅende iOS-appversioner pรฅ enheder samtidigt.
  • AnalyserMรฅl og vรฆlg den bedre version til udgivelse

Fรธlgende vรฆrktรธjer understรธtter A/B-testning pรฅ iOS.

  • Opstรฅ: A/B-test til bรฅde iOS og AndroidDen kan integreres i din iOS-app og gรธr testprocessen hurtigere.

Bedste praksis for A/B-test

  • Definer mรฅl af din test. Enhver test er ubrugelig uden et mรฅl.
  • Ur slutbrugere bruger din app fรธrste gang
  • Kรธr en kun test pr. opdatering. Det sparer dig tid, nรฅr du udfรธrer test
  • Overvรฅg din test omhyggeligt. Du kan lรฆre af din test ved at overvรฅge den.

iOS test Bedste praksis

Her er nogle tips, du bรธr vide, nรฅr du organiserer testen af โ€‹โ€‹din iOS-applikation

  1. Test applikationen pรฅ en รฆgte enhed for at fรฅ et realistisk billede af prรฆstationen
  2. Forbedre dine testmetoder, fordi traditionelle testmetoder ikke lรฆngere er tilstrรฆkkelige til at dรฆkke alle tests i iOS-testning
  3. Brug konsol log for at teste iOS-applikationen. Denne iOS-funktion indeholder oplysninger fra alle applikationer pรฅ enheden.
  4. Dokument applikationsfejl ved hjรฆlp af indbygget skรฆrmbillede kommando. Det hjรฆlper udvikleren med at forstรฅ, hvordan fejlene opstรฅr.
  5. Crash-rapportering Vรฆrktรธjer er nyttige, nรฅr du tester din applikation. De kan registrere nedbrud og logge detaljer, sรฅ du nemt kan undersรธge fejlene.

MYTER om iOS-test

Dette afsnit undersรธger et par populรฆre myter og realiteter ved iOS-test

Test af applikationer pรฅ iOS og Android er det samme.

iOS og Android er to platforme udviklet af Apple Inc. og Google henholdsvis. De er helt forskellige i testmiljรธer, testframeworks og programmeringssprog.

Det er nok at teste applikationen pรฅ iOS Simulator.

iOS-simulatoren er ikke stรฆrk nok til at teste en app, fordi den har nogle begrรฆnsninger:

  • Hardwarebegrรฆnsninger (kamera, mikrofonindgang, sensor)
  • Din apps brugergrรฆnseflade kan se ud til at kรธre bรฅde hurtigere og glattere end pรฅ en enhed
  • API-begrรฆnsninger
  • Nogle rammer understรธttes ikke (Media Player, Store Kit, Message UI..)

Alle vil downloade mine apps i app store, fordi de har mange funktioner.

Jo flere funktioner din applikation har, jo flere fejl kan du fรฅ. Ingen bruger vil downloade din applikation, hvis den stadig har mange defekter.

Ofte Stillede Spรธrgsmรฅl

Ja. AI-assisterede platforme genererer testcases, registrerer visuelle regressioner og reparerer defekte elementlokaliseringsvรฆrktรธjer, nรฅr din brugergrรฆnseflade รฆndres. Vรฆrktรธjer som f.eks. Test sigma Lad teams udarbejde iOS-tests pรฅ letforstรฅeligt engelsk.

AI-baseret selvreparation opdaterer elementlokalisering efter รฆndringer i brugergrรฆnsefladen, markerer ustabile tests og prioriterer hรธjrisikosager, hvilket reducerer det manuelle omarbejde, der fรธlger hver iOS-udgivelse.

Ja. Appium vedligeholdes aktivt og driver iOS-apps gennem Apples XCUITest-framework, der understรธtter tests i Javamanuskript, Python, Javaeller C#.

Nej. Et gratis Apple ID med Xcode lader dig teste pรฅ din egen enhed. Det betalte Apple Developer Program (99 USD/รฅr) er pรฅkrรฆvet for TestFlight distribution og udgivelse i App Store.

Opsummer dette indlรฆg med: