Em îmtîhanên amûreyê di Laboratoriya Testê ya Firebase de dimeşînin. Beş 1: Projeya iOS

Em îmtîhanên amûreyê di Laboratoriya Testê ya Firebase de dimeşînin. Beş 1: Projeya iOS

Navê min Dmitry e, ez di pargîdaniyê de wekî ceribandinek dixebitim Zanistiya MEL. Di van demên dawî de min mijûlbûna bi taybetmendiyek nisbeten nû ve ji qedand Firebase Test Lab - ango, bi ceribandina instrumental a serîlêdanên iOS-ê ku çarçoveya ceribandina xwemalî XCUITest bikar tîne.

Berî vê yekê, min berê ji bo Android-ê Firebase Test Lab ceriband û bi rastî ji her tiştî hez kir, ji ber vê yekê min biryar da ku ez hewl bidim ku binesaziya ceribandina iOS-ê ya projeyê li ser heman bingehê deynim. Min neçar ma ku gelek Google-ê bikim û her tişt ne cara yekem bû, ji ber vê yekê min biryar da ku ji bo kesên ku hîn jî têdikoşin gotarek dersê binivîsim.

Ji ber vê yekê, heke we ceribandinên UI-yê li ser projeyek iOS-ê hene, hûn dikarin berê wan biceribînin ku îro wan li ser cîhazên rastîn bimeşînin, ku ji kerema xwe ji hêla Good Corporation ve hatî peyda kirin. Ji bo kesên eleqedar, bi xêr hatin pisîkê.

Di çîrokê de, min biryar da ku ez li ser hin daneyên destpêkê ava bikim - depoyek taybet a li ser GitHub û pergala avakirina CircleCI. Navê serîlêdanê AmazingApp e, bundleID com.company.amazingapp e. Ez vê daneyê tavilê pêşkêş dikim da ku tevliheviya paşîn kêm bikim.

Ger we di projeya xwe de hin çareseriyên cûda bicîh anîn, ezmûna xwe di şîroveyan de parve bikin.

1. Testên xwe bixwe

Ji bo ceribandinên UI şaxek projeyek nû biafirînin:

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

Werin em projeyê di XCode-ê de vekin û bi ceribandinên UI-yê [XCode -> Pelê -> Nû -> Target -> Bundle Testing iOS] Targetek nû biafirînin, û navê xwe-ravekirî AmazingAppUITests bidin wê.

Em îmtîhanên amûreyê di Laboratoriya Testê ya Firebase de dimeşînin. Beş 1: Projeya iOS

Herin beşa Avakirina Qonaxên Armanca hatî afirandin û hebûna Girêdanên Armanc - AmazingApp, li Çavkaniyên Berhevkar - AmazingAppUITests.swift kontrol bikin.

Pratîkek baş ev e ku vebijarkên cûda yên avakirinê di Schemeyên cihê de veqetînin. Em ji bo ceribandinên xwe yên UI-yê [XCode -> Hilber -> Bername -> Bernameya Nû] nexşeyek diafirînin û heman navî lê didin: AmazingAppUITests.

Avakirina pilana çêkirî pêdivî ye ku Armanca serîlêdana sereke - AmazingApp û ceribandinên UI-ya Target - AmazingAppUITests - li dîmenê binêre

Em îmtîhanên amûreyê di Laboratoriya Testê ya Firebase de dimeşînin. Beş 1: Projeya iOS

Dûv re, em ji bo ceribandinên UI veavakirinek nû çêdikin. Di XCode de, li ser pelê projeyê bikirtînin û biçin beşa Info. Li ser "+" bikirtînin û mîhengek nû biafirînin, mînakî XCtest. Em ê di pêşerojê de pêdiviya me bi vê bikin da ku dema ku ew tê ser îmzekirina kodê ji dansana bi tembûrê dûr nekevin.

Em îmtîhanên amûreyê di Laboratoriya Testê ya Firebase de dimeşînin. Beş 1: Projeya iOS

Di projeya we de herî kêm sê Armanc hene: serîlêdana sereke, ceribandinên yekîneyê (piştî hemî, ew hene, rast?) û ceribandinên UI-ya Target ku me afirandin.

Herin Target AmazingApp, tabloya Mîhengên Avakirin, beşa Nasnameya Îmzekirina Kodê. Ji bo veavakirina XCtest, Pêşdebir iOS hilbijêrin. Di beşa Şêweya Îmzekirina Kodê de, Manual hilbijêrin. Me hîn profîlek dabînkirinê çênekiriye, lê bê guman em ê hinekî paşê vegerin ser wê.

Ji bo Target AmazingAppUITests em heman tiştî dikin, lê di stûna Nasnameya Bundle ya Hilberê de em têkevin com.company.amazingappuitests.

2. Sazkirina projeyekê di Bernameya Developer Apple de

Herin rûpela Bernameya Pêşdebirê Apple, biçin beşa Sertîfîka, Nasname & Profîl û dûv re jî li stûna Nasnameyên Appê ya babetê Nasname. Nasnameyek Appê ya nû bi navê AmazingAppUITests û bundleID com.company.amazingappuitests biafirînin.

Em îmtîhanên amûreyê di Laboratoriya Testê ya Firebase de dimeşînin. Beş 1: Projeya iOS

Naha derfeta me heye ku em ceribandinên xwe bi sertîfîkayek veqetandî îmze bikin, lê... Pêvajoya berhevkirina avahiyek ji bo ceribandinê berhevkirina serîlêdanê bi xwe û berhevkirina ceribandinê pêk tîne. Li gorî vê yekê, em bi pirsgirêka îmzekirina du nasnameyên pakêtê bi yek profîla dabînkirinê re rû bi rû ne. Bi bextewarî, çareseriyek hêsan û elegant heye - Wildcard App ID. Em prosedurê ji bo afirandina Nasnameyek Appê ya nû dubare dikin, lê li şûna Nasnameya Serlêdana Eşkere, Nasnameya App Wildcard wekî di dîmenê de hilbijêrin.

Em îmtîhanên amûreyê di Laboratoriya Testê ya Firebase de dimeşînin. Beş 1: Projeya iOS

Di vê nuqteyê de, em bi developer.apple.com re dixebitin, lê em ê pencereya gerokê kêm nekin. Ka em herin Malpera belgekirina Fastlane û li ser kargêriya Match-ê ji serî heya bergê bixwînin.

Xwendevanek baldar dît ku ji bo karanîna vê amûreyê em ê hewceyê depoyek taybet û hesabek bi gihandina hem Bernameya Pêşdebir a Apple û hem jî Github hewce bikin. Em hesabek formê çêdikin (heke ji nişka ve tiştek wusa tune). [email parastî], şîfreyek bihêz derxînin, wê bi developer.apple.com re tomar bikin, û wê wekî rêveberê projeyê destnîşan bikin. Dûv re, em hesabê xwe bigihînin depoya github a pargîdaniya we û depoyek taybet a nû ya bi navek mîna AmazingAppMatch diafirînin.

3. Sazkirina Fastlane û kargêriya maçê

Termînalek vekin, biçin peldanka bi projeyê re û wekî ku tê destnîşan kirin fastlane dest pê bikin manual fermî. Piştî ketina fermanê

$ fastlane init

Dê ji we were xwestin ku hûn mîhengên karanîna berdest hilbijêrin. Vebijarka çaremîn hilbijêrin - sazkirina projeya manual.

Em îmtîhanên amûreyê di Laboratoriya Testê ya Firebase de dimeşînin. Beş 1: Projeya iOS

Projeyek pelrêça nû ya fastlane heye, ku du pelan dihewîne - Appfile û Fastfile. Bi kurtasî, em daneyên karûbarê li Appfile hilînin, û di Fastfile de karan dinivîsin, ku di termînolojiya Fastlane de jê re dibêjin rê. Ez pêşniyar dikim ku belgeya fermî bixwînin: carinan, два.

Appfile di edîtorê nivîsa xweya bijare de vekin û wê bînin forma jêrîn:

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

Em vedigerin termînalê û li gorî manuala fermî em dest bi mîhengkirina maçê dikin.

$ fastlane match init
$ fastlane match development

Dûv re, daneyên daxwazkirî têkevin - depo, hesab, şîfre, hwd.

Ev ji bo me girîng e: Gava ku hûn yekem car kargêriya maçê dest pê bikin, dê ji we were xwestin ku hûn şîfreyek têkevin da ku depoyê deşîfre bikin. Pir girîng e ku hûn vê şîfreyê biparêzin; dema ku servera CI-yê saz bikin em ê hewceyê wê bin!

Pelek nû di peldanka fastlane de xuya bû - Matchfile. Wê di edîtorê nivîsa xweya bijare de vekin û bi vî rengî nîşan bidin:

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

Ger em dixwazin di pêşerojê de ji bo nîşankirina li Crashlytics û/an AppStore avahîyan îmze bikin, ango ji bo îmzekirina nasnameya pakêtê ya serlêdana we, em tam bi vî rengî tijî dikin.

Lê, wekî ku tê bîra me, me ID-ya Wildcard-a taybetî çêkir da ku avakirina ceribandinê îmze bike. Ji ber vê yekê, Fastfile vekin û rêgezek nû têkevin:

lane :testing_build_for_firebase do

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

end

Hilînin û têkevin termînalê

fastlane testing_build_for_firebase

û em dibînin ka fastlane çawa sertîfîkayek nû afirand û ew xiste depoyê. Ecêb!

XCode vekin. Naha me profîla dabînkirina pêdivî ya forma Match Development com.company.* heye, ku divê di beşa profîla Pêşkêşkirinê de ji bo armancên AmazingApp û AmazingAppUITests were destnîşan kirin.

Em îmtîhanên amûreyê di Laboratoriya Testê ya Firebase de dimeşînin. Beş 1: Projeya iOS

Ew dimîne ku ji bo berhevkirina ceribandinan rê lê zêde bike. Ka em herin depo projeyek pêvekê ya ji bo fastlane ku sazkirina hinardekirinê ji Firebase Test Lab re hêsantir dike û rêwerzan bişopîne.

Ka em ji mînaka orîjînal kopî-paste bikin da ku testing_build_for_firebase riya me bi vî rengî biqede:


 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

Ji bo agahdariya bêkêmasî li ser sazkirina fastlane li CircleCI, ez pêşniyar dikim ku belgeya fermî bixwînin carek, два.

Ji bîr nekin ku karekî nû li config.yml me zêde bikin:

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. Çi li ser kursiya testa me? Sazkirina Firebase.

Ka em herin ser ku gotar ji bo çi hatiye nivîsandin.

Dibe ku sepana we Firebase li ser nexşeyek belaş bikar bîne, an jî dibe ku qet nebe. Bê guman cûdahiyek bingehîn tune, ji ber ku ji bo hewcedariyên ceribandinê em dikarin bi salek karanîna belaş projeyek cûda biafirînin (serxweş, rast?)

Em têkevin hesabê binesaziya xwe (an jî ya din, ne girîng e), û diçin Rûpelê konsolê Firebase. Projeyek nû bi navê AmazingAppUITests biafirînin.

Ev ji bo me girîng e: Di gava berê ya di Fastfile de di lane firebase_test_lab_ios_xctest de divê parametreya gcp_project bi navê projeyê re hevber bike.

Em îmtîhanên amûreyê di Laboratoriya Testê ya Firebase de dimeşînin. Beş 1: Projeya iOS

Mîhengên xwerû ji me re pir xweş tê.

Tabloyê negirin, di binê heman hesabê de qeyd bikin Gcloud - ev pîvanek pêdivî ye, ji ber ku pêwendiya bi Firebase bi karanîna navbeynkariya konsolê gcloud pêk tê.

Google ji bo salekê 300 dolar dide, ku di çarçoweya pêkanîna ceribandinên otomatîkî de bi salek karanîna belaş a karûbarê re wekhev e. Em agahdariya dravdana we dinivîsin, li benda debita testê ya $1 bisekinin û 300 $ ji hesabê we re distînin. Piştî salek, proje dê bixweber veguhezîne nexşeyek tarîfê ya belaş, ji ber vê yekê ne hewce ye ku meriv ji windabûna drav a mimkun bitirse.

Ka em bi projeya Firebase vegerin ser tabê û wê veguhezînin plana tarîfê ya Blaze - naha heke sînor derbas bibe tiştek heye ku em bidin.

Di navgîniya gcloud de, projeya meya Firebase hilbijêrin, menuya sereke ya "Rêbername" hilbijêrin û API-ya Testkirina Cloud û API-ya Encama Cloud Tools zêde bikin.

Em îmtîhanên amûreyê di Laboratoriya Testê ya Firebase de dimeşînin. Beş 1: Projeya iOS

Dûv re biçin menuya "IAM û rêveberî" -> Hesabên karûbar -> Hesabê karûbarê biafirînin. Em mafên sererastkirina projeyê didin.

Em îmtîhanên amûreyê di Laboratoriya Testê ya Firebase de dimeşînin. Beş 1: Projeya iOS

Bişkojek API-ê di formata JSON de biafirînin

Em îmtîhanên amûreyê di Laboratoriya Testê ya Firebase de dimeşînin. Beş 1: Projeya iOS

Em ê hinekî dereng hewceyê JSON-a dakêşandî bibin, lê ji bo naha em ê sazkirina Test Lab temam bihesibînin.

5. Sazkirina CircleCI

Pirsek maqûl derdikeve - bi şîfreyan re çi bikin? Mekanîzmaya guhêrbar a jîngehê ya makîneya çêkirina me dê ji me re bibe alîkar ku şîfreyên xwe û daneyên din ên hesas bi ewlehî hilînin. Di mîhengên projeya CircleCI de, Guherbarên Jîngehê hilbijêrin

Em îmtîhanên amûreyê di Laboratoriya Testê ya Firebase de dimeşînin. Beş 1: Projeya iOS
Û guherbarên jêrîn saz bikin:

  • mift: GOOGLE_APPLICATION_CREDENTIALS
    nirx: naveroka pelê json ya mifteya hesabê karûbarê gcloud
  • mift: MATCH_PASSWORD
    nirx: şîfreya ji bo deşîfrekirina depoya github bi sertîfîkayan
  • mift: FASTLANE_PASSWORD
    nirx: Şîfreya hesabê binesaziya Portala Pêşdebir a Apple

Em guhertinan hildibijêrin, PR-ê diafirînin û ji bo vekolînê ji serokê tîmê xwe re dişînin.

Encam

Di encama van manîpulasyonên hêsan de, me standek xebatek baş, bi îstîqrar bi şiyana tomarkirina vîdyoyê li ser ekrana cîhazê di dema ceribandinê de wergirt. Di nimûneya testê de, min modela cîhaza iPhone X destnîşan kir, lê çandinî ji berhevoka modelên cihêreng û guhertoyên iOS vebijarkek dewlemend peyda dike.

Beşa duyemîn dê ji bo projeyek Android-ê ji bo sazkirina gav-bi-gav a Firebase Test Lab ve were veqetandin.

Source: www.habr.com

Add a comment