Rydym yn cynnal profion offerynnol yn Firebase Test Lab. Rhan 1: prosiect iOS

Rydym yn cynnal profion offerynnol yn Firebase Test Lab. Rhan 1: prosiect iOS

Fy enw i yw Dmitry, rwy'n gweithio fel profwr yn y cwmni Gwyddoniaeth MEL. Yn eithaf diweddar fe wnes i orffen delio â nodwedd gymharol ddiweddar o Lab Prawf Firebase — sef, gyda phrofion offerynnol o gymwysiadau iOS gan ddefnyddio'r fframwaith profi brodorol XCUITest.

Cyn hyn, roeddwn eisoes wedi rhoi cynnig ar Firebase Test Lab ar gyfer Android ac yn hoff iawn o bopeth, felly penderfynais geisio rhoi seilwaith prawf iOS y prosiect ar yr un sail. Roedd yn rhaid i mi Google llawer ac ni weithiodd popeth allan y tro cyntaf, felly penderfynais ysgrifennu erthygl tiwtorial ar gyfer y rhai sy'n dal i gael trafferth.

Felly, os oes gennych chi brofion UI ar brosiect iOS, gallwch chi eisoes geisio eu rhedeg ar ddyfeisiau go iawn heddiw, a ddarperir yn garedig gan Good Corporation. I'r rhai sydd â diddordeb, croeso i gath.

Yn y stori, penderfynais adeiladu ar rywfaint o ddata cychwynnol - ystorfa breifat ar GitHub a system adeiladu CircleCI. Enw'r cais yw AmazingApp, bundleID yw com.company.amazingapp. Rwy'n cyflwyno'r data hwn ar unwaith i leihau'r dryswch dilynol.

Os gwnaethoch chi roi atebion penodol ar waith yn eich prosiect yn wahanol, rhannwch eich profiad yn y sylwadau.

1. Y profion eu hunain

Creu cangen prosiect newydd ar gyfer profion UI:

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

Gadewch i ni agor y prosiect yn XCode a chreu Targed newydd gyda phrofion UI [XCode -> Ffeil -> Newydd -> Targed -> Bwndel Profi iOS], gan roi'r enw hunanesboniadol AmazingAppUITests iddo.

Rydym yn cynnal profion offerynnol yn Firebase Test Lab. Rhan 1: prosiect iOS

Ewch i adran Adeiladu Cyfnodau o'r Targed a grëwyd a gwiriwch am bresenoldeb Dibyniaethau Targed - AmazingApp, yn Compile Sources - Amazing AppUITests.swift.

Arfer da yw gwahanu opsiynau adeiladu gwahanol yn Gynlluniau ar wahân. Rydym yn creu cynllun ar gyfer ein profion UI [XCode -> Cynnyrch -> Cynllun -> Cynllun Newydd] ac yn rhoi'r un enw iddo: AmazingAppUITests.

Rhaid i adeiladwaith y cynllun a grëwyd gynnwys Targed y prif gymhwysiad - profion AmazingApp a Target UI - AmazingAppUITests - gweler y sgrinlun

Rydym yn cynnal profion offerynnol yn Firebase Test Lab. Rhan 1: prosiect iOS

Nesaf, rydym yn creu cyfluniad adeilad newydd ar gyfer profion UI. Yn XCode, cliciwch ar ffeil y prosiect ac ewch i'r adran Gwybodaeth. Cliciwch ar “+” a chreu cyfluniad newydd, er enghraifft XCtest. Bydd angen hyn arnom yn y dyfodol er mwyn osgoi dawnsio gyda thambwrîn pan ddaw i arwyddo cod.

Rydym yn cynnal profion offerynnol yn Firebase Test Lab. Rhan 1: prosiect iOS

Mae o leiaf dri Tharged yn eich prosiect: y prif gais, profion uned (wedi'r cyfan, maen nhw'n bodoli, iawn?) a'r profion UI Targed a grëwyd gennym.

Ewch i Target AmazingApp, tab Build Settings, adran Hunaniaeth Arwyddo Cod. Ar gyfer y ffurfweddiad XCtest, dewiswch iOS Developer. Yn yr adran Arddull Arwyddo Cod, dewiswch Llawlyfr. Nid ydym wedi cynhyrchu proffil darparu eto, ond byddwn yn bendant yn dychwelyd ato ychydig yn ddiweddarach.

Ar gyfer Target AmazingAppUITests rydym yn gwneud yr un peth, ond yn y golofn Dynodydd Bwndel Cynnyrch rydym yn nodi com.company.amazingappuitests.

2. Sefydlu prosiect yn y Rhaglen Datblygwr Apple

Ewch i dudalen Rhaglen Datblygwr Apple, ewch i'r adran Tystysgrifau, Dynodwyr a Phroffiliau ac yna i golofn IDau App yr eitem Dynodwyr. Creu ID App newydd o'r enw AmazingAppUITests a bundleID com.company.amazingappuitests.

Rydym yn cynnal profion offerynnol yn Firebase Test Lab. Rhan 1: prosiect iOS

Nawr mae gennym ni'r cyfle i lofnodi ein profion gyda thystysgrif ar wahân, ond... Mae'r weithdrefn ar gyfer gosod adeilad at ei gilydd i'w brofi yn golygu cydosod y cais ei hun a chydosod rhedwr y prawf. Yn unol â hynny, rydym yn wynebu'r broblem o lofnodi dau ID bwndel gydag un proffil darparu. Yn ffodus, mae yna ateb syml a chain - Wildcard App ID. Rydyn ni'n ailadrodd y weithdrefn ar gyfer creu ID App newydd, ond yn lle ID App Explicit, dewiswch ID App Cerdyn Gwyllt fel yn y llun.

Rydym yn cynnal profion offerynnol yn Firebase Test Lab. Rhan 1: prosiect iOS

Ar y pwynt hwn, rydym wedi gorffen gweithio gyda developer.apple.com, ond ni fyddwn yn lleihau ffenestr y porwr. Gadewch i ni fynd i Safle dogfennaeth Fastlane a darllenwch am ddefnyddioldeb Match o glawr i glawr.

Sylwodd darllenydd sylwgar er mwyn defnyddio'r cyfleustodau hwn bydd angen ystorfa breifat a chyfrif gyda mynediad i Raglen Datblygwr Apple a Github. Rydym yn creu (os yn sydyn nad oes y fath beth) cyfrif o'r ffurflen [e-bost wedi'i warchod], creu cyfrinair cryf, ei gofrestru gyda developer.apple.com, a'i benodi fel gweinyddwr prosiect. Nesaf, rydyn ni'n rhoi mynediad i'r cyfrif i ystorfa github eich cwmni ac yn creu ystorfa breifat newydd gydag enw fel AmazingAppMatch.

3. Sefydlu Fastlane a'r cyfleustodau paru

Agor terfynell, ewch i'r ffolder gyda'r prosiect a chychwyn fastlane fel y nodir yn llawlyfr swyddogol. Ar ôl mynd i mewn i'r gorchymyn

$ fastlane init

Fe'ch anogir i ddewis y ffurfweddiadau defnydd sydd ar gael. Dewiswch y pedwerydd opsiwn - gosod prosiect â llaw.

Rydym yn cynnal profion offerynnol yn Firebase Test Lab. Rhan 1: prosiect iOS

Mae gan y prosiect fastlane cyfeiriadur newydd, sy'n cynnwys dwy ffeil - Appfile a Fastfile. Yn gryno, rydym yn storio data gwasanaeth yn Appfile, ac yn ysgrifennu swyddi yn Fastfile, a elwir lonydd yn nherminoleg Fastlane. Rwy'n argymell darllen y ddogfennaeth swyddogol: amser, два.

Agorwch yr Appfile yn eich hoff olygydd testun a dewch ag ef i'r ffurflen ganlynol:

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

Rydyn ni'n dychwelyd i'r derfynell ac yn ôl y llawlyfr swyddogol rydyn ni'n dechrau ffurfweddu'r gêm.

$ fastlane match init
$ fastlane match development

Nesaf, nodwch y data y gofynnwyd amdano - ystorfa, cyfrif, cyfrinair, ac ati.

Pwysig: Pan fyddwch chi'n lansio'r cyfleustodau paru am y tro cyntaf, gofynnir i chi nodi cyfrinair i ddadgryptio'r ystorfa. Mae'n bwysig iawn cadw'r cyfrinair hwn; bydd ei angen arnom wrth sefydlu'r gweinydd CI!

Mae ffeil newydd wedi ymddangos yn y ffolder fastlane - Matchfile. Agorwch ef yn eich hoff olygydd testun a'i arddangos fel hyn:

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

Rydyn ni'n ei lenwi'n union fel hyn os ydyn ni am ddefnyddio paru yn y dyfodol i lofnodi adeiladau i'w harddangos yn Crashlytics a / neu AppStore, hynny yw, i lofnodi ID bwndel eich cais.

Ond, fel y cofiwn, fe wnaethom greu ID Cerdyn Gwyllt arbennig i lofnodi'r prawf adeiladu. Felly, agorwch Fastfile a mynd i mewn i lôn newydd:

lane :testing_build_for_firebase do

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

end

Cadw a mynd i mewn i'r derfynell

fastlane testing_build_for_firebase

a gwelwn sut y creodd fastlane dystysgrif newydd a'i rhoi yn yr ystorfa. Gwych!

Agor XCode. Nawr mae gennym y proffil darparu angenrheidiol o'r ffurflen Match Development com.company.*, y mae'n rhaid ei nodi yn yr adran Proffil Darpariaeth ar gyfer targedau AmazingApp ac AmazingAppUITests.

Rydym yn cynnal profion offerynnol yn Firebase Test Lab. Rhan 1: prosiect iOS

Erys i ychwanegu lôn ar gyfer cydosod profion. Gadewch i ni fynd i ystorfa prosiect ategyn ar gyfer fastlane sy'n ei gwneud hi'n haws sefydlu allforio i Firebase Test Lab a dilyn y cyfarwyddiadau.

Gadewch i ni gopïo-gludo o'r enghraifft wreiddiol fel bod ein lôn profi_build_for_firebase yn edrych fel hyn yn y pen draw:


 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

I gael gwybodaeth gyflawn am sefydlu fastlane yn CircleCI, rwy'n argymell darllen y ddogfennaeth swyddogol unwaith, два.

Peidiwch ag anghofio ychwanegu tasg newydd at ein config.yml:

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. Beth am ein mainc prawf? Sefydlu Firebase.

Gadewch i ni ddeall ar gyfer beth ysgrifennwyd yr erthygl.

Efallai bod eich ap yn defnyddio Firebase ar gynllun rhad ac am ddim, neu efallai ddim o gwbl. Nid oes unrhyw wahaniaeth sylfaenol o gwbl, oherwydd ar gyfer anghenion profi gallwn greu prosiect ar wahân gyda blwyddyn o ddefnydd am ddim (cŵl, iawn?)

Rydyn ni'n mewngofnodi i'n cyfrif seilwaith (neu unrhyw un arall, does dim ots), ac yn mynd i Tudalen consol Firebase. Creu prosiect newydd o'r enw AmazingAppUITests.

Pwysig: Yn y cam blaenorol yn y Fastfile in lane firebase_test_lab_ios_xctest dylai'r paramedr gcp_project gyfateb i enw'r prosiect.

Rydym yn cynnal profion offerynnol yn Firebase Test Lab. Rhan 1: prosiect iOS

Mae'r gosodiadau diofyn yn addas i ni yn eithaf da.

Peidiwch â chau'r tab, cofrestrwch o dan yr un cyfrif yn Gcloud - mae hwn yn fesur angenrheidiol, gan fod cyfathrebu â Firebase yn digwydd gan ddefnyddio'r rhyngwyneb consol cloud.

Mae Google yn rhoi $300 am flwyddyn, sydd yng nghyd-destun cynnal profion awtomatig yn cyfateb i flwyddyn o ddefnydd am ddim o'r gwasanaeth. Rydyn ni'n nodi'ch gwybodaeth talu, yn aros am y debyd prawf o $1 ac yn derbyn $300 i'ch cyfrif. Ar ôl blwyddyn, bydd y prosiect yn cael ei drosglwyddo'n awtomatig i gynllun tariff rhad ac am ddim, felly nid oes angen poeni am y posibilrwydd o golli arian.

Gadewch i ni ddychwelyd i'r tab gyda'r prosiect Firebase a'i drosglwyddo i gynllun tariff Blaze - nawr mae gennym rywbeth i'w dalu os eir y tu hwnt i'r terfyn.

Yn y rhyngwyneb gcloud, dewiswch ein prosiect Firebase, dewiswch yr eitem brif ddewislen “Directory” ac ychwanegwch yr API Profi Cwmwl ac API Canlyniad Cloud Tools.

Rydym yn cynnal profion offerynnol yn Firebase Test Lab. Rhan 1: prosiect iOS

Yna ewch i'r eitem ddewislen “IAM a gweinyddu” -> Cyfrifon gwasanaeth -> Creu cyfrif gwasanaeth. Rydym yn rhoi hawliau i olygu'r prosiect.

Rydym yn cynnal profion offerynnol yn Firebase Test Lab. Rhan 1: prosiect iOS

Creu allwedd API mewn fformat JSON

Rydym yn cynnal profion offerynnol yn Firebase Test Lab. Rhan 1: prosiect iOS

Bydd angen y JSON wedi'i lawrlwytho ychydig yn ddiweddarach, ond am y tro byddwn yn ystyried y gosodiad Test Lab wedi'i gwblhau.

5. Sefydlu CircleCI

Mae cwestiwn rhesymol yn codi - beth i'w wneud gyda chyfrineiriau? Bydd mecanwaith newidiol amgylchedd ein peiriant adeiladu yn ein helpu i storio ein cyfrineiriau a data sensitif arall yn ddiogel. Yn y gosodiadau prosiect CircleCI, dewiswch Newidynnau Amgylcheddol

Rydym yn cynnal profion offerynnol yn Firebase Test Lab. Rhan 1: prosiect iOS
A gosodwch y newidynnau canlynol:

  • allwedd: GOOGLE_APPLICATION_CREDENTIALS
    gwerth: cynnwys ffeil json allwedd cyfrif gwasanaeth gcloud
  • allwedd: MATCH_PASSWORD
    gwerth: cyfrinair ar gyfer dadgryptio'r ystorfa github gyda thystysgrifau
  • allwedd: FASTLANE_PASSWORD
    gwerth: cyfrinair cyfrif seilwaith Porth Datblygwr Apple

Rydym yn arbed y newidiadau, yn creu cysylltiadau cyhoeddus ac yn ei anfon at ein harweinydd tîm i'w adolygu.

Canlyniadau

O ganlyniad i'r triniaethau syml hyn, cawsom stondin weithio dda, sefydlog gyda'r gallu i recordio fideo ar sgrin y ddyfais ar adeg y profi. Yn yr enghraifft brawf, nodais fodel dyfais iPhone X, ond mae'r fferm yn darparu detholiad cyfoethog o gyfuniad o wahanol fodelau a fersiynau iOS.

Bydd yr ail ran yn cael ei neilltuo i osod Firebase Test Lab gam wrth gam ar gyfer prosiect Android.

Ffynhonnell: hab.com

Ychwanegu sylw