iOS-automatiseringstests met Xcode UI-framework
โก Slimme samenvatting
iOS-automatiseringstesten met Xcode Het registreert en speelt gebruikersinterfaceacties af op een te testen applicatie, volgens een testgestuurde cyclus van ontwerpen, testen, implementeren en opnieuw testen totdat elk geval slaagt.
iOS-automatiseringstests met behulp van Xcode
Om de kwaliteit van uw iOS-applicatie te garanderen, dient u het testgestuurde ontwikkelingsproces te volgen dat in de onderstaande afbeelding wordt weergegeven.
Test Driven Development (TDD) is een het testen van model dat wordt toegepast op het testen van iOS-applicaties, en het past binnen de bredere praktijk van mobiel testenIn dit model moet een tester de onderstaande 4 fasen doorlopen:
- Design: Bepaal wat je wilt testen en ontwerp je testgevallen.
- Test: Voer alle tests uit en kijk of er testgevallen zijn die mislukken.
- Implementeren: RevGebruik je code en verhelp de fouten die ervoor zorgden dat de test mislukte.
- Test opnieuw: Als een test mislukt, ga dan terug naar het ontwerp. Als alle testgevallen slagen, voldoet de code aan alle geteste vereisten.
Opzetten Xcode Project voor UI-testen
Om een โโiOS-testprogramma te maken, heb je een Mac nodig. Op je Mac moet het volgende al geรฏnstalleerd zijn:
- OS X โ het besturingssysteem voor een Mac.
- Xcode IDE โ de ontwikkeltool voor iOS.
- Een geautomatiseerd testframework โ UI Automation, OCUnit, enzovoort.
- iOS SDK 4 of hoger.
โ ๏ธ Versie-opmerking: De bovenstaande voorwaarden beschrijven de toolchain van het tijdperk waarin de twee volgende handleidingen zijn geschreven. Op een moderne Mac, Xcode De XCTest- en XCUITest-frameworks worden standaard meegeleverd, en het aparte UI Automation-instrument maakt geen deel meer uit van de installatie. De oorspronkelijke stappen zijn hieronder bewaard gebleven omdat ze documenteren hoe het framework werkte, en de moderne equivalent wordt verderop beschreven.
Hoe iOS-automatisering te creรซren met behulp van UI Automation Framework
De acht onderstaande stappen registreren een script met het Automation-instrument en spelen dit af op de te testen applicatie.
Stap 1) Lanceer instrumenten
Open XCode -> Ontwikkelaarstools openen -> Instrument
Stap 2) Voeg een automatiseringsinstrument toe
Selecteer in het venster Instrumenten het instrument Automatisering.
Om een โโtestscript te maken, neem je ofwel een testscript op, ofwel een testscript. testscenario Of je programmeert het handmatig.
Stap 3) Druk op de rode knop
Een instrument wordt opgestart โ stop de opname onmiddellijk. Om de opname te starten, drukt u op de rode knop.
Stap 4) Maak een nieuw script
Klik in het venster Scripts op Toevoegen > Maken om een โโnieuw script te maken.
Stap 5) Kies het doel
U bevindt zich nu in de Trace-venster. Gebruik de optie Kiezen Target Trek het menu naar beneden om naar de debugversie van je app te gaan.
In dit geval ging het om het voorbeeld van Apple. EenvoudigDrillDown De app wordt gebruikt als de te testen applicatie. De gebruikersinterface (GUI) ervan wordt hieronder weergegeven.
Stap 6) Begin met het opnemen van uw script
Neem uw script op door op de opnameknop bovenaan of onderaan de tool te drukken.
Nu kunt u enkele UI-acties uitvoeren op de applicatie die u test, en uw script wordt opgenomen.
Stap 7) Bekijk je script
Om je script te zien, druk je op de Trace Log / Editor Log dropdown en schakel over naar de scriptlogweergave.
U zult uw opgenomen script zien.
Stap 8) Speel je script af
Druk op de afspeelknop. Het script wordt uitgevoerd en je kunt het stoppen zodra de logbestanden verschijnen.
โ ๏ธ Historische noot: Het automatiseringsinstrument dat in deze acht stappen werd gebruikt, is verouderd in Xcode Vanaf versie 8 is het verwijderd, dus het is niet meer aanwezig in de huidige versie. Xcode installaties. De stappen zijn hier bewaard gebleven als een verslag van hoe het framework werkte; voor nieuw werk kunt u de XCUITest-handleiding verderop op deze pagina gebruiken.
Hoe iOS-automatisering te creรซren met behulp van het OCUnit-framework
De tweede route plaatst de tests binnenin de Xcode Het projecteert zichzelf eerder dan dat het zich binnen de instrumenten bevindt.
Stap 1) Beginnen Xcode IDE, Voeg een unit-testbundeldoel toe
Stap 2) Schrijf de naam van de nieuwe unit testbundel. zoals weergegeven in de bovenstaande afbeelding, klik dan op Voltooien.
Stap 3) Maak de unit-test het actieve doel
Stap 4) Voeg een groep toe voor testklassen
Stap 5) Voeg een Unit-testklasse toe
Stap 6) Begin nu met de implementatie.
OCUnit gebruikt de Objective-C-taal om het testprogramma te maken, dus de ontwikkelaar moet die taal beheersen. Xcode versies verzenden testen van een eenheid via XCTest, dat zowel Objective-C als ondersteunt. SwiftMaar de doel- en klassestructuur die in deze zes stappen wordt getoond, blijft ongewijzigd.
UIAutomation versus XCUITest: Wat is er veranderd?
Omdat beide hierboven gebruikte frameworks tot een eerdere generatie van de Apple-toolchain behoren, is het belangrijk om precies te vermelden wat ze heeft vervangen en waarom.
| Aspect | UI-automatisering (instrumenten) | XCUITest |
| Status | Verouderd in Xcode 8 en verwijderd uit latere releases | Het door Apple ondersteunde framework voor UI-testen. |
| Waar de tests plaatsvinden | Scripts binnen een Instruments trace-document | Een UI Testing Bundle-doel binnen de Xcode project |
| Taal | JavaScript | Swift of Objectief-C |
| Testloper | Het automatiseringsinstrument | XCTest, dezelfde runner als voor unit tests |
| Continue integratie | Onhandig โ gedreven door Instruments | Wordt uitgevoerd vanaf de commandoregel, samen met unit tests. |
| Opnemen | Opnameknop in de instrumentenwerkbalk | Opnameknop in de Xcode editor, die uitzendt Swift |
Het praktische gevolg hiervan is dat een XCUITest-suite gewone broncode van een project is. Deze wordt beoordeeld, van versiebeheer voorzien en uitgevoerd zoals de rest van de codebase, wat de belangrijkste reden is voor de vastgelegde resultaten.tracHet model is verdwenen.
Hoe schrijf je een iOS UI-test met XCUITest?
Het moderne equivalent van de acht Instruments-stappen is kort. De onderstaande structuur weerspiegelt hetzelfde idee van opnemen en vervolgens afspelen, maar de uitvoer is een bronbestand in plaats van een audiobestand. trace.
- Voeg het doel toe. In Xcode Kies Bestand > Nieuw > Target en kies de sjabloon UI Testing Bundle, of vink de optie aan om tests op te nemen bij het maken van een nieuw project.
- Open de gegenereerde testklasse. Xcode Maakt een XCTestCase-subklasse aan met lege setup- en testmethoden.
- Start de te testen app. Maak een XCUIApplication-instantie aan en roep de launch-methode erop aan. Hiermee start de app in een apart proces.
- Stel vragen en handel. Benader elementen via elementquery's โ knoppen, tabellen, statische teksten โ en roep tik-, typeText- of veegacties erop aan.
- Beweren. Gebruik XCTAssert om te controleren of het verwachte element na de actie bestaat.
- Rennen. Voer de test uit vanuit de Xcode test navigator, of vanaf de commandoregel, zodat dezelfde suite in continue integratie wordt uitgevoerd.
Een minimale test heeft deze vorm:
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)) } }
De recorder bestaat nog steeds: door de cursor in een testmethode te plaatsen en op de opnameknop in de editor te drukken, worden deze query's automatisch gegenereerd. Dit is een direct gevolg van stap 6 hierboven. De bredere principes van automatisering testen Onveranderd van toepassing blijven.
Voorbeeld van UI-automatisering Code
Dit artikel bevat enkele voorbeelden van broncode. Deze helpen je de handleiding sneller en beter te begrijpen.
Voorbeeld van UI-automatisering โ testscript voor de UI Automation-demo.















