Urang ngajalankeun tés instrumental di Firebase Test Lab. Bagian 1: proyék ios

Urang ngajalankeun tés instrumental di Firebase Test Lab. Bagian 1: proyék ios

Nami abdi Dmitry, abdi damel salaku tester di perusahaan Élmu MEL. Rada anyar kuring réngsé kaayaan hiji fitur rélatif panganyarna tina Firebase Test Lab — nyaéta, kalayan uji instrumental aplikasi ios nganggo kerangka uji asli XCUITest.

Sateuacan ieu, kuring parantos nyobian Firebase Test Lab pikeun Android sareng leres-leres resep sadayana, janten kuring mutuskeun pikeun nyobaan nempatkeun infrastruktur uji ios proyék dina tapak anu sami. Kuring kungsi Google pisan jeung teu sagalana digawé kaluar kahiji kalina, jadi kuring megatkeun pikeun nulis artikel tutorial pikeun maranéhanana anu masih berjuang.

Janten, upami anjeun gaduh tés UI dina proyék ios, anjeun parantos tiasa nyobian ngajalankeun éta dina alat nyata ayeuna, anu disayogikeun ku Good Corporation. Pikeun anu minat, wilujeng sumping ka ucing.

Dina carita, kuring mutuskeun pikeun ngawangun sababaraha data awal - gudang pribadi dina GitHub sareng sistem ngawangun CircleCI. Ngaran aplikasi nyaeta AmazingApp, bundleID nyaeta com.company.amazingapp. Kuring nampilkeun data ieu langsung pikeun ngirangan kabingungan salajengna.

Upami anjeun ngalaksanakeun sababaraha solusi dina proyék anjeun sacara béda, bagikeun pangalaman anjeun dina koméntar.

1. Tes sorangan

Jieun cabang proyék anyar pikeun tés UI:

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

Hayu urang muka proyék di XCode tur jieun Target anyar kalawan tés UI [XCode -> File -> Anyar -> Target -> ios Tés Bundle], mere eta nami timer explanatory AmazingAppUITests.

Urang ngajalankeun tés instrumental di Firebase Test Lab. Bagian 1: proyék ios

Pindah ka bagian Build Phase tina Target anu diciptakeun sareng pariksa ayana Depéndensi Target - AmazingApp, dina Sumber Compile - AmazingAppUITests.swift.

Prakték anu saé nyaéta misahkeun pilihan ngawangun anu béda kana Skéma anu misah. Kami nyiptakeun skéma pikeun tés UI kami [XCode -> Produk -> Skéma -> Skéma Anyar] sareng masihan nami anu sami: AmazingAppUITests.

Ngawangun skéma anu diciptakeun kedah kalebet Target aplikasi utama - tés AmazingApp sareng Target UI - AmazingAppUITests - tingali layar

Urang ngajalankeun tés instrumental di Firebase Test Lab. Bagian 1: proyék ios

Salajengna, urang nyieun konfigurasi ngawangun anyar pikeun tés UI. Dina XCode, klik dina file proyék sareng angkat ka bagian Info. Pencét "+" sareng jieun konfigurasi énggal, contona XCtest. Urang bakal butuh ieu dina mangsa nu bakal datang dina urutan ulah nari jeung rebana lamun datang ka kode Signing.

Urang ngajalankeun tés instrumental di Firebase Test Lab. Bagian 1: proyék ios

Sahenteuna aya tilu Target dina proyék anjeun: aplikasi utama, unit tés (sanggeus sadayana, aranjeunna aya, leres?) Sareng tés Target UI anu kami ciptakeun.

Pindah ka Target AmazingApp, Bangun Setélan tab, Kode Signing Identity bagian. Pikeun konfigurasi XCtest, pilih ios pamekar. Dina Code Signing Style bagian, pilih Manual. Kami henteu acan ngahasilkeun profil provisioning, tapi urang pasti bakal uih deui engké.

Pikeun Target AmazingAppUITests kami ngalakukeun hal anu sami, tapi dina kolom Product Bundle Identifier kami lebetkeun com.company.amazingappuitests.

2. Nyetel hiji proyék dina Program pamekar Apple

Pindah ka halaman Program pamekar Apple, angkat ka bagian Sértipikat, Identifiers & Profiles teras kana kolom App IDs tina item Identifiers. Jieun ID Aplikasi anyar anu disebut AmazingAppUITests sareng bundleID com.company.amazingappuitests.

Urang ngajalankeun tés instrumental di Firebase Test Lab. Bagian 1: proyék ios

Ayeuna urang boga kasempetan pikeun asup tés urang jeung sertipikat misah, tapi ... Prosedur pikeun assembling wangunan pikeun nguji ngalibatkeun assembling aplikasi sorangan jeung assembling test runner. Sasuai, urang disanghareupan ku masalah nandatanganan dua KTP sareng hiji provisioning provisioning. Untungna, aya solusi basajan tur elegan - Wildcard App ID. Urang ngulang prosedur pikeun nyieun hiji App ID anyar, tapi tinimbang eksplisit App ID, pilih Wildcard App ID sakumaha dina screenshot.

Urang ngajalankeun tés instrumental di Firebase Test Lab. Bagian 1: proyék ios

Dina titik ieu, urang geus réngsé gawé bareng developer.apple.com, tapi urang moal ngaleutikan jandela pangotektak. Hayu urang ka Situs dokuméntasi Fastlane jeung maca ngeunaan utilitas Cocog ti panutup ka panutup.

Pamaca anu ati-ati ningali yén pikeun ngagunakeun utilitas ieu kami peryogi gudang pribadi sareng akun anu gaduh aksés kana Program Pangembang Apple sareng Github. Urang nyieun (lamun ujug-ujug euweuh hal saperti) hiji akun formulir [email dijaga], nyieun kecap akses nu kuat, ngadaptarkeunana jeung developer.apple.com, jeung nunjuk salaku administrator proyék. Salajengna, kami masihan aksés akun kana gudang github perusahaan anjeun sareng ngadamel gudang pribadi énggal kalayan nami sapertos AmazingAppMatch.

3. Nyetel Fastlane jeung utiliti cocok

Buka terminal, lebet kana polder sareng proyék sareng ngamimitian fastlane sapertos anu dituduhkeun manual resmi. Sanggeus ngasupkeun paréntah

$ fastlane init

Anjeun bakal dipenta pikeun milih konfigurasi pamakean anu sayogi. Pilih pilihan kaopat - pangaturan proyék manual.

Urang ngajalankeun tés instrumental di Firebase Test Lab. Bagian 1: proyék ios

Proyék ieu ngagaduhan diréktori fastlane énggal, anu ngandung dua file - Appfile sareng Fastfile. Singkatna, urang nyimpen data jasa dina Appfile, sareng nyerat padamelan di Fastfile, anu disebut jalur dina terminologi Fastlane. Abdi nyarankeun maca dokuméntasi resmi: waktu, два.

Buka Appfile dina pangropéa téksu karesep anjeun sareng bawa kana bentuk ieu:

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

Urang balik deui ka terminal jeung nurutkeun manual resmi urang ngawitan ngonpigurasikeun cocok.

$ fastlane match init
$ fastlane match development

Salajengna, lebetkeun data anu dipénta - gudang, akun, kecap akses, jsb.

Kadé ka: Nalika anjeun mimiti ngaluncurkeun utilitas pertandingan, anjeun bakal dipenta pikeun ngalebetkeun kecap konci pikeun ngadekrip gudang. Penting pisan pikeun ngahemat kecap akses ieu; urang peryogi éta nalika nyetél server CI!

Berkas anyar parantos muncul dina folder fastlane - Matchfile. Buka dina pangropéa téksu paporit anjeun sareng tingalikeun sapertos kieu:

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

Urang eusian eta kaluar persis cara ieu lamun urang hayang make patandingan dina mangsa nu bakal datang pikeun asup ngawangun pikeun tampilan dina Crashlytics jeung/atawa AppStore, nyaeta, pikeun asup ka ID kebat tina aplikasi Anjeun.

Tapi, sakumaha urang émut, kami nyiptakeun ID Wildcard khusus pikeun nandatanganan tés ngawangun. Janten, buka Fastfile sareng lebetkeun jalur énggal:

lane :testing_build_for_firebase do

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

end

Simpen sareng lebetkeun kana terminal

fastlane testing_build_for_firebase

sareng urang tingali kumaha fastlane nyiptakeun sertipikat énggal sareng nempatkeun kana gudang. Hebat!

Buka XCode. Ayeuna urang gaduh provisioning provisioning diperlukeun tina formulir Match Development com.company.*, nu kudu dieusian dina bagian Provisioning propil pikeun AmazingApp na AmazingAppUITests target.

Urang ngajalankeun tés instrumental di Firebase Test Lab. Bagian 1: proyék ios

Tetep nambihan jalur pikeun tés assembling. Hayu urang ka gudang proyék plugin pikeun fastlane nu matak ngamudahkeun pikeun nyetél ékspor ka Firebase Test Lab tur turutan parentah.

Hayu urang nyalin-témpél tina conto aslina supados jalur testing_build_for_firebase urang tungtungna sapertos kieu:


 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

Kanggo inpormasi lengkep ngeunaan nyetél fastlane di CircleCI, kuring nyarankeun maca dokuméntasi resmi sakali, два.

Tong hilap nambihan tugas énggal kana config.yml kami:

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. Kumaha upami urang test bangku? Nyetél Firebase.

Hayu urang turun ka naon artikel ieu ditulis.

Panginten aplikasi anjeun nganggo Firebase dina rencana gratis, atanapi panginten henteu pisan. Henteu aya bédana dasarna, sabab pikeun nguji kabutuhan urang tiasa nyiptakeun proyék anu misah sareng taun pamakean gratis (keren, leres?)

Urang log in ka akun infrastruktur urang (atawa nu sejenna, teu masalah), jeung indit ka Kaca konsol Firebase. Jieun proyék anyar ngaranna AmazingAppUITests.

Kadé ka: Dina hambalan saméméhna dina Fastfile di jalur firebase_test_lab_ios_xctest parameter gcp_project kedah cocog sareng nami proyék.

Urang ngajalankeun tés instrumental di Firebase Test Lab. Bagian 1: proyék ios

Setélan standar cocog pikeun urang.

Ulah nutup tab, ngadaptar dina akun sarua di Gcloud - ieu téh ukuran diperlukeun, saprak komunikasi jeung Firebase lumangsung ngagunakeun panganteur konsol gcloud.

Google masihan $300 kanggo sataun, anu dina konteks ngalaksanakeun autotes sami sareng sataun nganggo jasa gratis. Kami ngalebetkeun inpormasi pamayaran anjeun, ngantosan uji debit $1 sareng nampi $300 kana akun anjeun. Sanggeus sataun, proyék bakal otomatis ditransfer ka rencana tarif bébas, jadi teu perlu salempang ngeunaan kamungkinan leungitna duit.

Hayu urang balik deui ka tab sareng proyék Firebase sareng mindahkeun kana rencana tarif Blaze - ayeuna urang gaduh anu kedah dibayar upami watesna ngaleuwihan.

Dina antarmuka gcloud, pilih proyék Firebase kami, pilih item ménu utama "Diréktori" sareng tambahkeun Cloud Testing API sareng Cloud Tools Result API.

Urang ngajalankeun tés instrumental di Firebase Test Lab. Bagian 1: proyék ios

Teras angkat ka item ménu "IAM sareng administrasi" -> Akun jasa -> Jieun akun jasa. Kami masihan hak pikeun ngédit proyék.

Urang ngajalankeun tés instrumental di Firebase Test Lab. Bagian 1: proyék ios

Jieun konci API dina format JSON

Urang ngajalankeun tés instrumental di Firebase Test Lab. Bagian 1: proyék ios

Urang peryogi JSON anu diunduh sakedik, tapi ayeuna urang bakal nganggap setélan Test Lab lengkep.

5. Nyetél CircleCI

Patarosan anu wajar timbul - naon anu kudu dilakukeun ku kecap akses? Mékanisme variabel lingkungan mesin ngawangun urang bakal ngabantosan urang nyimpen kecap akses sareng data sénsitip anu sanés. Dina setélan proyék CircleCI, pilih Variabel Lingkungan

Urang ngajalankeun tés instrumental di Firebase Test Lab. Bagian 1: proyék ios
Sareng nyetél variabel ieu:

  • konci: GOOGLE_APPLICATION_CREDENTIALS
    nilai: eusi file json konci akun layanan gcloud
  • konci: MATCH_PASSWORD
    nilai: sandi pikeun ngadekrip gudang github kalawan sertipikat
  • konci: FASTLANE_PASSWORD
    nilai: sandi akun infrastruktur Apple pamekar Portal

Urang nyimpen parobihan, ngadamel PR sareng kirimkeun ka pimpinan tim kami pikeun ditinjau.

hasil

Salaku hasil tina manipulasi saderhana ieu, kami nampi tempat kerja anu saé, stabil kalayan kamampuan ngarékam pidéo dina layar alat dina waktos tés. Dina conto test, kuring nangtukeun model alat iPhone X, tapi tegalan nyadiakeun Pilihan euyeub tina kombinasi model béda jeung versi ios.

Bagian kadua bakal devoted kana hambalan-demi-hambalan setelan Firebase Test Lab pikeun hiji proyék Android.

sumber: www.habr.com

Tambahkeun komentar