Sunana Dmitry, Ina aiki a matsayin mai gwadawa a cikin kamfani
Kafin wannan, Na riga na gwada Firebase Test Lab don Android kuma ina son komai da gaske, don haka na yanke shawarar ƙoƙarin sanya kayan aikin gwajin iOS na aikin akan ƙafa ɗaya. Dole ne in yi Google da yawa kuma ba komai ya yi aiki a karon farko ba, don haka na yanke shawarar rubuta labarin koyawa ga waɗanda har yanzu suke fafitikar.
Don haka, idan kuna da gwaje-gwajen UI akan aikin iOS, kuna iya riga kun gwada gudanar da su akan na'urori na gaske a yau, da kirki da Kamfanin Good Corporation ya bayar. Ga masu sha'awar, barka da zuwa cat.
A cikin labarin, na yanke shawarar ginawa akan wasu bayanan farko - ma'ajiyar sirri akan GitHub da tsarin ginin CircleCI. Sunan aikace-aikacen shine AmazingApp, bundleID com.company.amazingapp ne. Ina gabatar da wannan bayanan nan da nan don rage rudani na gaba.
Idan kun aiwatar da wasu mafita a cikin aikin ku daban, raba ƙwarewar ku a cikin sharhi.
1. Gwaje-gwaje da kansu
Ƙirƙiri sabon reshen aikin don gwaje-gwajen UI:
$ git checkout develop
$ git pull
$ git checkout -b “feature/add-ui-tests”
Bari mu buɗe aikin a cikin XCode kuma mu ƙirƙiri sabon Target tare da gwaje-gwajen UI [XCode -> Fayil -> Sabon -> Target -> Tsarin Gwajin iOS], yana ba shi sunan bayanin kansa AmazingAppUITests.
Jeka sashin Gina Matakan da aka ƙirƙira na Target ɗin da aka ƙirƙira kuma bincika kasancewar Dogaran Target - AmazingApp, cikin Tushen Haɗa - AmazingAppUITests.swift.
Kyakkyawan aiki shine raba zaɓuɓɓukan gini daban-daban zuwa Tsari daban-daban. Mun ƙirƙiri makirci don gwajin UI ɗin mu [XCode -> Samfura -> Tsarin -> Sabon Tsari] kuma muna ba shi suna iri ɗaya: AmazingAppUITests.
Gina tsarin da aka ƙirƙira dole ne ya haɗa da Target na babban aikace-aikacen - AmazingApp da gwajin UI na Target - AmazingAppUITests - duba hoton allo.
Na gaba, muna ƙirƙiri sabon tsarin gini don gwaje-gwajen UI. A cikin XCode, danna kan fayil ɗin aikin kuma je zuwa sashin Bayani. Danna "+" kuma ƙirƙirar sabon tsari, misali XCtest. Za mu buƙaci wannan a nan gaba don guje wa rawa da tambourine idan ana maganar sa hannu ta lamba.
Akwai aƙalla Manufa guda uku a cikin aikinku: babban aikace-aikacen, gwaje-gwajen naúrar (bayan duka, sun wanzu, daidai?) Da kuma gwajin UI na Target da muka ƙirƙira.
Je zuwa Target AmazingApp, Gina Saituna tab, Sashen Sa hannu na Code. Don daidaitawar XCtest, zaɓi iOS Developer. A cikin Salon Sa hannu na Code, zaɓi Manual. Har yanzu ba mu ƙirƙiro bayanin martaba ba tukuna, amma tabbas za mu dawo cikinsa kaɗan kaɗan.
Don Target AmazingAppUITests muna yin haka, amma a cikin ginshiƙi Mai Gano Bundle Mun shigar da com.company.amazingappuitests.
2. Kafa wani aiki a cikin Apple Developer Program
Jeka shafin Shirye-shiryen Haɓaka Apple, je zuwa sashin Takaddun shaida, Masu Gano & Bayanan martaba sannan zuwa ginshiƙin ID na App na abubuwan Gano. Ƙirƙiri sabon ID na App mai suna AmazingAppUITests da bundleID com.company.amazingappuitests.
Yanzu muna da damar sanya hannu kan gwaje-gwajenmu tare da takardar shaidar daban, amma ... Hanyar haɗa ginin don gwaji ya haɗa da haɗa aikace-aikacen kanta da kuma haɗa mai tseren gwaji. Saboda haka, muna fuskantar matsalar sanya hannu kan budle ID guda biyu tare da bayanan bayarwa guda ɗaya. Abin farin ciki, akwai mafita mai sauƙi kuma kyakkyawa - Wildcard App ID. Muna maimaita hanya don ƙirƙirar sabon ID na App, amma maimakon Bayyanar ID na App, zaɓi Wildcard App ID kamar yadda yake a cikin hoton allo.
A wannan gaba, mun gama aiki tare da developer.apple.com, amma ba za mu rage girman tagar mai bincike ba. Muje zuwa
Mai karatu mai hankali ya lura cewa don amfani da wannan kayan aiki za mu buƙaci wurin ajiyar sirri da asusu tare da samun dama ga duka Shirin Haɓaka Apple da Github. Mun ƙirƙira (idan ba zato ba tsammani babu irin wannan) asusu na tsari [email kariya], fito da kalmar sirri mai ƙarfi, yi rijista da developer.apple.com, kuma sanya shi a matsayin mai gudanar da aikin. Bayan haka, muna ba da asusun samun dama ga ma'ajiyar github na kamfanin ku kuma muna ƙirƙirar sabon ma'ajiyar sirri mai suna kamar AmazingAppMatch.
3. Saita Fastlane da kayan amfani
Bude tasha, je zuwa babban fayil tare da aikin kuma fara fastlane kamar yadda aka nuna a ciki
$ fastlane init
Za a umarce ku don zaɓar saitunan amfani da ke akwai. Zaɓi zaɓi na huɗu - saitin aikin hannu.
Aikin yana da sabon directory fastlane, wanda ya ƙunshi fayiloli guda biyu - Appfile da Fastfile. A takaice, muna adana bayanan sabis a cikin Appfile, kuma muna rubuta ayyuka a cikin Fastfile, wanda ake kira layi a cikin kalmomin Fastlane. Ina ba da shawarar karanta takaddun hukuma:
Bude Appfile a cikin editan rubutu da kuka fi so kuma kawo shi zuwa tsari mai zuwa:
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
Mun koma tashar tashar kuma bisa ga jagorar hukuma za mu fara saita wasa.
$ fastlane match init
$ fastlane match development
Na gaba, shigar da bayanan da aka nema - ma'ajiyar ajiya, asusu, kalmar sirri, da sauransu.
Yana da muhimmanci a: Lokacin da kuka fara ƙaddamar da kayan aikin wasan, za a umarce ku da ku shigar da kalmar sirri don ɓoye ma'ajiyar. Yana da matukar mahimmanci don adana wannan kalmar sirri; za mu buƙaci sa yayin kafa uwar garken CI!
Wani sabon fayil ya bayyana a cikin babban fayil ɗin fastlane - Matchfile. Bude shi a cikin editan rubutu da kuka fi so kuma nuna shi kamar haka:
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
Muna cika shi daidai ta wannan hanya idan muna son amfani da wasa a nan gaba don sanya hannu kan ginin don nunawa a cikin Crashlytics da/ko AppStore, wato, don sanya hannu kan budle ID na aikace-aikacenku.
Amma, kamar yadda muke tunawa, mun ƙirƙiri ID na Wildcard na musamman don sanya hannu kan ginin gwajin. Don haka, buɗe Fastfile kuma shigar da sabon layi:
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests" # создаем отдельный бранч для development сертификата для подписи тестовой сборки.
)
end
Ajiye kuma shiga cikin tashar tashar
fastlane testing_build_for_firebase
kuma mun ga yadda fastlane ya ƙirƙiri sabon takaddun shaida kuma ya sanya shi a cikin ma'ajin. Mai girma!
Bude XCode. Yanzu muna da mahimman bayanan samar da tsari na kamfanin Match Development com.*, wanda dole ne a keɓance shi a cikin sashin bayanan Samar da maƙasudin AmazingApp da AmazingAppUITests.
Ya rage don ƙara layi don haɗa gwaje-gwaje. Muje zuwa
Bari mu kwafa-manna daga ainihin misali domin hanyar gwajin_build_for_firebase ta ƙare kamar haka:
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
Don cikakken bayani game da kafa fastlane a CircleCI, Ina ba da shawarar karanta takaddun hukuma
Kar a manta da ƙara sabon ɗawainiya zuwa ga config.yml:
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. Game da bencin gwajin mu fa? Saita Firebase.
Bari mu sauka ga abin da aka rubuta labarin.
Wataƙila app ɗinku yana amfani da Firebase akan shirin kyauta, ko wataƙila a'a kwata-kwata. Babu cikakkiyar bambanci mai mahimmanci, saboda don buƙatun gwaji za mu iya ƙirƙirar aikin daban tare da shekara ta amfani da kyauta (sanyi, daidai?)
Muna shiga asusun kayan aikin mu (ko wani, ba kome), kuma je zuwa
Yana da muhimmanci a: A mataki na baya a cikin Fastfile a layin firebase_test_lab_ios_xctest ma'aunin gcp_project yakamata ya dace da sunan aikin.
Saitunan tsoho sun dace da mu sosai.
Kar a rufe shafin, yi rajista a ƙarƙashin asusu ɗaya a ciki
Google yana ba da dala 300 na shekara guda, wanda a cikin mahallin yin gwajin atomatik daidai yake da shekara ta amfani da sabis ɗin kyauta. Muna shigar da bayanin biyan ku, jira gwajin zare na $1 kuma mu karɓi $300 zuwa asusunku. Bayan shekara guda, aikin za a canza shi ta atomatik zuwa tsarin jadawalin kuɗin fito, don haka babu buƙatar damuwa game da yiwuwar asarar kuɗi.
Bari mu koma shafin tare da aikin Firebase kuma mu canza shi zuwa tsarin jadawalin kuɗin fito na Blaze - yanzu muna da abin da za mu biya idan an wuce iyaka.
A cikin mahallin gcloud, zaɓi aikin Firebase ɗinmu, zaɓi babban abin menu na "Directory" kuma ƙara API ɗin Gwajin Gajimare da Cloud Tools Result API.
Sannan je zuwa abin menu "IAM and Administration" -> Asusun sabis -> Ƙirƙiri asusun sabis. Muna ba da haƙƙoƙin gyara aikin.
Ƙirƙiri maɓallin API a tsarin JSON
Za mu buƙaci zazzagewar JSON kaɗan daga baya, amma a yanzu za mu yi la'akari da saitin Lab ɗin Gwajin cikakke.
5. Saita CircleCI
Tambaya mai ma'ana ta taso - menene za a yi da kalmomin shiga? Tsarin canjin yanayi na injin ginin mu zai taimaka mana adana kalmomin shiga da sauran bayanai masu mahimmanci. A cikin saitunan aikin CircleCI, zaɓi Canjin Muhalli
Kuma saita masu canji masu zuwa:
- maɓalli: GOOGLE_APPLICATION_CREDENTIALS
darajar: abun ciki na fayil json na maɓallin asusun sabis na gcloud - key: MATCH_PASSWORD
darajar: kalmar sirri don ɓoye ma'ajin github tare da takaddun shaida - key: FASTLANE_PASSWORD
darajar: Apple Developer Portal kayayyakin more rayuwa kalmar sirri lissafi
Muna adana canje-canje, ƙirƙirar PR kuma aika shi zuwa jagorar ƙungiyarmu don bita.
Sakamakon
Sakamakon waɗannan gyare-gyare masu sauƙi, mun sami kyakkyawan aiki, tsayayye na aiki tare da ikon yin rikodin bidiyo akan allon na'urar a lokacin gwaji. A cikin misalin gwajin, na ƙayyade samfurin na'urar iPhone X, amma gonar tana ba da zaɓi mai kyau daga haɗuwa da nau'i daban-daban da nau'ikan iOS.
Za a keɓance kashi na biyu zuwa mataki-mataki saitin gwajin gwajin Firebase don aikin Android.
source: www.habr.com