Waxaan ku wadnaa tijaabooyinka qalabka gudaha Shaybaarka Imtixaanka Firebase. Qeybta 1: mashruuca iOS

Waxaan ku wadnaa tijaabooyinka qalabka gudaha Shaybaarka Imtixaanka Firebase. Qeybta 1: mashruuca iOS

Magacaygu waa Dmitry, waxaan uga shaqeeyaa sidii tijaabiye shirkadda Sayniska MEL. Dhowaan waxaan dhameeyay wax ka qabashada sifo dhow oo ka timid Shaybaarka Imtixaanka Firebase - oo ah, tijaabinta qalabka ee codsiyada iOS iyadoo la adeegsanayo qaabka tijaabada asalka ah XCUITest.

Taas ka hor, waxaan mar hore isku dayay shaybaarka Imtixaanka Firebase ee Android oo runtii jeclaa wax walba, sidaas darteed waxaan go'aansaday inaan isku dayo inaan ku dhejiyo kaabayaasha imtixaanka iOS ee mashruuca isla jaantuska. Waxaan ku khasbanaaday in aan Google-ka wax badan galo, wax walbana ma shaqeynin markii ugu horreysay, sidaas darteed waxaan go'aansaday in aan u qoro maqaal waxbarasho oo loogu talagalay kuwa weli halganka ku jira.

Markaa, haddii aad haysato tijaabooyinka UI ee mashruuca iOS, waxaad mar hore isku dayi kartaa inaad ku socodsiiso aaladaha dhabta ah maanta, oo ay si naxariis leh u bixiso Shirkadda Wanaagsan. Kuwa xiisaynaya, ku soo dhawoow bisad.

Sheekada dhexdeeda, waxaan go'aansaday inaan ku dhiso qaar ka mid ah xogta bilowga ah - kayd gaar ah oo ku yaal GitHub iyo nidaamka dhismaha CircleCI. Magaca codsigu waa AmazingApp, bundleID waa com.company.amazingapp. Waxaan soo bandhigay xogtan isla markiiba si aan u yareeyo jahwareerka xiga.

Haddii aad u hirgelisay xalal gaar ah mashruucaaga si ka duwan, la wadaag khibradaada faallooyinka.

1. Imtixaanada laftooda

U samee laan mashruuc oo cusub imtixaanada UI:

$ git checkout develop
$ git pull
$ git checkout -b β€œfeature/add-ui-tests”

Aan ku furno mashruuca XCode oo aan abuurno Bartilmaameed cusub oo leh imtixaannada UI [XCode -> Faylka -> Cusub -> Bartilmaameedka -> Xidhmada Tijaabada IOS], anagoo siinaya magaca is-sharaxaadda AmazingAppUITests.

Waxaan ku wadnaa tijaabooyinka qalabka gudaha Shaybaarka Imtixaanka Firebase. Qeybta 1: mashruuca iOS

Tag qaybta Dhisidda Bartilmaameedka la sameeyay oo hubi joogitaanka Ku-tiirsanaanta Bartilmaameedka - AmazingApp, oo ku jira Ilaha Isku-dhafka ah - AmazingAppUITests.swift.

Dhaqanka wanaagsan ayaa ah in la kala saaro xulashooyinka kala duwan ee dhismaha oo loo beddelo Qorsheyaal gaar ah. Waxaan u abuurnaa nidaam imtixaanadayada UI [XCode -> Product -> Scheme -> Qorshe Cusub] waxaana siinaa isla magac: AmazingAppUITests.

Dhismaha nidaamka la abuuray waa in lagu daraa Bartilmaameedka codsiga ugu weyn - AmazingApp iyo Imtixaannada Target UI - AmazingAppUITests - eeg shaashadda

Waxaan ku wadnaa tijaabooyinka qalabka gudaha Shaybaarka Imtixaanka Firebase. Qeybta 1: mashruuca iOS

Marka xigta, waxaan u abuurnaa qaab dhisme cusub oo loogu talagalay imtixaannada UI. Gudaha XCode, dhagsii faylka mashruuca oo aad qaybta macluumaadka. Guji "+" oo samee qaabayn cusub, tusaale ahaan XCtest. Waxaan u baahan doonaa tan mustaqbalka si aan uga fogaano qoob ka ciyaarka dafka marka ay timaado saxiixa koodka.

Waxaan ku wadnaa tijaabooyinka qalabka gudaha Shaybaarka Imtixaanka Firebase. Qeybta 1: mashruuca iOS

Waxaa jira ugu yaraan saddex bartilmaameed oo mashruucaaga ah: codsiga ugu muhiimsan, imtixaanada cutubka (ka dib oo dhan, way jiraan, sax?) iyo imtixaanada Target UI ee aan abuurnay.

Tag Target AmazingApp, Dhis Settings tab, Qaybta Aqoonsiga Saxeexa Koodhka. Qaabeynta XCtest, dooro IOS Developer. Qaybta Saxiixa Xeerka, dooro Buugga. Weli maanu samayn profile bixin, laakiin hubaal waanu ku soo noqon doonaa wax yar ka dib.

Bartilmaameedka AmazingAppUITests waxaanu samaynaa si la mid ah, laakiin tiirka Aqoonsiga Xidhmada Alaabta waxaanu galnaa com.company.amazingappuitests.

2. Dejinta mashruuc ee barnaamijka horumarinta Apple

Tag bogga Barnaamijka Horumariyaha Apple, aad qaybta Shahaadooyinka, Aqoonsayaasha & Profiles ka dibna u gudub tiirarka Aqoonsiga App ee shayga Aqoonsiga. Abuur Aqoonsi App cusub oo la yiraahdo AmazingAppUITests iyo bundleID com.company.amazingappuitests.

Waxaan ku wadnaa tijaabooyinka qalabka gudaha Shaybaarka Imtixaanka Firebase. Qeybta 1: mashruuca iOS

Hadda waxaan fursad u haysanaa inaan ku saxiixno imtixaannadayada shahaado gooni ah, laakiin... Habka isku-dubbaridka dhismaha imtixaanku wuxuu ku lug leeyahay isku-dubbaridka arjiga laftiisa iyo isku-dubbaridka tijaabiyaha. Sidaa awgeed, waxa ina soo food saartay mushkilad ah saxeexa laba xidhmo oo aqoonsi ah oo leh hal muuqaal bixineed. Nasiib wanaag, waxaa jira xal fudud oo qurux badan - Wildcard App ID. Waxaan ku celineynaa nidaamka abuurista Aqoonsi App cusub, laakiin halkii aad ka heli lahayd Aqoonsiga App-ka cad, dooro Aqoonsiga App-ka Wildcard sida sawirka shaashadda.

Waxaan ku wadnaa tijaabooyinka qalabka gudaha Shaybaarka Imtixaanka Firebase. Qeybta 1: mashruuca iOS

Halkaa marka ay marayso, waxa aanu dhamaynay la shaqaynta developer.apple.com, laakiin ma yarayn doono daaqada browserka. Aan aadno Goobta dukumeenti ee Fastlane oo akhri wax ku saabsan utility Match dabool ilaa dabool.

Akhristaha fiiro gaar ah leh ayaa ogaaday in si aan u isticmaalno utility this aan u baahan doono kayd gaar ah iyo akoon gelitaanka labada Barnaamijka Horumarinta Apple iyo Github. Waxaan abuurnaa (haddii si lama filaan ah aysan jirin wax noocaas ah) xisaabta foomka [emailka waa la ilaaliyay], la imow furaha sirta ah ee adag, ku diiwaan geli developer.apple.com, oo u magacaw maamule mashruuc. Marka xigta, waxaan siinaa akoontada marin u helka kaydka github ee shirkaddaada oo aanu abuurno kayd gaar ah oo cusub oo leh magac sida AmazingAppMatch.

3. Dejinta Fastlane iyo utility ciyaarta

Fur terminal, gal galka mashruuca oo bilow fastlane sida ku cad buug-gacmeedka rasmiga ah. Ka dib markii la galo amarka

$ fastlane init

Waxaa laguu sheegi doonaa inaad doorato habaynta isticmaalka ee diyaarsan. Dooro doorashada afraad - habaynta mashruuca gacanta.

Waxaan ku wadnaa tijaabooyinka qalabka gudaha Shaybaarka Imtixaanka Firebase. Qeybta 1: mashruuca iOS

Mashruucu wuxuu leeyahay hage cusub oo Fastlane, kaas oo ka kooban laba fayl - Appfile iyo Fastfile. Si kooban, waxaanu ku kaydinaynaa xogta adeega gudaha Appfile, waxaanu ku qornaa shaqooyinka Fastfile, oo loo yaqaan laynka ereybixinta Fastlane. Waxaan ku talinayaa inaad akhrido dukumentiyada rasmiga ah: jeer, Π΄Π²Π°.

Ku fur Appfile-ka tafatiraha qoraalka aad jeceshahay oo keen foomkan:

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

Waxaan ku soo laabaneynaa terminaalka oo sida ku cad buug-gacmeedka rasmiga ah waxaan bilaabeynaa inaan habeyno ciyaarta.

$ fastlane match init
$ fastlane match development

Marka xigta, geli xogta la codsaday - kaydka, akoontiga, furaha sirta ah, iwm.

Waxaa muhiim ah in: Marka ugu horeysa ee aad bilowdo utility ciyaarta, waxaa lagu weydiin doonaa inaad geliso furaha sirta ah si aad u dejiso kaydka. Aad bay muhiim u tahay in la keydiyo erayga sirta ah; waxaan u baahan doonaa marka la dejinayo server-ka CI!

Fayl cusub ayaa ka soo muuqday galka fastlane - Matchfile. Ku fur tifaftiraha qoraalka aad jeceshahay oo u muuji sidatan:

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

Waxaan u buuxineynaa si sax ah haddii aan rabno inaan isticmaalno ciyaarta mustaqbalka si aan u saxiixno dhismayaal lagu soo bandhigayo Crashlytics iyo/ama AppStore, taas oo ah, si aan u saxiixno aqoonsiga xirmada codsigaaga.

Laakiin, sida aan xasuusannahay, waxaan abuurnay aqoonsi Wildcard gaar ah si aan u saxiixno dhismaha tijaabada. Sidaa darteed, fur Fastfile oo geli haad cusub:

lane :testing_build_for_firebase do

    match(
      type: "development",
      readonly: true,
      app_identifier: "com.company.*",
      git_branch: "uitests"  # создаСм ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Ρ€Π°Π½Ρ‡ для development сСртификата для подписи тСстовой сборки.
    )

end

Kaydi oo geli terminalka

fastlane testing_build_for_firebase

waxaanan aragnaa sida fastlane u abuurtay shahaado cusub oo ku rid bakhaarka. Wayn!

Fur XCode Hadda waxaan haynaa astaanta bixinta lagama maarmaanka ah ee foomka Match Development com.com.*, kaas oo ay tahay in lagu qeexo qaybta profile Bixinta ee bartilmaameedyada AmazingApp iyo AmazingAppUITests.

Waxaan ku wadnaa tijaabooyinka qalabka gudaha Shaybaarka Imtixaanka Firebase. Qeybta 1: mashruuca iOS

Way hadhay in lagu daro haad lagu ururiyo imtixaanada. Aan aadno kayd mashruuc plugin ah oo loogu talagalay fastlane kaas oo sahlaya in la dejiyo dhoofinta Firebase Test Lab oo raac tilmaamaha.

Aynu koobi ka dhigno tusaalaha asalka ah si haadkayaga test_build_for_firebase uu u dhamaado sidan:


 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

Si aad u hesho macluumaad dhammaystiran oo ku saabsan samaynta fastlane gudaha CircleCI, waxaan ku talinayaa inaad akhrido dukumentiyada rasmiga ah mar, Π΄Π²Π°.

Ha iloobin inaad ku darto hawl cusub config.yml our:

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. Ka waran kursigayaga imtixaanka? Dejinta Firebase.

Aan hoos ugu dhaadhacno waxa maqaalku u qornaa.

Waxaa laga yaabaa in app-kaagu uu isticmaalo Firebase qorshe bilaash ah, ama laga yaabee inuusanbaba. Ma jiro gabi ahaanba farqi aasaasi ah, sababtoo ah baahida tijaabinta waxaan abuuri karnaa mashruuc gaar ah oo leh sanad isticmaal bilaash ah (qabow, sax?)

Waxaan galnaa koontada kaabayaasha (ama mid kale, macno ma leh), oo aad Firebase console bogga. Abuur mashruuc cusub oo lagu magacaabo AmazingAppUITests.

Waxaa muhiim ah in: Talaabadii hore ee Fastfile ee haadka firebase_test_lab_ios_xctest cabbirka gcp_project waa inuu waafaqaa magaca mashruuca.

Waxaan ku wadnaa tijaabooyinka qalabka gudaha Shaybaarka Imtixaanka Firebase. Qeybta 1: mashruuca iOS

Dejinta caadiga ah aad ayey noogu habboon tahay.

Ha xidhin tab, iska diiwaan geli isla xisaabta ku jirta Gcloud - tani waa cabbir lagama maarmaan ah, maadaama xidhiidhka Firebase uu dhaco iyadoo la adeegsanayo is-dhexgalka gcloud console.

Google waxa uu bixiyaa $300 sanadkii, taas oo marka la eego samaynta tijaabinta iswada ay u dhiganto sanadka isticmaalka bilaashka ah ee adeega. Waxaanu galnay macluumaadkaaga lacag-bixineed, waxaanu sugaynaa lacag-bixin tijaabo ah oo ah $1 waxaanan ku helnaa $300 akoonkaaga. Sannad ka dib, mashruuca waxaa si toos ah loogu wareejin doonaa qorshe tarif ah oo lacag la'aan ah, markaa looma baahna in laga walwalo khasaaraha suurtagalka ah ee lacag.

Aan ku soo laabano tabka mashruuca Firebase oo aan u wareejino qorshaha tariifada Blaze - hadda waxaan haysanaa wax aan bixino haddii xadka la dhaafo.

Isku xirka gcloud, dooro mashruucayada Firebase, dooro "Hagaha" shayga ugu muhiimsan oo ku dar API Testing Cloud iyo Cloud Tools API.

Waxaan ku wadnaa tijaabooyinka qalabka gudaha Shaybaarka Imtixaanka Firebase. Qeybta 1: mashruuca iOS

Kadib tag shayga menu "IAM iyo maamulka" -> Xisaabaadka adeegga -> Abuur akoon adeeg. Waxaan siinaa xuquuqaha lagu hagaajinayo mashruuca.

Waxaan ku wadnaa tijaabooyinka qalabka gudaha Shaybaarka Imtixaanka Firebase. Qeybta 1: mashruuca iOS

U samee furaha API qaabka JSON

Waxaan ku wadnaa tijaabooyinka qalabka gudaha Shaybaarka Imtixaanka Firebase. Qeybta 1: mashruuca iOS

Waxaan u baahan doonaa JSON la soo dejiyey wax yar ka dib, laakiin hadda waxaan tixgelin doonaa dejinta Shaybaarka Imtixaanka oo dhammaystiran.

5. Dejinta CircleCI

Su'aal macquul ah ayaa soo baxda - maxaa lagu sameeyaa erayga sirta ah? Habka bedbeddelka deegaanka ee mashiinka wax lagu dhiso ayaa naga caawin doona inaan si ammaan ah u xafidno furayaashayada sirta ah iyo xogta kale ee xasaasiga ah. Goobaha mashruuca CircleCI, dooro beddelka deegaanka

Waxaan ku wadnaa tijaabooyinka qalabka gudaha Shaybaarka Imtixaanka Firebase. Qeybta 1: mashruuca iOS
Oo deji doorsoomayaasha soo socda:

  • fure: GOOGLE_APPLICATION_CREDENTIALS
    qiimaha: waxa ku jira faylka json ee furaha koontada adeegga gcloud
  • furaha: MATCH_PASSWORD
    qiimaha: erayga sirta ah ee lagu kala saarayo kaydka github oo wata shahaadooyin
  • furaha: FASTLANE_PASSWORD
    qiimaha: Koontada koontada kaabayaasha Portal Developer Portal

Waxaan badbaadinaa isbeddellada, abuurnaa PR oo u dirnaa hoggaanka kooxdayada si ay dib u eegis ugu sameeyaan.

Natiijooyinka

Natiijadii ka soo baxday khalkhal gelintan fudud, waxaan helnay shaqo wanaagsan oo deggan oo karti u leh in lagu duubo fiidiyowga shaashadda aaladda waqtiga tijaabada. Tusaalaha tijaabada ah, waxaan qeexay nooca aaladda iPhone X, laakiin beertu waxay bixisaa xulasho qani ah oo ka mid ah moodooyinka kala duwan iyo noocyada iOS.

Qaybta labaad waxa loo go'aamin doonaa habaynta tillaabo-tallaabo ee shaybaadhka Tijaabada Firebase ee mashruuca Android.

Source: www.habr.com

Add a comment