Firebase Test Lab-en proba instrumentalak egiten ditugu. 1. zatia: iOS proiektua

Firebase Test Lab-en proba instrumentalak egiten ditugu. 1. zatia: iOS proiektua

Nire izena Dmitry da, probatzaile gisa lan egiten dut enpresan MEL Zientzia. Duela gutxi nahiko berri den ezaugarri bat jorratzen amaitu nuen Firebase Test Lab β€” hots, iOS aplikazioen proba instrumentalekin XCUITest jatorrizko proba-esparrua erabiliz.

Hau baino lehen, Firebase Test Lab Android-erako probatu nuen eta dena asko gustatu zitzaidan, beraz, proiektuaren iOS probaren azpiegitura parean jartzen saiatzea erabaki nuen. Googlen asko egin behar izan nuen eta dena ez zen lehen aldiz ondo atera, beraz, oraindik borrokan daudenentzat tutorial artikulu bat idaztea erabaki nuen.

Beraz, iOS proiektu batean UI probak badituzu, dagoeneko saia zaitezke gailu errealetan exekutatzen gaur, Good Corporation-ek adeitasunez emandako. Interesa dutenentzat, ongi etorri cat.

Istorioan, hasierako datu batzuetan eraikitzea erabaki nuen: GitHub-en biltegi pribatu bat eta CircleCI eraikitzeko sisteman. Aplikazioaren izena AmazingApp da, bundleID com.company.amazingapp da. Datu hauek berehala aurkezten ditut ondorengo nahasmena murrizteko.

Zure proiektuan irtenbide batzuk modu ezberdinean ezarri badituzu, partekatu zure esperientzia iruzkinetan.

1. Probak beraiek

Sortu proiektu-adar berri bat UI probetarako:

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

Ireki dezagun proiektua XCode-n eta sortu Target berri bat UI probekin [XCode -> Fitxategia -> Berria -> Helburua -> iOS Testing Bundle], AmazingAppUITests izen propioa emanez.

Firebase Test Lab-en proba instrumentalak egiten ditugu. 1. zatia: iOS proiektua

Zoaz Sortutako Helburuko Eraikitze-faseak atalera eta egiaztatu Target Dependencies - AmazingApp, Konpilatu iturriak - AmazingAppUITests.swift-en.

Praktika on bat eraikuntza-aukera desberdinak eskema bereizietan bereiztea da. Gure UI probetarako eskema bat sortzen dugu [XCode -> Produktua -> Eskema -> Eskema berria] eta izen bera ematen diogu: AmazingAppUITests.

Sortutako eskemaren eraikuntzak aplikazio nagusiaren Helburua izan behar du - AmazingApp eta Target UI probak - AmazingAppUITests - ikusi pantaila-argazkia

Firebase Test Lab-en proba instrumentalak egiten ditugu. 1. zatia: iOS proiektua

Ondoren, konfigurazio konfigurazio berri bat sortzen dugu UI probetarako. XCode-n, egin klik proiektuaren fitxategian eta joan Informazio atalera. Egin klik "+"-n eta sortu konfigurazio berri bat, adibidez XCtest. Hori beharko dugu aurrerantzean, kodea sinatzeko orduan panderoarekin dantza egitea saihesteko.

Firebase Test Lab-en proba instrumentalak egiten ditugu. 1. zatia: iOS proiektua

Zure proiektuan gutxienez hiru Helburu daude: aplikazio nagusia, unitate-probak (azken finean, existitzen dira, ezta?) eta guk sortutako Target UI probak.

Joan Target AmazingApp, Eraikitzeko ezarpenak fitxara, Kode sinaduraren identitatea atalera. XCtest konfiguraziorako, hautatu iOS Developer. Kode sinadura estiloa atalean, hautatu Eskuliburua. Oraindik ez dugu hornidura-profilik sortu, baina, zalantzarik gabe, beranduago itzuliko gara.

Target AmazingAppUITests-etarako gauza bera egiten dugu, baina Product Bundle Identifier zutabean com.company.amazingappuitests sartzen dugu.

2. Apple Developer Program-en proiektu bat konfiguratzea

Joan Apple Developer Program orrira, joan Ziurtagiriak, Identifikatzaileak eta Profilak atalera eta ondoren Identifikatzaileak elementuko Aplikazioen IDak zutabera. Sortu AmazingAppUITests eta bundleID com.company.amazingappuitests izeneko aplikazioaren ID berria.

Firebase Test Lab-en proba instrumentalak egiten ditugu. 1. zatia: iOS proiektua

Orain gure probak ziurtagiri bereizi batekin sinatzeko aukera dugu, baina... Probetarako build bat muntatzeko prozedurak aplikazioa bera muntatu eta test runner muntatzea dakar. Horrenbestez, hornidura-profil batekin bi sorta ID sinatzeko arazoaren aurrean gaude. Zorionez, irtenbide sinple eta dotore bat dago: Wildcard App ID. Aplikazioaren ID berria sortzeko prozedura errepikatzen dugu, baina Aplikazioaren ID esplizituaren ordez, hautatu Komodinen Aplikazioaren IDa pantaila-argazkian bezala.

Firebase Test Lab-en proba instrumentalak egiten ditugu. 1. zatia: iOS proiektua

Une honetan, developer.apple.com-ekin lanean amaitu dugu, baina ez dugu arakatzailearen leihoa minimizatuko. Goazen Fastlane dokumentazio gunea eta irakurri Match utilityari buruz azaletik azalera.

Irakurle adi batek konturatu zuen erabilgarritasun hau erabiltzeko biltegi pribatu bat eta Apple Developer Programarako eta Githuberako sarbidea duen kontu bat beharko dugula. Sortzen dugu (bat-batean horrelakorik ez badago) formako kontu bat [posta elektroniko bidez babestua], asmatu pasahitz sendo bat, erregistratu developer.apple.com helbidean eta izendatu proiektuko administratzaile gisa. Ondoren, kontuari sarbidea ematen diogu zure konpainiaren github biltegirako eta biltegi pribatu berri bat sortzen dugu AmazingAppMatch bezalako izen batekin.

3. Fastlane eta partida-erabilgarritasuna konfiguratzea

Ireki terminal bat, joan proiektua duen karpetara eta hasieratu fastlane atalean adierazitako moduan eskuliburu ofiziala. Komandoa sartu ondoren

$ fastlane init

Eskuragarri dauden erabilera-konfigurazioak hautatzeko eskatuko zaizu. Hautatu laugarren aukera - eskuzko proiektuaren konfigurazioa.

Firebase Test Lab-en proba instrumentalak egiten ditugu. 1. zatia: iOS proiektua

Proiektuak fastlane direktorio berri bat du, bi fitxategi dituena - Appfile eta Fastfile. Laburbilduz, zerbitzu-datuak Appfile-n gordetzen ditugu eta lanak Fastfile-n idazten ditugu, Fastlane terminologian bideak deitzen direnak. Dokumentazio ofiziala irakurtzea gomendatzen dut: denbora, Π΄Π²Π°.

Ireki Appfile zure gogoko testu-editorean eta ekarri formulario honetara:

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

Terminalera itzuliko gara eta eskuliburu ofizialaren arabera partida konfiguratzen hasiko gara.

$ fastlane match init
$ fastlane match development

Ondoren, sartu eskatutako datuak - biltegia, kontua, pasahitza, etab.

Garrantzitsua: Bat-etortze-utilitatea abiarazten duzunean, biltegia deszifratzeko pasahitz bat sartzeko eskatuko zaizu. Oso garrantzitsua da pasahitz hau gordetzea; behar izango dugu CI zerbitzaria konfiguratzerakoan!

Fitxategi berri bat agertu da fastlane karpetan - Matchfile. Ireki zure gogoko testu-editorean eta bistaratu honela:

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

Zehazki horrela betetzen dugu etorkizunean match-a erabili nahi badugu Crashlytics eta/edo AppStore-n bistaratzeko eraikuntzak sinatzeko, hau da, zure aplikazioaren sorta IDa sinatzeko.

Baina, gogoratzen dugunez, Komodin ID berezi bat sortu genuen probaren eraikuntza sinatzeko. Beraz, ireki Fastfile eta sartu bide berri bat:

lane :testing_build_for_firebase do

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

end

Gorde eta sartu terminalean

fastlane testing_build_for_firebase

eta ikusten dugu nola fastlane-k ziurtagiri berri bat sortu eta biltegian jartzen duen. Bikaina!

Ireki XCode. Orain, Match Development com.company.* inprimakiaren hornidura-profila dugu, AmazingApp eta AmazingAppUITests helburuetarako Horniketa-profila atalean zehaztu behar dena.

Firebase Test Lab-en proba instrumentalak egiten ditugu. 1. zatia: iOS proiektua

Probak muntatzeko erreia gehitzea geratzen da. Goazen biltegia Fastlane-rako plugin-proiektua, Firebase Test Lab-era esportazioa konfiguratzea eta argibideak jarraitzea errazten duena.

Egin dezagun kopiatu-itsatsi jatorrizko adibidetik, gure lane testing_build_for_firebase honela geratu dadin:


 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

Fastlane CircleCI-n konfiguratzeari buruzko informazio osoa lortzeko, dokumentazio ofiziala irakurtzea gomendatzen dut denbora Π΄Π²Π°.

Ez ahaztu zeregin berri bat gehitzea gure config.yml-ra:

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. Zer gertatzen da gure proba-bankua? Firebase konfiguratzen.

Goazen artikulua zertarako idatzi zen.

Agian zure aplikazioak Firebase doako plan batean erabiltzen du, edo agian ez. Ez dago erabateko desberdintasunik, probak egiteko beharretarako proiektu bereizi bat sor dezakegulako urtebeteko erabilera librearekin (gozoa, ezta?)

Gure azpiegitura-kontuan sartzen gara (edo beste edozeinetan, berdin dio), eta bertara joaten gara Firebase kontsolaren orria. Sortu AmazingAppUITests izeneko proiektu berri bat.

Garrantzitsua: Firebase_test_lab_ios_xctest-eko Fastfileko aurreko urratsean gcp_project parametroak proiektuaren izenarekin bat etorri behar du.

Firebase Test Lab-en proba instrumentalak egiten ditugu. 1. zatia: iOS proiektua

Ezarpen lehenetsiak nahiko ondo egokitzen zaizkigu.

Ez itxi fitxa, erregistratu kontu berean Gcloud - Beharrezko neurria da, Firebaserekin komunikazioa gcloud kontsolaren interfazea erabiliz gertatzen baita.

Google-k 300 dolar ematen ditu urtebeterako, hau da, autotestak egitearen testuinguruan, zerbitzua doan erabiltzeko urtebeteko baliokidea da. Zure ordainketa-informazioa sartzen dugu, $ 1eko probaren zordunketa itxaron eta $ 300 jasoko ditugu zure kontuan. Urtebete igaro ondoren, proiektua automatikoki transferituko da doako tarifa-plan batera, beraz, ez dago diru-galera posibleez kezkatu beharrik.

Itzul gaitezen Firebase proiektuaren fitxara eta transferi dezagun Blaze tarifa-planera - orain muga gainditzen bada zerbait ordaindu behar dugu.

gcloud interfazean, hautatu gure Firebase proiektua, hautatu "Directorio" menu nagusia elementua eta gehitu Cloud Testing API eta Cloud Tools Result API.

Firebase Test Lab-en proba instrumentalak egiten ditugu. 1. zatia: iOS proiektua

Ondoren, joan "IAM eta administrazioa" menu-elementura -> Zerbitzu-kontuak -> Sortu zerbitzu-kontua. Proiektua editatzeko eskubideak ematen ditugu.

Firebase Test Lab-en proba instrumentalak egiten ditugu. 1. zatia: iOS proiektua

Sortu API gako bat JSON formatuan

Firebase Test Lab-en proba instrumentalak egiten ditugu. 1. zatia: iOS proiektua

Deskargatutako JSON pixka bat geroago beharko dugu, baina oraingoz Test Lab konfigurazioa amaitutzat joko dugu.

5. CircleCI konfiguratzea

Arrazoizko galdera bat sortzen da - zer egin pasahitzekin? Gure eraikuntza-makinaren ingurune-aldagaiak gure pasahitzak eta beste datu sentikorrak modu seguruan gordetzen lagunduko digu. CircleCI proiektuaren ezarpenetan, hautatu Inguruneko aldagaiak

Firebase Test Lab-en proba instrumentalak egiten ditugu. 1. zatia: iOS proiektua
Eta ezarri aldagai hauek:

  • gakoa: GOOGLE_APPLICATION_CREDENTIALS
    balioa: gcloud zerbitzuko kontuaren gakoaren json fitxategiaren edukia
  • gakoa: MATCH_PASSWORD
    balioa: github biltegia ziurtagiriekin deszifratzeko pasahitza
  • gakoa: FASTLANE_PASSWORD
    balioa: Apple Developer Portal azpiegitura kontuaren pasahitza

Aldaketak gordetzen ditugu, PR bat sortzen dugu eta gure taldeko arduradunari bidaltzen diogu berrikus dezan.

Emaitzak

Manipulazio sinple horien ondorioz, laneko stand on eta egonkor bat jaso genuen, probak egiteko garaian bideoa gailuaren pantailan grabatzeko gaitasuna duena. Proba adibidean, iPhone X gailuaren eredua zehaztu nuen, baina baserriak aukeraketa aberatsa eskaintzen du modelo ezberdinen eta iOS bertsioen konbinazio batetik.

Bigarren zatia Android proiektu baterako Firebase Test Lab-en urratsez urrats konfiguratzera bideratuko da.

Iturria: www.habr.com

Gehitu iruzkin berria