Nami abdi Dmitry, abdi damel salaku tester di perusahaan
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.
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
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.
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.
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.
Dina titik ieu, urang geus réngsé gawé bareng developer.apple.com, tapi urang moal ngaleutikan jandela pangotektak. Hayu urang ka
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
$ fastlane init
Anjeun bakal dipenta pikeun milih konfigurasi pamakean anu sayogi. Pilih pilihan kaopat - pangaturan proyék manual.
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:
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.
Tetep nambihan jalur pikeun tés assembling. Hayu urang ka
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
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
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.
Setélan standar cocog pikeun urang.
Ulah nutup tab, ngadaptar dina akun sarua di
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.
Teras angkat ka item ménu "IAM sareng administrasi" -> Akun jasa -> Jieun akun jasa. Kami masihan hak pikeun ngédit proyék.
Jieun konci API dina format JSON
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
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