Jenengku Dmitry, aku kerja dadi tester ing perusahaan
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.
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
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.
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.
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.
Ing wektu iki, kita wis rampung nggarap developer.apple.com, nanging kita ora bakal nyilikake jendhela browser. Ayo menyang
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
$ fastlane init
Sampeyan bakal dijaluk milih konfigurasi panggunaan sing kasedhiya. Pilih opsi papat - persiyapan proyek manual.
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:
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.
Iku tetep kanggo nambah lane kanggo assembling tes. Ayo menyang
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
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
Penting: Ing langkah sadurunge ing Fastfile ing lane firebase_test_lab_ios_xctest parameter gcp_project kudu cocog jeneng project.
Setelan standar cocog karo kita.
Aja nutup tab, ndhaftar ing akun sing padha ing
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.
Banjur pindhah menyang item menu "IAM lan administrasi" -> Akun layanan -> Gawe akun layanan. Kita menehi hak kanggo nyunting proyek kasebut.
Nggawe kunci API ing format JSON
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
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