iOS automatiseringstest med Xcode UI-ramme
⚡ Smart opsummering
iOS-automatiseringstest med Xcode registrerer og afspiller brugergrænsefladehandlinger mod en applikation under test, efter en testdrevet cyklus af design, test, implementering og test igen, indtil alle cases består.

iOS Automation Test vha Xcode
For at garantere kvaliteten af din iOS-applikation bør du følge den testdrevne udviklingsproces, der er vist i figuren nedenfor.
Testdrevet udvikling (TDD) er en test model, der anvendes til test af iOS-applikationer, og den er en del af den bredere praksis for mobil testI denne model skal en tester følge de 4 faser nedenfor:
- Design: Find ud af, hvad du vil teste, og design dine testcases.
- Test: Kør alle tests og se om nogen testcases fejler.
- Implementere: Revisér din kode og ret de fejl, der forårsagede, at testen mislykkedes.
- Test igen: Hvis en test mislykkes, vend tilbage til designet. Hvis alle testtilfælde består, opfylder koden hele det testede krav.
Opsætning Xcode Projekt til UI-testning
For at oprette et iOS-testprogram skal du bruge en Mac. Følgende skal allerede være installeret på din Mac:
- OS X — operativsystemet til en Mac.
- Xcode IDE — udviklingsværktøjet til iOS.
- Et automatiseret testframework — UI-automatisering, OCUnit og så videre.
- iOS SDK 4 eller højere.
⚠️ Versionsnotat: Ovenstående forudsætninger beskriver værktøjskæden fra den æra, hvor de to følgende gennemgange blev skrevet. På en nuværende Mac, Xcode XCTest- og XCUITest-frameworks medfølger i æsken, og det separate UI Automation-instrument er ikke længere en del af installationen. De oprindelige trin er bevaret nedenfor, fordi de dokumenterer, hvordan frameworket fungerede, og den moderne ækvivalent er beskrevet længere nede.
Sådan opretter du iOS Automation ved hjælp af UI Automation Framework
De otte trin nedenfor optager et script med Automation-instrumentet og afspiller det mod den applikation, der testes.
Trin 1) Start Instruments
Åbn XCode -> Åbn udviklerværktøj -> Instrument
Trin 2) Tilføj automatiseringsinstrument
I vinduet Instrumenter skal du vælge instrumentet Automation.
For at oprette et testscript skal du enten optage en testscenarie eller du programmerer det manuelt.
Trin 3) Tryk på den røde knap
Et instrument starter – stop optagelsen med det samme. Hvis du vil starte optagelsen, skal du trykke på den røde knap.
Trin 4) Opret et nyt script
I Scripts-vinduet skal du klikke på Tilføj > Opret for at oprette et nyt script.
Trin 5) Vælg målet
Du er nu i Tracvinduet. Brug Vælg-knappen Target rullemenuen for at navigere til fejlfindingsversionen af din app.
I dette tilfælde Apples prøve SimpleDrillDown app'en bruges som den applikation, der testes. Den har den grafiske brugergrænseflade, der er vist nedenfor.
Trin 6) Start med at optage dit script
Optag dit script ved at trykke på optag-knappen øverst eller nederst i værktøjet.
Nu kan du udføre nogle brugergrænsefladehandlinger på din applikation under test, og dit script er optaget.
Trin 7) Se dit script
For at se dit script skal du trykke på Trace Rullemenuen Log / Redigeringslog og skift til scriptlogvisningen.
Du vil se dit optagede script.
Trin 8) Spil dit script
Tryk på afspilningsknappen. Scriptet kører, og du kan stoppe det, når logfilerne vises.
⚠️ Historisk bemærkning: Automatiseringsinstrumentet, der blev brugt i disse otte trin, blev udfaset i Xcode 8 og senere fjernet, så den er ikke længere til stede i den nuværende Xcode installationer. Trinene er gemt her som en oversigt over, hvordan frameworket fungerede; for nyt arbejde skal du bruge XCUITest-gennemgangen længere nede på denne side.
Sådan opretter du iOS-automatisering ved hjælp af OCUnit-ramme
Den anden rute placerer testene inden for Xcode projektet selv snarere end inde i Instrumenter.
Trin 1) Start Xcode IDE, Tilføj mål for enhedstestbundt
Trin 2) Skriv navnet på den nye enhedstestpakke som vist på figuren ovenfor, og klik derefter på Udfør.
Trin 3) Gør Enhedstest til det aktive mål
Trin 4) Tilføj en gruppe til testklasser
Trin 5) Tilføj en enhedstestklasse
Trin 6) Start nu din implementering
OCUnit bruger sproget Objective-C til at oprette testprogrammet, så udvikleren skal kende sproget. Moderne Xcode versioner leveres enhedstest gennem XCTest i stedet, som understøtter både Objective-C og Swift, men mål-og-klasse-strukturen vist i disse seks trin er uændret.
UIAutomation vs. XCUITest: Hvad har ændret sig
Da begge ovennævnte frameworks tilhører en tidligere generation af Apple-værktøjskæden, er det værd at være præcis omkring, hvad der erstattede dem, og hvorfor.
| Aspect | UI-automatisering (instrumenter) | XCUIT Test |
| Status | Udfaset i Xcode 8 og fjernet fra senere udgivelser | Apples understøttede UI-testrammeværk |
| Hvor testene findes | Scripts i et instrument trace-dokument | Et mål for en UI-testpakke indeni Xcode projekt |
| Sprog | JavaScript | Swift eller Objective-C |
| Testløber | Automatiseringsinstrumentet | XCTest, den samme runner som enhedstests |
| Kontinuerlig integration | Akavet — drevet gennem instrumenter | Kører fra kommandolinjen sammen med enhedstests |
| Indspilning | Optageknap i Instruments-værktøjslinjen | Optageknap i Xcode redaktør, som udsender Swift |
Den praktiske konsekvens er, at en XCUITest-suite er almindelig projektkildekode. Den gennemgås, versioneres og udføres ligesom resten af kodebasen, hvilket er hovedårsagen til den optagede-tracmodellen forsvandt.
Sådan skriver du en iOS UI-test med XCUITest
Den moderne ækvivalent til de otte instrumenttrin er kort. Strukturen nedenfor afspejler den samme idé om at optage og derefter afspille, men outputtet er en kildefil snarere end en trace.
- Tilføj målet. In Xcode vælg Filer > Ny > Target og vælg skabelonen UI Testing Bundle, eller marker muligheden for at inkludere tests, når du opretter et nyt projekt.
- Åbn den genererede testklasse. Xcode opretter en XCTestCase-underklasse med tomme opsætnings- og testmetoder.
- Start den app, der testes. Opret en XCUIApplication-instans og kald launch på den, hvilket starter appen i en separat proces.
- Spørg og handl. Nå elementer via elementforespørgsler — knapper, tabeller, statiske tekster — og kald tryk, skriv tekst eller swipe på dem.
- Hævde. Brug XCTAssert til at bekræfte, at det forventede element findes efter handlingen.
- Løb. Udfør testen fra Xcode testnavigator, eller fra kommandolinjen, så den samme suite kører i kontinuerlig integration.
En minimal test følger denne form:
import XCTest final class AppUITests: XCTestCase { func testTappingFirstRowShowsDetail() { let app = XCUIApplication() app.launch() // act on the first row of the list app.tables.cells.element(boundBy: 0).tap() // verify that the next screen appeared XCTAssertTrue(app.staticTexts.firstMatch.waitForExistence(timeout: 5)) } }
Optageren findes stadig: når man placerer markøren i en testmetode og trykker på optageknappen i editoren, genereres disse forespørgsler automatisk, hvilket er en direkte efterkommer af trin 6 ovenfor. De bredere principper for automatiseringstest gælder uændret.
Eksempel på UI-automatisering Code
Denne artikel indeholder nogle eksempler på kildekode. De hjælper dig med at forstå vejledningen tydeligere og hurtigere.
Eksempel på UI-automatisering — testscript til UI Automation-demoen.















