iOS automationstestning med Xcode UI-ramverk
⚡ Smart sammanfattning
iOS-automatiseringstestning med Xcode registrerar och spelar upp användargränssnittsåtgärder mot en applikation som testas, enligt en testdriven cykel av design, test, implementation och test igen tills varje fall godkänns.
iOS automationstestning med hjälp av Xcode
För att garantera kvaliteten på din iOS-applikation bör du följa den testdrivna utvecklingsprocessen som visas i bilden nedan.
Testdriven utveckling (TDD) är en testning modell som tillämpas på testning av iOS-applikationer, och den ingår i den bredare praxisen av mobil testningI den här modellen måste en testare följa de fyra faserna nedan:
- Design: Ta reda på vad du vill testa och utforma dina testfall.
- Test: Kör alla tester och se om några testfall misslyckas.
- Genomföra: Revise din kod och åtgärda buggarna som orsakade att testet misslyckades.
- Testa igen: Om ett test misslyckas, återgå till designen. Om alla testfall godkänns uppfyller koden hela det testade kravet.
Inställning Xcode Projekt för UI-testning
För att skapa ett iOS-testprogram behöver du en Mac. Din Mac måste redan ha följande installerat:
- OS X — operativsystemet för en Mac.
- Xcode IDE — utvecklingsverktyget för iOS.
- Ett automatiserat testramverk — UI-automation, OCUnit och så vidare.
- iOS SDK 4 eller högre.
⚠️ Versionsinformation: Förutsättningarna ovan beskriver verktygskedjan från den era då de två följande genomgångarna skrevs. På en aktuell Mac, Xcode Ramverken XCTest och XCUITest medföljer i lådan, och det separata UI Automation-instrumentet är inte längre en del av installationen. De ursprungliga stegen bevaras nedan eftersom de dokumenterar hur ramverket fungerade, och den moderna motsvarigheten beskrivs längre ner.
Hur man skapar iOS Automation med UI Automation Framework
De åtta stegen nedan spelar in ett skript med Automation-instrumentet och spelar upp det mot den applikation som testas.
Steg 1) Starta instrument
Öppna XCode -> Öppna utvecklarverktyget -> Instrument
Steg 2) Lägg till automationsinstrument
I fönstret Instrument väljer du instrumentet Automation.
För att skapa ett testskript spelar du antingen in en testscenario eller så programmerar du den manuellt.
Steg 3) Tryck på den röda knappen
Ett instrument startas — stoppa inspelningen omedelbart. Om du vill starta inspelningen trycker du på den röda knappen.
Steg 4) Skapa ett nytt skript
I skriptfönstret klickar du på Lägg till > Skapa för att skapa ett nytt skript.
Steg 5) Välj målet
Du är nu i Tracfönstret. Använd Välj-knappen Target rullgardinsmenyn för att navigera till felsökningsversionen av din app.
I det här fallet Apples exempel SimpleDrillDown appen används som applikationen som testas. Den har det grafiska gränssnitt som visas nedan.
Steg 6) Börja spela in ditt skript
Spela in ditt skript genom att trycka på inspelningsknappen längst upp eller längst ned i verktyget.
Nu kan du utföra vissa UI-åtgärder på din applikation under testning, och ditt skript spelas in.
Steg 7) Se ditt manus
För att se ditt manus, tryck på Trace Logg / Redigerarlogg i rullgardinsmenyn och växla till skriptloggvyn.
Du kommer att se ditt inspelade manus.
Steg 8) Spela ditt manus
Tryck på uppspelningsknappen. Skriptet körs och du kan stoppa det efter att loggarna visas.
⚠️ Historisk anmärkning: Automatiseringsinstrumentet som användes i dessa åtta steg föråldrades i Xcode 8 och senare borttagen, så den finns inte längre i nuvarande Xcode installationer. Stegen behålls här som en förteckning över hur ramverket fungerade; för nytt arbete, använd XCUITest-genomgången längre ner på den här sidan.
Hur man skapar iOS-automatisering med OCUnit-ramverket
Den andra vägen placerar testerna inuti Xcode projicera sig själv snarare än inuti Instrument.
Steg 1) Starta Xcode IDE, Lägg till enhetstestpaketmål
Steg 2) Skriv namnet på det nya enhetstestpaketet som visas i bilden ovan och klicka sedan på Slutför.
Steg 3) Gör enhetstest till aktivt mål
Steg 4) Lägg till en grupp för testklasser
Steg 5) Lägg till en enhetstestklass
Steg 6) Börja nu din implementering
OCUnit använder språket Objective-C för att skapa testprogrammet, så utvecklaren måste kunna det språket. Xcode versioner levereras enhetstestning genom XCTest istället, vilket stöder både Objective-C och Swift, men mål-och-klassstrukturen som visas i dessa sex steg är oförändrad.
UIAutomation vs XCUITest: Vad som förändrades
Eftersom båda ramverken som används ovan tillhör en tidigare generation av Apples verktygskedja är det värt att vara exakt om vad som ersatte dem och varför.
| Aspect | UI-automation (instrument) | XCUIT Test |
| Status | Föråldrad i Xcode 8 och borttagen från senare utgåvor | Apples stödda ramverk för UI-testning |
| Var tester finns | Skript inuti ett instrument trace-dokument | Ett UI-testpaketmål inuti Xcode projektet |
| Språk | JavaScript | Swift eller Objective-C |
| Testlöpare | Automationsinstrumentet | XCTest, samma löpare som enhetstester |
| Kontinuerlig integration | Obekväm — driven genom instrument | Körs från kommandoraden tillsammans med enhetstester |
| Inspelning | Inspelningsknappen i instrumentfältet | Inspelningsknappen i Xcode redaktör, som avger Swift |
Den praktiska konsekvensen är att en XCUITest-svit är vanlig projektkällkod. Den granskas, versioneras och exekveras precis som resten av kodbasen, vilket är den främsta anledningen till att den inspelade-tracmodellen försvann.
Hur man skriver ett iOS UI-test med XCUITest
Den moderna motsvarigheten till de åtta instrumentstegen är kort. Strukturen nedan speglar samma idé med inspelning och sedan uppspelning, men utdata är en källfil snarare än en trace.
- Lägg till målet. In Xcode välj Arkiv > Nytt > Target och välj mallen UI Testing Bundle, eller markera alternativet för att inkludera tester när du skapar ett nytt projekt.
- Öppna den genererade testklassen. Xcode skapar en XCTestCase-underklass med tomma installations- och testmetoder.
- Starta appen som testas. Skapa en XCUIApplication-instans och anropa launch på den, vilket startar appen i en separat process.
- Fråga och agera. Nå element via elementfrågorna – knappar, tabeller, statiska texter – och anropa tryck, skriv text eller svep på dem.
- Hävda. Använd XCTAssert för att verifiera att det förväntade elementet finns efter åtgärden.
- Springa. Kör testet från Xcode testnavigatorn, eller från kommandoraden så att samma sviten körs i kontinuerlig integration.
Ett minimalt test följer denna 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)) } }
Inspelningsfunktionen finns fortfarande kvar: om man placerar markören i en testmetod och trycker på inspelningsknappen i redigeraren genereras dessa frågor automatiskt, vilket är en direkt följd av steg 6 ovan. De bredare principerna för automatiseringstestning gälla oförändrad.
Exempel på UI-automatisering Code
Den här artikeln innehåller några exempel på källkod. De hjälper dig att förstå handledningen tydligare och snabbare.
Exempel på UI-automatisering — testskript för demon av UI Automation.















