iOS-i automatiseerimise testimine Xcode Kasutajaliidese raamistik

⚡ Nutikas kokkuvõte

iOS-i automatiseeritud testimine koos Xcode salvestab ja esitab testitava rakenduse kasutajaliidese toiminguid, järgides testitud tsüklit, mis hõlmab disaini, testimist, juurutamist ja uuesti testimist, kuni iga juhtum on edukas.

  • 🔘 TDD tsükkel: iOS-i rakenduste testimisel rakendatavad neli etappi hõlmavad kavandamist, testimist, rakendamist ja uuesti testimist.
  • ☑️ Eeldused: Mac, millel on OS X koos operatsioonisüsteemiga Xcode IDE, automatiseerimisraamistik ja iOS SDK on installitud.
  • ✅ Instrumentide marsruut: Automatiseerimisvahend salvestab skripti, kuvab selle skriptilogis ja esitab seda nõudmisel uuesti.
  • 🧪 OCUnit marsruut: Objective-C-s kirjutatud ühiktestimise komplekti sihtmärk, aktiivne skeem, testirühm ja testiklass.
  • ⚠️ Aegumine: UIAutomationi tööriist aegus aastal Xcode 8 ja eemaldatud; XCUITest on toetatud järglane.
  • 🛠️ Kaasaegne vaste: Salvestatud Instrumentsi skripti asendab UI Testing Bundle'i sihtmärk koos XCUIApplicationi päringutega.

iOS-i automatiseeritud testimine koos Xcode Kasutajaliidese automatiseerimise raamistik, mis käitab salvestatud skripti rakenduse vastu

iOS-i automatiseerimise testimine Xcode

Oma iOS-i rakenduse kvaliteedi tagamiseks peaksite järgima alloleval joonisel näidatud testipõhist arendusprotsessi.

Testipõhine arendustsükkel iOS-i automatiseeritud testimiseks, mis näitab disaini, testimise, juurutamise ja uuesti testimise etappe

Test-Driven Development (TDD) on a testimine mudel, mida rakendatakse iOS-i rakenduste testimisel ja mis sobib laiema praktikaga mobiilne testimineSelles mudelis peab testija järgima alltoodud nelja etappi:

  • Design: Mõtle välja, mida sa testida tahad, ja kujunda oma testjuhtumid.
  • Test: Käivita kõik testid ja vaata, kas mõni test ebaõnnestub.
  • Rakendama: RevTäienda oma koodi ja paranda vead, mis põhjustasid testi ebaõnnestumise.
  • Testi uuesti: Kui test ebaõnnestub, pöörduge tagasi kavandi juurde. Kui kõik testid läbivad, vastab kood kõigile testitud nõuetele.

Seadistamine Xcode UI testimise projekt

iOS-i testprogrammi loomiseks vajate Maci. Teie Macis peavad olema juba installitud järgmised seadmed:

  • OS X — Maci operatsioonisüsteem.
  • Xcode IDE — iOS-i arendustööriist.
  • Automatiseeritud testimise raamistik — Kasutajaliidese automatiseerimine, OCUnit ja nii edasi.
  • iOS SDK 4 või kõrgem.

⚠️ Versiooni märkus: Ülaltoodud eeltingimused kirjeldavad ajastu tööriistaketti, mil kaks järgnevat läbimängujuhendit kirjutati. Praeguses Macis Xcode Komplektis on nii XCTesti kui ka XCUITesti raamistikud ning eraldi kasutajaliidese automatiseerimise tööriist ei kuulu enam installi hulka. Algsed sammud on allpool säilitatud, kuna need dokumenteerivad raamistiku toimimist ja tänapäevast vastet kirjeldatakse allpool.

Kuidas luua iOS-i automatiseerimist kasutajaliidese automatiseerimisraamistiku abil

Allolevad kaheksa sammu salvestavad automatiseerimisvahendiga skripti ja esitavad seda testitava rakenduse peal.

Samm 1) Käivitage instrumendid

Ava XCode -> Ava arendaja tööriist -> Instrument

Avamispillid alates Xcode Ava arendaja tööriista menüü

Samm 2) Lisage automaatikainstrument

Valige aknas Instruments (Instrumendid) automatiseerimisinstrument.

Automaatikainstrumendi valimine instrumentide mallide valijas

Testi skripti loomiseks salvestate kas testistsenaarium või programmeerite selle käsitsi.

Samm 3) Vajutage punast nuppu

Instrument käivitub – peatage salvestamine kohe. Salvestamise alustamiseks vajutage punast nuppu.

Punane salvestusnupp tööriistaribal Instruments, mida kasutatakse salvestuse alustamiseks ja peatamiseks trace

4. samm) Looge uus skript

Uue skripti loomiseks klõpsake skriptide aknas nuppu Lisa > Loo.

Uue automatiseerimisskripti loomiseks menüü „Lisa ja loo” aknas „Instrumentide skriptid”

Samm 5) Valige sihtmärk

Sa oled nüüd Trace aken. Kasutage valikut Target rippmenüüst, et navigeerida oma rakenduse silumisversioonini.

Vali Target rippmenüü menüüs Instruments Tracsilumisjärgule osutav aken

Sel juhul Apple'i näidis SimpleDrillDown Testimisel kasutatakse rakendust. Sellel on allpool näidatud graafiline kasutajaliides.

Testitava rakendusena kasutatud SimpleDrillDowni näidisrakenduse liides

6. samm) Alustage skripti salvestamist

Salvestage oma skript, vajutades tööriista üla- või alaosas olevat salvestusnuppu.

Salvestusnupp instrumentide akna servas, mis käivitab skriptide jäädvustamise

Nüüd saate testitava rakenduse peal teha mõningaid kasutajaliidese toiminguid ja teie skript salvestatakse.

7. samm) Vaadake oma skripti

Skripti vaatamiseks vajutage nuppu Trace Logi / Redaktori logi rippmenüü ja lülitu skripti logi vaatele.

Trace Logi ja redaktori logi rippmenüü, mida kasutatakse skriptilogi vaatele lülitumiseks

Näete oma salvestatud skripti.

Salvestatud kasutajaliidese automatiseerimise skript kuvatakse tööriistade skriptilogi vaates

Samm 8) Esitage oma skript

Vajuta esitusnuppu. Skript käivitub ja pärast logide ilmumist saad selle peatada.

Salvestatud automatiseerimisskripti taasesitus koos logiväljundiga aknas Instruments

⚠️ Ajalooline märkus: Nendes kaheksas etapis kasutatud automatiseerimisvahend aegus aastal Xcode 8 ja hiljem eemaldatud, seega seda praeguses versioonis enam ei ole. Xcode installatsioonid. Need sammud on siin säilitatud raamistiku toimimise ülestähendusena; uue töö jaoks kasutage sellel lehel allpool olevat XCUITesti läbivaatust.

Kuidas luua iOS-i automatiseerimist OCUniti raamistiku abil

Teine marsruut paigutab testid sisse Xcode projekt ise, mitte Instrumentide sees.

1. samm) Alusta Xcode IDE, ühiku testimispaketi sihtmärgi lisamine

Ühiktestimise paketi sihtmärgi lisamine olemasolevale Xcode projekt

2. samm) Kirjutage uue ühiktestimise komplekti nimi nagu ülaltoodud joonisel näidatud, seejärel klõpsake nuppu Valmis.

3. samm) Määrake ühiktest aktiivseks sihtmärgiks

Ühiktestide paketi valimine aktiivseks sihtmärgiks Xcode

4. samm) Lisage testklasside rühm

Projektirühma loomine iOS-i ühiktestide tundide hoidmiseks

Samm 5) Lisage ühikutesti klass

Uue ühiktesti klassifaili lisamine testirühma Xcode

6. samm) Nüüd alustage rakendamist

Tühi ühiktesti klass Xcode toimetaja on testimiseks valmis

OCUnit kasutab testprogrammi loomiseks Objective-C keelt, seega peab arendaja seda keelt oskama. Modern Xcode versioonid saadetakse üksuse testimine hoopis XCTesti kaudu, mis toetab nii Objective-C kui ka Swift, kuid nendes kuues etapis näidatud sihtmärgi ja klassi struktuur jääb samaks.

UIAutomation vs XCUITest: Mis muutus

Kuna mõlemad ülalkasutatud raamistikud kuuluvad Apple'i tööriistaketi varasemasse põlvkonda, tasub täpselt välja tuua, mis need asendas ja miks.

Aspekt Kasutajaliidese automatiseerimine (instrumendid) XCUITest
olek Aegunud aastal Xcode 8 ja eemaldatud hilisematest väljaannetest Apple'i toetatud kasutajaliidese testimise raamistik
Kus testid asuvad Skriptid instrumentide sees trace-dokument Kasutajaliidese testimise komplekti sihtmärk sees Xcode projekt
Keel JavaScript Swift või Objective-C
Testijooksja Automatiseerimisvahend XCTest, sama käivitaja mis ühiktestidel
Pidev integratsioon Kohmakas — läbi instrumentide aetud Käivitub käsurealt koos ühiktestidega
Salvestamine Salvestamise nupp tööriistaribal Instruments Salvesta nupp Xcode redaktor, mis väljastab Swift

Praktiline tagajärg on see, et XCUITesti komplekt on tavaline projekti lähtekood. Seda vaadatakse üle, versioonitakse ja käivitatakse nagu ülejäänud koodibaasi, mis on peamine põhjus, miks salvestatud...tracmudel kadus ära.

Kuidas kirjutada iOS-i kasutajaliidese testi XCUITesti abil

Kaheksa instrumendi sammu tänapäevane vaste on lühike. Allolev struktuur peegeldab sama salvesta-siis-esita-korda ideed, kuid väljundiks on pigem lähtefail kui ... trace.

  1. Lisa sihtmärk. In Xcode vali Fail > Uus > Target ja vali mall UI testimispakett või märgi ära testide kaasamise valik uue projekti loomisel.
  2. Ava genereeritud testklass. Xcode loob XCTestCase alamklassi tühjade seadistus- ja testimismeetoditega.
  3. Käivitage testitav rakendus. Loo XCUIApplicationi eksemplar ja kutsu sellel välja launch, mis käivitab rakenduse eraldi protsessina.
  4. Päring ja tegutsemine. Jõuate elementideni elemendipäringute – nuppude, tabelite, staatiliste tekstide – kaudu ja käivitage neil koputamine, tüüpText või libistamine.
  5. Väida. Kasutage XCTAsserti, et kontrollida, kas oodatud element eksisteerib pärast toimingut.
  6. Käivita. Käivita test alates Xcode test navigatorist või käsurealt, nii et sama komplekt töötab pidevas integratsioonis.

Minimaalne test järgib seda kuju:

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))
    }
}

Salvesti on endiselt olemas: kursori asetamine testimismeetodi sisse ja redaktoris salvestusnupu vajutamine genereerib need päringud automaatselt, mis on ülaltoodud 6. sammu otsene järeltulija. Laiemad põhimõtted automaatika testimine kehtivad muutmata kujul.

Kasutajaliidese automatiseerimise näidis Code

See artikkel sisaldab mõningaid lähtekoodi näiteid. Need aitavad teil õpetust selgemini ja kiiremini mõista.

Kasutajaliidese automatiseerimise näidis — UI automatiseerimise demo testimisskript.

KKK

Ei. Xcode ja iOS-i simulaatorid töötavad ainult macOS, seega on vaja Maci kas lokaalselt või hostitud ehitusmasinana. Pilveseadmete farmid ja hostitud CI-teenuse pakkujad on olemas just selleks, et meeskonnad, kellel pole Maci riistvara, saaksid komplekti siiski käivitada.

Masinõppe mudelid pakuvad ekraani muutumisel asenduselementide päringuid, klasterdavad ebaühtlaseid tõrkeid algpõhjuse järgi ja järjestavad ebaõnnestunud käivitused ehtsate regressioonidena. See on oluline kasutajaliidese pakettide puhul, kus väikesed paigutuse muudatused muidu rikuvad korraga palju selektoreid.

See saab korduvate osadega hästi hakkama – testiklasside tellingud, käivitusargumendid, lehe-objekti ümbrised ja väidete mallid. Elementide identifikaatorid peavad ikkagi vastama tegelikule rakendusele, seega tuleb iga genereeritud päringut enne usaldatavaks tunnistamist töötava versiooni suhtes kontrollida.

Appium juhib iOS-i oma XCUITesti draiveri kaudu, mis asendas vanema UIAutomationi draiveri. Selle eeliseks on üks platvormideülene testimiskeel iOS-i jaoks ja Android; kompromiss on lisakiht testi ja Apple'i enda jooksja vahel.

Ühiktest käivitatakse rakenduse protsessi sees ja kutsutakse otse teie koodi. Kasutajaliidese test käivitab rakenduse eraldi protsessina ja suhtleb ainult liidese kaudu, seega on see aeglasem, kuid valideerib seda, mida kasutaja tegelikult kogeb.

Simulaatorid on kiiremad ja sobivad enamiku funktsionaalsete voogude jaoks torujuhtmes. Kaamera, biomeetria, tõuketeavituste, jõudluse ja kõige riistvaraandureid puudutava jaoks on vaja päris seadmeid, seega kasutavad enamik meeskondi mõlemat tsükli eri punktides.

Iga test taaskäivitab rakenduse ja ootab animatsioone. Stabiilsus paraneb, kui siltide asemel määrate ligipääsetavuse identifikaatorid ja ootate elemendi olemasolu, mitte ei jää sleep-režiimi.ping, lähtestage olek testide vahel ja hoidke iga juhtum keskendunud ühele teekonnale.

Mitte otse, sest keeled ja elementide mudelid erinevad. Tavapärane viis on hoida vanu skripte kavandatud katvuse dokumentatsioonina ja seejärel kirjutada iga stsenaarium ümber XCUITesti juhtumina, alustades teekondadest, mis tootmises kõige sagedamini ebaõnnestuvad.

Võta see postitus kokku järgmiselt: