Við keyrum hljóðfærapróf í Firebase Test Lab. Hluti 1: iOS verkefni

Við keyrum hljóðfærapróf í Firebase Test Lab. Hluti 1: iOS verkefni

Ég heiti Dmitry, ég vinn sem prófari í fyrirtækinu MEL vísindi. Alveg nýlega kláraði ég að takast á við tiltölulega nýlegan þátt frá Firebase prófunarstöð — nefnilega með tækjaprófun á iOS forritum með því að nota innfædda prófunarrammann XCUITest.

Fyrir þetta hafði ég þegar prófað Firebase Test Lab fyrir Android og líkaði mjög vel við allt, svo ég ákvað að reyna að setja iOS prófinnviði verkefnisins á sama grunn. Ég þurfti að gúgla mikið og allt kom fyrir ekki í fyrsta skiptið, svo ég ákvað að skrifa kennslugrein fyrir þá sem eru enn að berjast.

Svo ef þú ert með UI próf á iOS verkefni geturðu nú þegar prófað að keyra þau á raunverulegum tækjum í dag, vinsamlega veitt af Good Corporation. Fyrir áhugasama, velkomið að kötta.

Í sögunni ákvað ég að byggja á nokkrum upphafsgögnum - einkageymsla á GitHub og CircleCI byggingarkerfinu. Nafn forritsins er AmazingApp, bundleID er com.company.amazingapp. Ég set þessi gögn fram strax til að draga úr óvissu í kjölfarið.

Ef þú útfærðir ákveðnar lausnir í verkefninu þínu á annan hátt skaltu deila reynslu þinni í athugasemdunum.

1. Prófin sjálf

Búðu til nýja verkefnagrein fyrir HÍ próf:

$ git checkout develop
$ git pull
$ git checkout -b “feature/add-ui-tests”

Við skulum opna verkefnið í XCode og búa til nýtt Target með UI prófum [XCode -> File -> New -> Target -> iOS Testing Bundle], sem gefur því sjálfskýrandi nafnið AmazingAppUITests.

Við keyrum hljóðfærapróf í Firebase Test Lab. Hluti 1: iOS verkefni

Farðu í Build Phases hlutann í stofnaða markmiðinu og athugaðu hvort markháðar séu til staðar - AmazingApp, í Compile Sources - AmazingAppUITests.swift.

Góð venja er að aðgreina mismunandi byggingarvalkosti í aðskilin kerfi. Við búum til kerfi fyrir UI prófin okkar [XCode -> Vara -> Scheme -> New Scheme] og gefum því sama nafn: AmazingAppUITests.

Smíði kerfisins sem búið er til verður að innihalda markmið aðalforritsins - AmazingApp og Target UI próf - AmazingAppUITests - sjá skjámynd

Við keyrum hljóðfærapróf í Firebase Test Lab. Hluti 1: iOS verkefni

Næst búum við til nýja smíðastillingu fyrir HÍ próf. Í XCode, smelltu á verkefnaskrána og farðu í upplýsingahlutann. Smelltu á „+“ og búðu til nýja stillingu, til dæmis XCtest. Við munum þurfa á þessu að halda í framtíðinni til að forðast að dansa við bumbuna þegar kemur að kóðaundirritun.

Við keyrum hljóðfærapróf í Firebase Test Lab. Hluti 1: iOS verkefni

Það eru að minnsta kosti þrjú markmið í verkefninu þínu: aðalforritið, einingapróf (enda eru þau til, ekki satt?) og Target UI prófin sem við bjuggum til.

Farðu í Target AmazingApp, Build Settings flipann, Code Signing Identity kafla. Fyrir XCtest stillingarnar, veldu iOS Developer. Í kóðaundirritunarstíll skaltu velja Handvirkt. Við höfum ekki búið til úthlutunarsnið ennþá, en við munum örugglega snúa aftur til hans aðeins síðar.

Fyrir Target AmazingAppUITests gerum við það sama, en í dálknum Product Bundle Identifier sláum við inn com.company.amazingappuitests.

2. Að setja upp verkefni í Apple Developer Program

Farðu á Apple Developer Program síðuna, farðu í Certificates, Identifiers & Profiles hlutann og síðan í App IDs dálkinn í auðkennishlutanum. Búðu til nýtt forritaauðkenni sem heitir AmazingAppUITests og bundleID com.company.amazingappuitests.

Við keyrum hljóðfærapróf í Firebase Test Lab. Hluti 1: iOS verkefni

Nú höfum við tækifæri til að undirrita prófin okkar með sérstöku vottorði, en... Aðferðin við að setja saman byggingu til prófunar felur í sér að setja saman forritið sjálft og setja saman prófunarhlauparann. Í samræmi við það stöndum við frammi fyrir því vandamáli að undirrita tvö pakkaauðkenni með einum úthlutunarsniði. Sem betur fer er til einföld og glæsileg lausn - Wildcard App ID. Við endurtökum ferlið við að búa til nýtt appauðkenni, en í stað þess að skýrt appauðkenni velurðu Wildcard App ID eins og á skjámyndinni.

Við keyrum hljóðfærapróf í Firebase Test Lab. Hluti 1: iOS verkefni

Á þessum tímapunkti erum við búin að vinna með developer.apple.com, en við munum ekki lágmarka vafragluggann. Förum til Fastlane skjalasíða og lestu um Match tólið frá kápu til kápu.

Athugull lesandi tók eftir því að til að nota þetta tól þurfum við einkageymsla og reikning með aðgang að bæði Apple Developer Program og Github. Við búum til (ef skyndilega er ekkert slíkt til) reikning fyrir forminu [netvarið], komdu með sterkt lykilorð, skráðu það á developer.apple.com og skipaðu það sem verkefnisstjóra. Næst gefum við reikningnum aðgang að github geymslu fyrirtækisins og búum til nýja einkageymslu með nafni eins og AmazingAppMatch.

3. Uppsetning Fastlane og samsvörunarforritsins

Opnaðu flugstöð, farðu í möppuna með verkefninu og frumstilltu fastlane eins og sýnt er í opinber handbók. Eftir að hafa slegið inn skipunina

$ fastlane init

Þú verður beðinn um að velja tiltækar notkunarstillingar. Veldu fjórða valkostinn - handvirk verkuppsetning.

Við keyrum hljóðfærapróf í Firebase Test Lab. Hluti 1: iOS verkefni

Verkefnið hefur nýja möppu fastlane, sem inniheldur tvær skrár - Appfile og Fastfile. Í hnotskurn geymum við þjónustugögn í Appfile og skrifum störf í Fastfile, sem kallast brautir í Fastlane hugtökum. Ég mæli með að lesa opinberu skjölin: tími, два.

Opnaðu Appfile í uppáhalds textaritlinum þínum og færðu það á eftirfarandi form:

app_identifier "com.company.amazingapp"       # Bundle ID
apple_dev_portal_id "[email protected]"  # Созданный инфраструктурный аккаунт, имеющий право на редактирование iOS проекта в Apple Developer Program.
team_id "LSDY3IFJAY9" # Your Developer Portal Team ID

Við snúum aftur til flugstöðvarinnar og samkvæmt opinberu handbókinni byrjum við að stilla samsvörun.

$ fastlane match init
$ fastlane match development

Næst skaltu slá inn umbeðin gögn - geymslu, reikning, lykilorð osfrv.

Mikilvægt: Þegar þú ræsir samsvörunarforritið fyrst verður þú beðinn um að slá inn lykilorð til að afkóða geymsluna. Það er mjög mikilvægt að vista þetta lykilorð; við munum þurfa það þegar CI miðlarinn er settur upp!

Ný skrá hefur birst í fastlane möppunni - Matchfile. Opnaðu það í uppáhalds textaritlinum þínum og sýndu það svona:

git_url("https://github.com/YourCompany/AmazingAppMatch") #Созданный приватный репозиторий для хранения сертификатов и профайлов.
type("development") # The default type, can be: appstore, adhoc, enterprise or development
app_identifier("com.company.amazingapp")
username("[email protected]") # Your Infrastructure account Apple Developer Portal username

Við fyllum það út nákvæmlega á þennan hátt ef við viljum nota samsvörun í framtíðinni til að undirrita smíði til birtingar í Crashlytics og/eða AppStore, það er að segja til að undirrita búntaauðkenni forritsins þíns.

En eins og við munum, bjuggum við til sérstakt Wildcard auðkenni til að undirrita prufusmíðina. Opnaðu því Fastfile og farðu inn á nýja braut:

lane :testing_build_for_firebase do

    match(
      type: "development",
      readonly: true,
      app_identifier: "com.company.*",
      git_branch: "uitests"  # создаем отдельный бранч для development сертификата для подписи тестовой сборки.
    )

end

Vistaðu og sláðu inn í flugstöðina

fastlane testing_build_for_firebase

og við sjáum hvernig fastlane bjó til nýtt vottorð og setti það í geymsluna. Frábært!

Opnaðu XCode. Nú höfum við nauðsynlegan úthlutunarsnið af forminu Match Development com.company.*, sem verður að tilgreina í hlutanum Úthlutunarsnið fyrir AmazingApp og AmazingAppUITests markmiðin.

Við keyrum hljóðfærapróf í Firebase Test Lab. Hluti 1: iOS verkefni

Það er eftir að bæta við akrein fyrir samsetningarpróf. Förum til geymsla viðbótaverkefni fyrir fastlane sem gerir það auðveldara að setja upp útflutning í Firebase Test Lab og fylgja leiðbeiningunum.

Við skulum afrita og líma frá upprunalega dæminu þannig að brautarprófun_build_for_firebase okkar endar með því að líta svona út:


 lane :testing_build_for_firebase do

    match(
      type: "development",
      readonly: true,
      app_identifier: "com.company.*",
      git_branch: "uitests"
    )

    scan(
      scheme: 'AmazingAppUITests',      # UI Test scheme
      clean: true,                        # Recommended: This would ensure the build would not include unnecessary files
      skip_detect_devices: true,          # Required
      build_for_testing: true,            # Required
      sdk: 'iphoneos',                    # Required
      should_zip_build_products: true,     # Must be true to set the correct format for Firebase Test Lab
    )

    firebase_test_lab_ios_xctest(
      gcp_project: 'AmazingAppUITests', # Your Google Cloud project name (к этой строчке вернемся позже)
      devices: [                          # Device(s) to run tests on
        {
          ios_model_id: 'iphonex',        # Device model ID, see gcloud command above
          ios_version_id: '12.0',         # iOS version ID, see gcloud command above
          locale: 'en_US',                # Optional: default to en_US if not set
          orientation: 'portrait'         # Optional: default to portrait if not set
        }
      ]
    )

  end

Fyrir heildarupplýsingar um uppsetningu fastlane í CircleCI mæli ég með að þú lesir opinberu skjölin tímum, два.

Ekki gleyma að bæta nýju verkefni við config.yml okkar:

build-for-firebase-test-lab:
   macos:
     xcode: "10.1.0"   
   working_directory: ~/project
   shell: /bin/bash --login -o pipefail
   steps:
     - checkout
     - attach_workspace:
         at: ~/project
     - run: sudo bundle install     # обновляем зависимости
     - run:
         name: install gcloud-sdk   # на mac машину необходимо установить gcloud
         command: |
           ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null ; brew install caskroom/cask/brew-cask 2> /dev/null
           brew cask install google-cloud-sdk
     - run:
         name: build app for testing
         command: fastlane testing_build_for_firebase  # запускаем lane сборки и отправки в firebase

4. Hvað með prófunarbekkinn okkar? Að setja upp Firebase.

Snúum okkur að því til hvers greinin var skrifuð.

Kannski notar appið þitt Firebase á ókeypis áætlun, eða kannski alls ekki. Það er nákvæmlega enginn grundvallarmunur, vegna þess að til að prófa þarfir getum við búið til sérstakt verkefni með árs ókeypis notkun (flott, ekki satt?)

Við skráum okkur inn á innviðareikninginn okkar (eða einhvern annan, það skiptir ekki máli) og förum á Firebase stjórnborðssíða. Búðu til nýtt verkefni sem heitir AmazingAppUITests.

Mikilvægt: Í fyrra skrefi í Fastfile in lane firebase_test_lab_ios_xctest ætti gcp_project færibreytan að passa við verkefnisheitið.

Við keyrum hljóðfærapróf í Firebase Test Lab. Hluti 1: iOS verkefni

Sjálfgefnar stillingar henta okkur nokkuð vel.

Ekki loka flipanum, skráðu þig undir sama reikning inn Gcloud - þetta er nauðsynleg ráðstöfun, þar sem samskipti við Firebase eiga sér stað með gcloud stjórnborðsviðmótinu.

Google gefur 300 dollara á ári, sem í samhengi við að framkvæma sjálfvirkar prófanir jafngildir árs ókeypis notkun á þjónustunni. Við sláum inn greiðsluupplýsingarnar þínar, bíðum eftir prófdebetinu upp á $1 og fáum $300 inn á reikninginn þinn. Að ári liðnu færist verkefnið sjálfkrafa í ókeypis gjaldskráráætlun, svo það er engin þörf á að hafa áhyggjur af hugsanlegu peningatapi.

Snúum okkur aftur á flipann með Firebase verkefninu og flytjum það yfir á Blaze gjaldskráráætlunina - nú eigum við eitthvað að borga ef farið er yfir mörkin.

Í gcloud viðmótinu, veldu Firebase verkefnið okkar, veldu „Directory“ aðalvalmyndaratriðið og bættu við Cloud Testing API og Cloud Tools Result API.

Við keyrum hljóðfærapróf í Firebase Test Lab. Hluti 1: iOS verkefni

Farðu síðan í valmyndaratriðið „IAM og stjórnun“ -> Þjónustureikningar -> Búa til þjónustureikning. Við veitum réttindi til að breyta verkefninu.

Við keyrum hljóðfærapróf í Firebase Test Lab. Hluti 1: iOS verkefni

Búðu til API lykil á JSON sniði

Við keyrum hljóðfærapróf í Firebase Test Lab. Hluti 1: iOS verkefni

Við munum þurfa niðurhalaða JSON aðeins síðar, en í bili munum við líta á uppsetningu Test Lab lokið.

5. Uppsetning CircleCI

Réttmæt spurning vaknar - hvað á að gera við lykilorð? Umhverfisbreytukerfi byggingarvélarinnar okkar mun hjálpa okkur að geyma lykilorð okkar og önnur viðkvæm gögn á öruggan hátt. Í CircleCI verkefnisstillingunum skaltu velja Umhverfisbreytur

Við keyrum hljóðfærapróf í Firebase Test Lab. Hluti 1: iOS verkefni
Og settu upp eftirfarandi breytur:

  • lykill: GOOGLE_APPLICATION_CREDENTIALS
    gildi: innihald json skráar gcloud þjónustureikningslykilsins
  • lykill: MATCH_PASSWORD
    gildi: lykilorð til að afkóða github geymsluna með vottorðum
  • lykill: FASTLANE_PASSWORD
    gildi: Apple Developer Portal innviði lykilorð reiknings

Við vistum breytingarnar, búum til PR og sendum það til liðsstjóra okkar til skoðunar.

Niðurstöður

Sem afleiðing af þessum einföldu meðhöndlun fengum við góðan, stöðugan vinnustand með getu til að taka upp myndband á skjá tækisins við prófun. Í prófunardæminu tilgreindi ég iPhone X tækjagerðina, en bærinn býður upp á mikið úrval úr blöndu af mismunandi gerðum og iOS útgáfum.

Seinni hlutinn verður helgaður skref-fyrir-skref uppsetningu Firebase Test Lab fyrir Android verkefni.

Heimild: www.habr.com

Bæta við athugasemd