Bidh sinn a’ ruith deuchainnean ionnsramaid ann an Firebase Test Lab. Pàirt 1: iOS phròiseact

Bidh sinn a’ ruith deuchainnean ionnsramaid ann an Firebase Test Lab. Pàirt 1: iOS phròiseact

Is e m ’ainm Dmitry, tha mi ag obair mar neach-dearbhaidh sa chompanaidh Saidheans MEL. O chionn ghoirid chuir mi crìoch air a bhith a’ dèiligeadh ri feart an ìre mhath o chionn ghoirid bho Firebase deuchainn lab - is e sin, le deuchainn ionnsramaid air tagraidhean iOS a’ cleachdadh am frèam deuchainn dùthchasach XCUITest.

Ron àm seo, bha mi air Firebase Test Lab fheuchainn airson Android mu thràth agus chòrd a h-uile càil rium gu mòr, agus mar sin chuir mi romham feuchainn ri bun-structar deuchainn iOS a’ phròiseict a chuir air an aon stèidh. Bha agam ri Google tòrr agus cha do dh’ obraich a h-uile càil a-mach a’ chiad uair, agus mar sin chuir mi romham artaigil oideachaidh a sgrìobhadh dhaibhsan a tha fhathast a’ strì.

Mar sin, ma tha deuchainnean UI agad air pròiseact iOS, faodaidh tu feuchainn mu thràth gan ruith air innealan fìor an-diugh, air a sholarachadh gu coibhneil le Good Corporation. Dhaibhsan aig a bheil ùidh, fàilte gu cat.

Anns an sgeulachd, chuir mi romham togail air beagan dàta tùsail - stòr prìobhaideach air GitHub agus siostam togail CircleCI. Is e ainm an tagraidh AmazingApp, is e bundleID com.company.amazingapp. Bidh mi a’ taisbeanadh an dàta seo sa bhad gus troimh-chèile às deidh sin a lughdachadh.

Ma chuir thu an gnìomh fuasglaidhean sònraichte sa phròiseact agad ann an dòigh eadar-dhealaichte, roinn an eòlas agad anns na beachdan.

1. Na deuchainnean fèin

Cruthaich meur pròiseict ùr airson deuchainnean UI:

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

Fosglaidh sinn am pròiseact ann an XCode agus cruthaich sinn Targaid ùr le deuchainnean UI [XCode -> File -> Ùr -> Targaid -> iOS Testing Bundle], a’ toirt dha an t-ainm fèin-mhìneachaidh AmazingAppUITests.

Bidh sinn a’ ruith deuchainnean ionnsramaid ann an Firebase Test Lab. Pàirt 1: iOS phròiseact

Rach don roinn Togail Ìrean den Targaid a chaidh a chruthachadh agus thoir sùil airson làthaireachd eisimeileachd Targaid - AmazingApp, ann an Stòran Co-chruinneachaidh - Amazing AppUITests.swift.

Tha e na chleachdadh math diofar roghainnean togail a sgaradh ann an Sgeamaichean fa leth. Bidh sinn a’ cruthachadh sgeama airson na deuchainnean UI againn [XCode -> Bathar -> Sgeama -> Sgeama Ùr] agus a’ toirt an aon ainm dha: AmazingAppUITests.

Feumaidh togail den sgeama cruthaichte a bhith a’ toirt a-steach Targaid a’ phrìomh thagradh - deuchainnean AmazingApp agus Target UI - AmazingAppUITests - faic dealbh-sgrìn

Bidh sinn a’ ruith deuchainnean ionnsramaid ann an Firebase Test Lab. Pàirt 1: iOS phròiseact

An uairsin, cruthaichidh sinn rèiteachadh togail ùr airson deuchainnean UI. Ann an XCode, cliog air faidhle a ’phròiseict agus rachaibh chun roinn Info. Cliog air “+” agus cruthaich rèiteachadh ùr, mar eisimpleir XCtest. Bidh feum againn air seo san àm ri teachd gus nach bi sinn a’ dannsadh le tambourine nuair a thig e gu soidhnigeadh còd.

Bidh sinn a’ ruith deuchainnean ionnsramaid ann an Firebase Test Lab. Pàirt 1: iOS phròiseact

Tha co-dhiù trì targaidean sa phròiseact agad: am prìomh thagradh, deuchainnean aonaid (às deidh a h-uile càil, tha iad ann, ceart?) Agus na deuchainnean Targaid UI a chruthaich sinn.

Rach gu Target AmazingApp, tab Tog Settings, roinn Dearbh-aithne Soidhnidh Còd. Airson an rèiteachadh XCtest, tagh iOS Developer. Anns an roinn Stoidhle Soidhnidh Còd, tagh Stiùireadh. Chan eil sinn air ìomhaigh solarachaidh a chruthachadh fhathast, ach gu cinnteach tillidh sinn thuige beagan nas fhaide air adhart.

Airson Target AmazingAppUITests bidh sinn a’ dèanamh an aon rud, ach anns a’ cholbh Aithneadair Bundle Bathar bidh sinn a’ dol a-steach com.company.amazingappuitests.

2. A 'stèidheachadh pròiseact ann am Prògram Leasachaidh Apple

Rach gu duilleag Prògram Leasachaidh Apple, rach gu roinn Teisteanasan, Aithneadairean & Pròifilean agus an uairsin gu colbh IDan App an nì Aithnearan. Cruthaich ID App ùr ris an canar AmazingAppUITests agus bundleID com.company.amazingappuitests.

Bidh sinn a’ ruith deuchainnean ionnsramaid ann an Firebase Test Lab. Pàirt 1: iOS phròiseact

A-nis tha cothrom againn na deuchainnean againn a shoidhnigeadh le teisteanas air leth, ach... Tha an dòigh-obrach airson togalach a chuir ri chèile airson deuchainn a’ toirt a-steach a bhith a’ cur ri chèile an tagradh fhèin agus a’ cur ri chèile an ruitheadair deuchainn. Mar sin, tha an duilgheadas againn a bhith a’ soidhnigeadh dà ID pasgan le aon ìomhaigh solarachaidh. Gu fortanach, tha fuasgladh sìmplidh agus eireachdail ann - Wildcard App ID. Bidh sinn ag ath-aithris a’ mhodh-obrach airson ID App ùr a chruthachadh, ach an àite ID App Explicit, tagh Wildcard App ID mar a tha san dealbh.

Bidh sinn a’ ruith deuchainnean ionnsramaid ann an Firebase Test Lab. Pàirt 1: iOS phròiseact

Aig an ìre seo, tha sinn deiseil ag obair le developer.apple.com, ach cha lughdaich sinn uinneag a’ bhrobhsair. Rachamaid gu Làrach-lìn sgrìobhainnean Fastlane agus leugh mun ghoireas Match bho chòmhdach gu còmhdach.

Mhothaich leughadair furachail gum feum sinn stòr prìobhaideach agus cunntas le cothrom air an dà chuid Prògram Leasachaidh Apple agus Github gus an goireas seo a chleachdadh. Bidh sinn a’ cruthachadh (mura h-eil an leithid ann gu h-obann) cunntas air an fhoirm [post-d fo dhìon], cruthaich facal-faire làidir, clàraich e le developer.apple.com, agus cuir an dreuchd e mar rianadair pròiseict. An uairsin, bheir sinn cothrom don chunntas gu stòr github a ’chompanaidh agad agus cruthaichidh sinn stòr prìobhaideach ùr le ainm mar AmazingAppMatch.

3. A 'stèidheachadh Fastlane agus an utility matches

Fosgail inneal-crìochnachaidh, rachaibh chun phasgan leis a ’phròiseact agus tòisich fastlane mar a tha air a chomharrachadh ann leabhar-làimhe oifigeil. An dèidh a dhol a-steach don àithne

$ fastlane init

Thèid iarraidh ort na rèiteachaidhean cleachdaidh a tha rim faighinn a thaghadh. Tagh an ceathramh roghainn - suidheachadh pròiseict làimhe.

Bidh sinn a’ ruith deuchainnean ionnsramaid ann an Firebase Test Lab. Pàirt 1: iOS phròiseact

Tha fastlane eòlaire ùr aig a’ phròiseact, anns a bheil dà fhaidhle - Appfile agus Fastfile. Ann an ùine ghoirid, bidh sinn a’ stòradh dàta seirbheis ann an Appfile, agus a’ sgrìobhadh obraichean ann am Fastfile, ris an canar lannan ann am briathrachas Fastlane. Tha mi a’ moladh na sgrìobhainnean oifigeil a leughadh: amannan, два.

Fosgail an Appfile anns an deasaiche teacsa as fheàrr leat agus thoir chun fhoirm a leanas e:

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

Bidh sinn a’ tilleadh chun cheann-uidhe agus a rèir an leabhar-làimhe oifigeil tòisichidh sinn a’ rèiteachadh maids.

$ fastlane match init
$ fastlane match development

An uairsin cuir a-steach an dàta a chaidh iarraidh - stòr, cunntas, facal-faire, msaa.

Tha e cudromach gu: Nuair a chuireas tu an goireas maids air bhog an toiseach, thèid iarraidh ort facal-faire a chuir a-steach gus an stòr a dhì-chrioptachadh. Tha e glè chudromach am facal-faire seo a shàbhaladh; bidh feum againn air nuair a bhios sinn a’ stèidheachadh am frithealaiche CI!

Tha faidhle ùr air nochdadh sa phasgan fastlane - Matchfile. Fosgail e anns an deasaiche teacsa as fheàrr leat agus seall e mar seo:

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

Bidh sinn ga lìonadh dìreach mar seo ma tha sinn airson maids a chleachdadh san àm ri teachd gus soidhnigeadh a dhèanamh air togalaichean airson a phostadh ann an Crashlytics agus / no AppStore, is e sin, gus ainm a chuir ri ID pasgan an tagraidh agad.

Ach, mar a tha cuimhne againn, chruthaich sinn ID cairt-fiadhaich sònraichte gus ainm a chuir ris an deuchainn togail. Mar sin, fosgail Fastfile agus cuir a-steach sreath ùr:

lane :testing_build_for_firebase do

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

end

Sàbhail agus cuir a-steach don terminal

fastlane testing_build_for_firebase

agus chì sinn mar a chruthaich fastlane teisteanas ùr agus a chuir e san stòr e. Sgoinneil!

Fosgail XCode. A-nis tha an ìomhaigh solarachaidh riatanach againn den fhoirm Match Development com.company.*, a dh’ fheumar a shònrachadh anns an roinn pròifil Solarachaidh airson targaidean AmazingApp agus AmazingAppUITests.

Bidh sinn a’ ruith deuchainnean ionnsramaid ann an Firebase Test Lab. Pàirt 1: iOS phròiseact

Tha e fhathast ri sreath a chuir ris airson deuchainnean a cho-chruinneachadh. Rachamaid gu tasgaidh pròiseact plugan airson fastlane a nì e nas fhasa às-mhalairt a stèidheachadh gu Firebase Test Lab agus lean an stiùireadh.

Dèanamaid leth-bhreac den eisimpleir thùsail gus am bi an t-sreath againn test_build_for_firebase a’ coimhead mar seo:


 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

Airson fiosrachadh iomlan mu bhith a’ stèidheachadh fastlane ann an CircleCI, tha mi a’ moladh na sgrìobhainnean oifigeil a leughadh amannan, два.

Na dìochuimhnich gnìomh ùr a chur ris an config.yml againn:

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. Dè mu dheidhinn ar being deuchainn? Firebase a stèidheachadh.

Leig leinn faighinn sìos gu carson a chaidh an artaigil a sgrìobhadh.

Is dòcha gu bheil an aplacaid agad a’ cleachdadh Firebase air plana an-asgaidh, no is dòcha nach eil idir. Chan eil eadar-dhealachadh bunaiteach ann, oir airson feumalachdan deuchainn is urrainn dhuinn pròiseact air leth a chruthachadh le bliadhna de chleachdadh an-asgaidh (fionnar, ceart?)

Bidh sinn a’ logadh a-steach don chunntas bun-structair againn (no gin eile, chan eil e gu diofar), agus a’ dol gu Duilleag airson consoles firebase. Cruthaich pròiseact ùr leis an t-ainm AmazingAppUITests.

Tha e cudromach gu: Anns a’ cheum roimhe seo san Fastfile in lane firebase_test_lab_ios_xctest bu chòir don pharameter gcp_project a bhith co-ionnan ri ainm a’ phròiseict.

Bidh sinn a’ ruith deuchainnean ionnsramaid ann an Firebase Test Lab. Pàirt 1: iOS phròiseact

Tha na roghainnean bunaiteach a’ freagairt oirnn gu math.

Na dùin an taba, clàraich fon aon chunntas a-steach Gcloud - tha seo na cheum riatanach, leis gu bheil conaltradh le Firebase a’ tachairt a ’cleachdadh an eadar-aghaidh consol cloud.

Tha Google a’ toirt seachad $300 airson bliadhna, a tha ann an co-theacs a bhith a’ dèanamh autotests co-ionann ri bliadhna de chleachdadh an-asgaidh air an t-seirbheis. Cuiridh sinn a-steach am fiosrachadh pàighidh agad, feithidh sinn ris an fhiach deuchainn $1 agus gheibh sinn $300 don chunntas agad. Às deidh bliadhna, thèid am pròiseact a ghluasad gu fèin-ghluasadach gu plana taraifean an-asgaidh, agus mar sin cha leig thu leas a bhith draghail mu chall airgid a dh’ fhaodadh a bhith ann.

Tillidh sinn chun taba leis a’ phròiseact Firebase agus gluaisidh sinn e gu plana tar-chuir Blaze - a-nis tha rudeigin againn ri phàigheadh ​​​​ma thèid sinn thairis air a’ chrìoch.

Anns an eadar-aghaidh cloud, tagh ar pròiseact Firebase, tagh am prìomh rud clàr “Eòlaire” agus cuir ris an Cloud Testing API agus Cloud Tools Result API.

Bidh sinn a’ ruith deuchainnean ionnsramaid ann an Firebase Test Lab. Pàirt 1: iOS phròiseact

An uairsin rachaibh chun rud clàr “IAM agus rianachd” -> Cunntasan seirbheis -> Cruthaich cunntas seirbheis. Bheir sinn seachad còraichean airson am pròiseact a dheasachadh.

Bidh sinn a’ ruith deuchainnean ionnsramaid ann an Firebase Test Lab. Pàirt 1: iOS phròiseact

Cruthaich iuchair API ann an cruth JSON

Bidh sinn a’ ruith deuchainnean ionnsramaid ann an Firebase Test Lab. Pàirt 1: iOS phròiseact

Bidh feum againn air an JSON a chaidh a luchdachadh sìos beagan nas fhaide air adhart, ach airson a-nis beachdaichidh sinn air suidheachadh Test Lab coileanta.

5. A 'suidheachadh CircleCI

Tha ceist reusanta ag èirigh - dè a nì thu le faclan-faire? Cuidichidh uidheamachd caochlaideach àrainneachd an inneal togail againn sinn gus ar faclan-faire agus dàta mothachail eile a stòradh gu tèarainte. Ann an roghainnean pròiseact CircleCI, tagh Caochlaidhean Àrainneachd

Bidh sinn a’ ruith deuchainnean ionnsramaid ann an Firebase Test Lab. Pàirt 1: iOS phròiseact
Agus stèidhich na caochladairean a leanas:

  • iuchair: GOOGLE_APPLICATION_CREDENTIALS
    luach: susbaint an fhaidhle json de iuchair cunntais seirbheis cloud
  • iuchair: MATCH_PASSWORD
    luach: facal-faire airson an stòras github a dhì-chrioptachadh le teisteanasan
  • iuchair: FASTLANE_PASSWORD
    luach: facal-faire cunntas bun-structair Portal leasaiche Apple

Sàbhailidh sinn na h-atharrachaidhean, cruthaichidh sinn PR agus cuiridh sinn e chun stiùiriche sgioba againn airson ath-sgrùdadh.

Builean

Mar thoradh air na dòighean-làimhseachaidh sìmplidh sin, fhuair sinn seasamh obrach math, seasmhach le comas bhidio a chlàradh air scrion an inneil aig àm an deuchainn. Anns an eisimpleir deuchainn, shònraich mi modal inneal iPhone X, ach tha an tuathanas a ’toirt seachad taghadh beairteach bho mheasgachadh de dhiofar mhodalan agus dreachan iOS.

Bidh an dàrna pàirt coisrigte do shuidheachadh ceum air cheum de Firebase Test Lab airson pròiseact Android.

Source: www.habr.com

Cuir beachd ann