iOS automatiseringstesting med Xcode UI-rammeverk
โก Smart oppsummering
iOS-automatiseringstesting med Xcode registrerer og spiller av brukergrensesnitthandlinger mot en applikasjon under test, etter en testdrevet syklus med design, test, implementering og testing igjen til alle tilfeller er bestรฅtt.
iOS-automatiseringstesting ved hjelp av Xcode
For รฅ garantere kvaliteten pรฅ iOS-applikasjonen din, bรธr du fรธlge den testdrevne utviklingsprosessen som vises i figuren nedenfor.
Testdrevet utvikling (TDD) er en testing modell som brukes til testing av iOS-applikasjoner, og den ligger innenfor den bredere praksisen med mobil testingI denne modellen mรฅ en tester fรธlge de fire fasene nedenfor:
- Design: Finn ut hva du vil teste og design testtilfellene dine.
- Test: Kjรธr alle tester og se om noen testtilfeller feiler.
- Implementere: Revise koden din og fikse feilene som forรฅrsaket at testen mislyktes.
- Test igjen: Hvis en test mislykkes, gรฅ tilbake til designet. Hvis alle testtilfeller bestรฅr, oppfyller koden hele det testede kravet.
Setter opp Xcode Prosjekt for UI-testing
For รฅ opprette et iOS-testprogram trenger du en Mac. Mac-en din mรฅ allerede ha fรธlgende installert:
- OS X โ operativsystemet for en Mac.
- Xcode IDE โ utviklingsverktรธyet for iOS.
- Et automatisert testrammeverk โ UI-automatisering, OCUnit og sรฅ videre.
- iOS SDK 4 eller hรธyere.
โ ๏ธ Versjonsmerknad: Forutsetningene ovenfor beskriver verktรธykjeden fra den tiden de to gjennomgangene som fรธlger ble skrevet i. Pรฅ en nรฅvรฆrende Mac, Xcode XCTest- og XCUITest-rammeverkene fรธlger med i esken, og det separate UI-automatiseringsinstrumentet er ikke lenger en del av installasjonen. De opprinnelige trinnene er bevart nedenfor fordi de dokumenterer hvordan rammeverket fungerte, og den moderne ekvivalenten er beskrevet lenger nede.
Hvordan lage iOS-automatisering ved hjelp av UI Automation Framework
De รฅtte trinnene nedenfor spiller inn et skript med automatiseringsinstrumentet og spiller det av mot applikasjonen som testes.
Trinn 1) Start Instruments
ร pne XCode -> ร pne utviklerverktรธyet -> Instrument
Trinn 2) Legg til automatiseringsinstrument
I Instrumenter-vinduet velger du Automatiseringsinstrumentet.
For รฅ lage et testskript, mรฅ du enten spille inn en testscenario eller du programmerer det manuelt.
Trinn 3) Trykk pรฅ den rรธde knappen
Et instrument starter โ stopp opptaket umiddelbart. Hvis du vil starte opptaket, trykker du pรฅ den rรธde knappen.
Trinn 4) Lag et nytt skript
I Skript-vinduet klikker du pรฅ Legg til > Opprett for รฅ opprette et nytt skript.
Trinn 5) Velg mรฅlet
Du er nรฅ i Trace-vinduet. Bruk Velg-knappen Target rullegardinmenyen for รฅ navigere til feilsรธkingsversjonen av appen din.
I dette tilfellet Apples eksempel SimpleDrillDown appen brukes som applikasjonen som testes. Den har det grafiske brukergrensesnittet som er vist nedenfor.
Trinn 6) Begynn รฅ spille inn skriptet ditt
Ta opp skriptet ditt ved รฅ trykke pรฅ opptaksknappen รธverst eller nederst i verktรธyet.
Nรฅ kan du utfรธre noen brukergrensesnitthandlinger pรฅ applikasjonen din under testing, og skriptet ditt er registrert.
Trinn 7) Se skriptet ditt
For รฅ se skriptet ditt, trykk pรฅ Trace Logg / Redigeringslogg-rullegardinmenyen og bytt til skriptloggvisningen.
Du vil se det innspilte skriptet ditt.
Trinn 8) Spill av manuset ditt
Trykk pรฅ avspillingsknappen. Skriptet kjรธrer, og du kan stoppe det etter at loggene vises.
โ ๏ธ Historisk notat: Automatiseringsinstrumentet som ble brukt i disse รฅtte trinnene ble avviklet i Xcode 8 og senere fjernet, sรฅ den er ikke lenger tilstede i dagens Xcode installasjoner. Trinnene er beholdt her som en oversikt over hvordan rammeverket fungerte. For nytt arbeid, bruk XCUITest-gjennomgangen lenger ned pรฅ denne siden.
Hvordan lage iOS-automatisering ved hjelp av OCUnit-rammeverket
Den andre ruten plasserer testene inne i Xcode projisere seg selv i stedet for inne i Instruments.
Trinn 1) Start Xcode IDE, Legg til enhetstestpakkemรฅl
Trinn 2) Skriv navnet pรฅ den nye enhetstestpakken som vist i figuren ovenfor, og klikk deretter pรฅ Fullfรธr.
Trinn 3) Gjรธr enhetstesten til det aktive mรฅlet
Trinn 4) Legg til en gruppe for testklasser
Trinn 5) Legg til en enhetstestklasse
Trinn 6) Start nรฅ implementeringen
OCUnit bruker sprรฅket Objective-C til รฅ lage testprogrammet, sรฅ utvikleren mรฅ kunne det sprรฅket. Modern Xcode versjoner sendes enhetstesting gjennom XCTest i stedet, som stรธtter bรฅde Objective-C og Swift, men mรฅl-og-klasse-strukturen som vises i disse seks trinnene er uendret.
UIAutomation vs. XCUITest: Hva endret seg
Fordi begge rammeverkene som er brukt ovenfor tilhรธrer en tidligere generasjon av Apple-verktรธykjeden, er det verdt รฅ vรฆre presis om hva som erstattet dem og hvorfor.
| Aspekt | UI-automatisering (instrumenter) | XCUIT-test |
| status | Utdatert i Xcode 8 og fjernet fra senere utgivelser | Apples stรธttede rammeverk for UI-testing |
| Hvor testene finnes | Skript i et instrument trace-dokument | Et mรฅl for en UI-testpakke inne i Xcode prosjekt |
| Sprรฅk | JavaScript | Swift eller Objective-C |
| Testlรธper | Automatiseringsinstrumentet | XCTest, samme lรธper som enhetstester |
| Kontinuerlig integrasjon | Klosset โ drevet gjennom instrumenter | Kjรธrer fra kommandolinjen sammen med enhetstester |
| Innspilling | Opptaksknapp i Instruments-verktรธylinjen | Opptaksknappen i Xcode redaktรธr, som sender ut Swift |
Den praktiske konsekvensen er at en XCUITest-pakke er vanlig prosjektkildekode. Den blir gjennomgรฅtt, versjonert og kjรธrt som resten av kodebasen, noe som er hovedgrunnen til at den registrerte-tracmodellen forsvant.
Slik skriver du en iOS UI-test med XCUITest
Den moderne ekvivalenten til de รฅtte instrumenttrinnene er kort. Strukturen nedenfor speiler den samme ideen om รฅ spille inn og deretter spille av pรฅ nytt, men resultatet er en kildefil snarere enn en trace.
- Legg til mรฅlet. In Xcode velg Fil > Ny > Target og velg malen for UI-testingspakken, eller merk av for alternativet for รฅ inkludere tester nรฅr du oppretter et nytt prosjekt.
- ร pne den genererte testklassen. Xcode oppretter en XCTestCase-underklasse med tomme oppsett- og testmetoder.
- Start appen som testes. Opprett en XCUIApplication-instans og kall `launch` pรฅ den, som starter appen i en separat prosess.
- Spรธr og handle. Nรฅ elementer gjennom elementspรธrringene โ knapper, tabeller, statiske tekster โ og bruk trykk, skriv tekst eller sveip pรฅ dem.
- Hevde. Bruk XCTAssert til รฅ bekrefte at det forventede elementet finnes etter handlingen.
- Lรธpe. Utfรธr testen fra Xcode testnavigator, eller fra kommandolinjen slik at den samme suiten kjรธrer i kontinuerlig integrasjon.
En minimal test fรธlger denne formen:
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)) } }
Opptakeren finnes fortsatt: รฅ plassere markรธren i en testmetode og trykke pรฅ opptaksknappen i redigeringsprogrammet genererer disse spรธrringene automatisk, som er en direkte etterkommer av trinn 6 ovenfor. De bredere prinsippene for automatiseringstesting gjelder uendret.
Eksempel pรฅ UI-automatisering Code
Denne artikkelen inneholder noen eksempler pรฅ kildekode. De hjelper deg รฅ forstรฅ veiledningen tydeligere og raskere.
Eksempel pรฅ UI-automatisering โ testskript for demoen av UI-automatisering.















