Kita nindakake tes instrumental ing Firebase Test Lab. Part 1: project iOS

Kita nindakake tes instrumental ing Firebase Test Lab. Part 1: project iOS

Jenengku Dmitry, aku kerja dadi tester ing perusahaan Ilmu MEL. Cukup bubar aku rampung dealing with fitur relatif anyar saka Firebase Test Lab - yaiku, karo testing instrumental aplikasi iOS nggunakake framework testing native XCUITest.

Sadurunge iki, aku wis nyoba Firebase Test Lab kanggo Android lan pancene seneng kabeh, mula aku mutusake kanggo nyoba nggawe prasarana uji coba iOS proyek kasebut ing sikil sing padha. Aku kudu Google kathah lan ora kabeh bisa metu pisanan, supaya aku mutusakΓ© kanggo nulis artikel tutorial kanggo wong-wong sing isih berjuang.

Dadi, yen sampeyan duwe tes UI ing proyek iOS, sampeyan wis bisa nyoba mbukak ing piranti nyata saiki, sing diwenehake dening Good Corporation. Kanggo sing minat, welcome to cat.

Ing crita, aku mutusake kanggo mbangun sawetara data awal - repositori pribadi ing GitHub lan sistem mbangun CircleCI. Jeneng aplikasi yaiku AmazingApp, bundleID yaiku com.company.amazingapp. Aku saiki data iki langsung kanggo ngurangi kebingungan sakteruse.

Yen sampeyan ngetrapake solusi tartamtu ing proyek sampeyan kanthi beda, nuduhake pengalaman sampeyan ing komentar.

1. Tes dhewe

Gawe cabang proyek anyar kanggo tes UI:

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

Ayo dadi mbukak proyek ing XCode lan nggawe Target anyar karo tes UI [XCode -> File -> New -> Target -> iOS Testing Bundle], menehi jeneng poto-panjelasan AmazingAppUITests.

Kita nindakake tes instrumental ing Firebase Test Lab. Part 1: project iOS

Pindhah menyang bagean Build Phase saka Target sing digawe lan priksa manawa ana Target Dependensi - AmazingApp, ing Sumber Kompilasi - AmazingAppUITests.swift.

Praktek sing apik yaiku misahake opsi mbangun sing beda dadi Skema sing kapisah. Kita nggawe skema kanggo tes UI [XCode -> Product -> Scheme -> New Scheme] lan menehi jeneng sing padha: AmazingAppUITests.

Mbangun skema sing digawe kudu kalebu Target aplikasi utama - AmazingApp lan tes Target UI - AmazingAppUITests - deleng gambar

Kita nindakake tes instrumental ing Firebase Test Lab. Part 1: project iOS

Sabanjure, kita nggawe konfigurasi mbangun anyar kanggo tes UI. Ing XCode, klik file proyek banjur pindhah menyang bagean Info. Klik ing "+" lan nggawe konfigurasi anyar, contone XCtest. Kita bakal mbutuhake iki ing mangsa supaya ora nari karo rebana nalika nerangake kode tondo asto.

Kita nindakake tes instrumental ing Firebase Test Lab. Part 1: project iOS

Paling ora ana telung Target ing proyek sampeyan: aplikasi utama, tes unit (sawise kabeh, ana, bener?) Lan tes Target UI sing digawe.

Pindhah menyang Target AmazingApp, tab Gawe Setelan, bagean Identitas Penandatanganan Kode. Kanggo konfigurasi XCtest, pilih Pangembang iOS. Ing Gaya Penandatanganan Kode bagean, pilih Manual. Kita durung nggawe profil provisioning, nanging mesthi bakal bali maneh mengko.

Kanggo Target AmazingAppUITests kita nindakake padha, nanging ing kolom Product Bundle Identifier kita ngetik com.company.amazingappuitests.

2. Nyetel proyek ing Program Pangembang Apple

Pindhah menyang kaca Program Pangembang Apple, pindhah menyang bagean Sertifikat, Pengenal & Profil banjur menyang kolom ID Aplikasi saka item Pengenal. Gawe ID Aplikasi anyar sing diarani AmazingAppUITests lan bundleID com.company.amazingappuitests.

Kita nindakake tes instrumental ing Firebase Test Lab. Part 1: project iOS

Saiki kita duwe kesempatan kanggo mlebu tes kita kanthi sertifikat sing kapisah, nanging ... Prosedur kanggo ngumpulake bangunan kanggo tes kalebu ngumpulake aplikasi kasebut dhewe lan ngumpulake test runner. Mulane, kita ngadhepi masalah kanggo mlebu rong ID bundle kanthi siji profil provisioning. Untunge, ana solusi sing prasaja lan elegan - Wildcard App ID. Baleni prosedur kanggo nggawe ID Aplikasi anyar, nanging tinimbang ID Aplikasi Eksplisit, pilih ID Aplikasi Wildcard kaya ing gambar.

Kita nindakake tes instrumental ing Firebase Test Lab. Part 1: project iOS

Ing wektu iki, kita wis rampung nggarap developer.apple.com, nanging kita ora bakal nyilikake jendhela browser. Ayo menyang Situs dokumentasi Fastlane lan maca babagan sarana Cocokake saka tutup nganti tutup.

Pembaca sing ati-ati ngerteni manawa nggunakake sarana iki, kita butuh repositori pribadi lan akun kanthi akses menyang Program Pangembang Apple lan Github. Kita nggawe (yen dumadakan ora ana) akun formulir kasebut [email dilindhungi], nggawe tembung sandhi sing kuwat, ndhaptar karo developer.apple.com, lan pilih dadi administrator proyek. Sabanjure, kita menehi akses akun menyang repositori github perusahaan lan nggawe repositori pribadi anyar kanthi jeneng kaya AmazingAppMatch.

3. Nyetel Fastlane lan sarana match

Bukak terminal, pindhah menyang folder karo proyek lan miwiti fastlane kaya sing dituduhake ing manual resmi. Sawise ngetik printah

$ fastlane init

Sampeyan bakal dijaluk milih konfigurasi panggunaan sing kasedhiya. Pilih opsi papat - persiyapan proyek manual.

Kita nindakake tes instrumental ing Firebase Test Lab. Part 1: project iOS

Proyek kasebut nduweni fastlane direktori anyar, sing ngemot rong file - Appfile lan Fastfile. Cekakipun, kita nyimpen data layanan ing Appfile, lan nulis proyek ing Fastfile, disebut jalur ing terminologi Fastlane. Aku nyaranake maca dokumentasi resmi: kaping, Π΄Π²Π°.

Bukak Appfile ing editor teks favorit lan nggawa menyang formulir ing ngisor iki:

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

Kita bali menyang terminal lan miturut manual resmi kita wiwiti ngatur match.

$ fastlane match init
$ fastlane match development

Sabanjure, ketik data sing dijaluk - repositori, akun, sandhi, lsp.

Penting: Nalika sampeyan miwiti sarana match, sampeyan bakal dijaluk ngetik sandhi kanggo dekripsi gudang. Penting banget kanggo nyimpen sandhi iki; kita bakal mbutuhake nalika nyetel server CI!

Berkas anyar wis katon ing folder fastlane - Matchfile. Bukak ing editor teks favorit lan tampilake kaya iki:

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

Kita ngisi kanthi cara iki yen pengin nggunakake match ing mangsa ngarep kanggo mlebu mbangun kanggo tampilan ing Crashlytics lan/utawa AppStore, yaiku, kanggo mlebu ID bundel aplikasi sampeyan.

Nanging, nalika elinga, kita nggawe ID Wildcard khusus kanggo mlebu ing mbangun tes. Mula, bukak Fastfile lan ketik jalur anyar:

lane :testing_build_for_firebase do

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

end

Simpen lan mlebu menyang terminal

fastlane testing_build_for_firebase

lan kita ndeleng carane fastlane nggawe sertifikat anyar lan dilebokake ing gudang. apik tenan!

Bukak XCode. Saiki kita duwe profil provisioning sing dibutuhake saka wangun Match Development com.company.*, sing kudu ditemtokake ing bagean Profil Provisioning kanggo target AmazingApp lan AmazingAppUITests.

Kita nindakake tes instrumental ing Firebase Test Lab. Part 1: project iOS

Iku tetep kanggo nambah lane kanggo assembling tes. Ayo menyang gudang proyek plugin kanggo fastlane sing nggampangake nyetel ekspor menyang Firebase Test Lab lan tindakake pandhuan.

Ayo nyalin-tempel saka conto asli supaya jalur testing_build_for_firebase katon kaya iki:


 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 informasi lengkap babagan nyetel fastlane ing CircleCI, aku nyaranake maca dokumentasi resmi sapisan, Π΄Π²Π°.

Aja lali nambah tugas anyar menyang config.yml kita:

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. Apa bab test bench kita? Nggawe Firebase.

Ayo goleki apa artikel kasebut ditulis.

Mbok menawa app sampeyan nggunakake Firebase ing rencana gratis, utawa bisa uga ora. Pancen ora ana bedane dhasar, amarga kanggo kabutuhan tes, kita bisa nggawe proyek sing kapisah kanthi panggunaan gratis setaun (keren, bener?)

Kita mlebu menyang akun infrastruktur (utawa liyane, ora masalah), lan pindhah menyang Kaca konsol Firebase. Gawe proyek anyar sing jenenge AmazingAppUITests.

Penting: Ing langkah sadurunge ing Fastfile ing lane firebase_test_lab_ios_xctest parameter gcp_project kudu cocog jeneng project.

Kita nindakake tes instrumental ing Firebase Test Lab. Part 1: project iOS

Setelan standar cocog karo kita.

Aja nutup tab, ndhaftar ing akun sing padha ing Gcloud - iki minangka ukuran sing perlu, amarga komunikasi karo Firebase dumadi nggunakake antarmuka konsol gcloud.

Google menehi $300 setaun, sing ing konteks nindakake tes otomatis padha karo taun panggunaan layanan gratis. Kita ngetik informasi pembayaran, ngenteni debit test $1 lan nampa $300 kanggo akun. Sawise setahun, proyek kasebut bakal ditransfer kanthi otomatis menyang rencana tarif gratis, mula ora perlu kuwatir babagan kemungkinan mundhut dhuwit.

Ayo bali menyang tab karo proyek Firebase lan transfer menyang rencana tarif Blaze - saiki kita kudu mbayar yen watesan wis ngluwihi.

Ing antarmuka gcloud, pilih proyek Firebase kita, pilih item menu utama "Direktori" lan tambahake Cloud Testing API lan Cloud Tools Result API.

Kita nindakake tes instrumental ing Firebase Test Lab. Part 1: project iOS

Banjur pindhah menyang item menu "IAM lan administrasi" -> Akun layanan -> Gawe akun layanan. Kita menehi hak kanggo nyunting proyek kasebut.

Kita nindakake tes instrumental ing Firebase Test Lab. Part 1: project iOS

Nggawe kunci API ing format JSON

Kita nindakake tes instrumental ing Firebase Test Lab. Part 1: project iOS

Kita bakal mbutuhake JSON sing diundhuh mengko, nanging saiki kita bakal nimbang persiyapan Test Lab rampung.

5. Nggawe CircleCI

Pitakonan sing cukup muncul - apa sing kudu dilakoni karo sandhi? Mekanisme variabel lingkungan mesin mbangun bakal mbantu kita nyimpen sandhi lan data sensitif liyane kanthi aman. Ing setelan proyek CircleCI, pilih Variabel Lingkungan

Kita nindakake tes instrumental ing Firebase Test Lab. Part 1: project iOS
Lan atur variabel ing ngisor iki:

  • kunci: GOOGLE_APPLICATION_CREDENTIALS
    Nilai: isi file json saka kunci akun layanan gcloud
  • kunci: MATCH_PASSWORD
    nilai: sandi kanggo decrypting repositori github karo sertifikat
  • kunci: FASTLANE_PASSWORD
    nilai: Sandi akun infrastruktur Portal Pangembang Apple

Kita nyimpen owah-owahan, nggawe PR lan ngirim menyang pimpinan tim kanggo ditinjau.

Hasil

Minangka asil saka manipulasi prasaja iki, kita nampa stand kerja sing apik lan stabil kanthi kemampuan kanggo ngrekam video ing layar piranti nalika tes. Ing conto test, aku nemtokake model piranti iPhone X, nanging farm menehi pilihan sugih saka kombinasi saka macem-macem model lan versi iOS.

Bagian kapindho bakal dikhususake kanggo persiyapan langkah demi langkah Firebase Test Lab kanggo proyek Android.

Source: www.habr.com

Add a comment