Jina langu ni Dmitry, ninafanya kazi kama tester katika kampuni
Kabla ya hili, nilikuwa tayari nimejaribu Maabara ya Majaribio ya Firebase ya Android na nilipenda sana kila kitu, kwa hivyo niliamua kujaribu kuweka miundombinu ya majaribio ya mradi huo kwa msingi sawa. Ilinibidi Google sana na sio kila kitu kilifanya kazi mara ya kwanza, kwa hivyo niliamua kuandika nakala ya mafunzo kwa wale ambao bado wanatatizika.
Kwa hivyo, ikiwa una majaribio ya UI kwenye mradi wa iOS, unaweza tayari kujaribu kuyaendesha kwenye vifaa halisi leo, vilivyotolewa na Good Corporation. Kwa wale wanaopenda, karibu kwa paka.
Katika hadithi, niliamua kujenga juu ya data ya awali - hazina ya kibinafsi kwenye GitHub na mfumo wa kujenga wa CircleCI. Jina la programu ni AmazingApp, bundleID ni com.company.amazingapp. Ninawasilisha data hii mara moja ili kupunguza mkanganyiko unaofuata.
Ikiwa ulitekeleza masuluhisho fulani katika mradi wako kwa njia tofauti, shiriki uzoefu wako katika maoni.
1. Vipimo vyenyewe
Unda tawi jipya la mradi kwa majaribio ya UI:
$ git checkout develop
$ git pull
$ git checkout -b βfeature/add-ui-testsβ
Wacha tufungue mradi katika XCode na tuunde Lengo jipya na majaribio ya UI [XCode -> Faili -> Mpya -> Lengo -> Kifungu cha Majaribio cha iOS], tukiipa jina la kujieleza la AmazingAppUITests.
Nenda kwenye sehemu ya Kuunda Awamu ya Lengo lililoundwa na uangalie uwepo wa Mategemeo Yanayolengwa - AmazingApp, katika Kukusanya Vyanzo - AmazingAppUITests.swift.
Mbinu nzuri ni kutenganisha chaguzi tofauti za ujenzi katika Miradi tofauti. Tunaunda mpango wa majaribio yetu ya UI [XCode -> Bidhaa -> Mpango -> Mpango Mpya] na kuupa jina sawa: AmazingAppUITests.
Muundo wa mpango ulioundwa lazima ujumuishe Lengo la programu kuu - Vipimo vya AmazingApp na Target UI - AmazingAppUITests - tazama picha ya skrini
Kisha, tunaunda usanidi mpya wa muundo wa majaribio ya UI. Katika XCode, bonyeza kwenye faili ya mradi na uende kwenye sehemu ya Habari. Bonyeza "+" na uunda usanidi mpya, kwa mfano XCtest. Tutahitaji hii katika siku zijazo ili kuepuka kucheza na tari linapokuja suala la kutia saini kanuni.
Kuna Angalau Malengo matatu katika mradi wako: programu kuu, majaribio ya vipimo (baada ya yote, yapo, sivyo?) na majaribio ya UI inayolengwa tuliyounda.
Nenda kwenye Lengo la KushangazaApp, kichupo cha Mipangilio ya Kujenga, sehemu ya Utambulisho wa Kusaini Msimbo. Kwa usanidi wa XCtest, chagua Msanidi Programu wa iOS. Katika sehemu ya Mtindo wa Kusaini Msimbo, chagua Mwongozo. Bado hatujatoa maelezo mafupi ya utoaji, lakini bila shaka tutayarejea baadaye kidogo.
Kwa Malengo ya AmazingAppUITests tunafanya vivyo hivyo, lakini katika safu wima ya Kitambulishi cha Bidhaa Bundle tunaweka com.company.amazingappuitests.
2. Kuanzisha mradi katika Programu ya Wasanidi Programu wa Apple
Nenda kwenye ukurasa wa Mpango wa Wasanidi Programu wa Apple, nenda kwenye sehemu ya Vyeti, Vitambulisho na Wasifu na kisha kwenye safu wima ya Vitambulisho vya Programu ya kipengee cha Vitambulisho. Unda Kitambulisho kipya cha Programu kiitwacho AmazingAppUITests na bundleID com.company.amazingappuitests.
Sasa tuna fursa ya kusaini majaribio yetu na cheti tofauti, lakini ... Utaratibu wa kukusanya jengo kwa ajili ya kupima unahusisha kukusanya programu yenyewe na kukusanya mkimbiaji wa mtihani. Ipasavyo, tunakabiliwa na tatizo la kusaini vitambulisho viwili vya bando na wasifu mmoja wa utoaji. Kwa bahati nzuri, kuna suluhisho rahisi na la kifahari - Kitambulisho cha Programu ya Wildcard. Tunarudia utaratibu wa kuunda Kitambulisho kipya cha Programu, lakini badala ya Kitambulisho cha Programu Dhahiri, chagua Kitambulisho cha Programu ya Wildcard kama kwenye picha ya skrini.
Kwa wakati huu, tumemaliza kufanya kazi na developer.apple.com, lakini hatutapunguza dirisha la kivinjari. Twende
Msomaji makini aligundua kuwa ili kutumia shirika hili tutahitaji hazina ya faragha na akaunti yenye uwezo wa kufikia Mpango wa Wasanidi Programu wa Apple na Github. Tunaunda (ikiwa ghafla hakuna kitu kama hicho) akaunti ya fomu [barua pepe inalindwa], njoo na nenosiri thabiti, lisajili kwa developer.apple.com, na uliteue kama msimamizi wa mradi. Kisha, tunaipa akaunti ufikiaji wa hazina ya github ya kampuni yako na kuunda hazina mpya ya kibinafsi yenye jina kama AmazingAppMatch.
3. Kuweka Fastlane na matumizi ya mechi
Fungua terminal, nenda kwenye folda iliyo na mradi na uanzishe fastlane kama ilivyoonyeshwa ndani
$ fastlane init
Utaulizwa kuchagua usanidi unaopatikana wa matumizi. Chagua chaguo la nne - usanidi wa mradi wa mwongozo.
Mradi una saraka mpya ya fastlane, ambayo ina faili mbili - Appfile na Fastfile. Kwa kifupi, tunahifadhi data ya huduma katika Appfile, na kuandika kazi katika Fastfile, inayoitwa lanes katika istilahi ya Fastlane. Ninapendekeza kusoma hati rasmi:
Fungua Appfile katika kihariri chako cha maandishi unachopenda na ulete kwa fomu ifuatayo:
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
Tunarudi kwenye terminal na kulingana na mwongozo rasmi tunaanza kusanidi mechi.
$ fastlane match init
$ fastlane match development
Ifuatayo, ingiza data iliyoombwa - hazina, akaunti, nenosiri, nk.
Muhimu: Unapozindua matumizi ya mechi kwa mara ya kwanza, utaulizwa kuingiza nenosiri ili kusimbua hazina. Ni muhimu sana kuhifadhi nenosiri hili; tutalihitaji wakati wa kusanidi seva ya CI!
Faili mpya imeonekana kwenye folda ya fastlane - Matchfile. Ifungue katika kihariri chako cha maandishi unachopenda na uionyeshe kama hii:
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
Tunaijaza kwa njia hii haswa ikiwa tunataka kutumia mechi katika siku zijazo kusaini miundo ili kuonyeshwa katika Crashlytics na/au AppStore, yaani, kutia sahihi kifurushi cha kitambulisho cha programu yako.
Lakini, kama tunavyokumbuka, tuliunda kitambulisho maalum cha Wildcard ili kusaini muundo wa jaribio. Kwa hivyo, fungua Fastfile na uweke njia mpya:
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests" # ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π±ΡΠ°Π½Ρ Π΄Π»Ρ development ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ.
)
end
Hifadhi na uingie kwenye terminal
fastlane testing_build_for_firebase
na tunaona jinsi fastlane iliunda cheti kipya na kuiweka kwenye hazina. Kubwa!
Fungua XCode. Sasa tuna wasifu unaohitajika wa utoaji wa fomu ya Match Development com.company.*, ambayo lazima ibainishwe katika sehemu ya wasifu wa Utoaji kwa malengo ya AmazingApp na AmazingAppUITests.
Inabakia kuongeza njia ya kukusanya vipimo. Twende
Wacha tunakili-kubandika kutoka kwa mfano asili ili njia yetu ya kupima_build_for_firebase iishie kuonekana kama hii:
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
Kwa habari kamili kuhusu kuanzisha fastlane katika CircleCI, ninapendekeza kusoma nyaraka rasmi
Usisahau kuongeza kazi mpya kwenye config.yml yetu:
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. Vipi kuhusu benchi yetu ya majaribio? Inasanidi Firebase.
Hebu tupate chini kwa nini makala iliandikwa.
Labda programu yako inatumia Firebase kwenye mpango usiolipishwa, au labda haitumii kabisa. Hakuna tofauti ya kimsingi, kwa sababu kwa mahitaji ya majaribio tunaweza kuunda mradi tofauti na mwaka wa matumizi bila malipo (pori, sivyo?)
Tunaingia kwenye akaunti yetu ya miundombinu (au nyingine yoyote, haijalishi), na kwenda
Muhimu: Katika hatua ya awali katika Fastfile katika lane firebase_test_lab_ios_xctest parameta ya gcp_project lazima ilingane na jina la mradi.
Mipangilio ya chaguo-msingi inatufaa kabisa.
Usifunge kichupo, jiandikishe chini ya akaunti sawa
Google inatoa $300 kwa mwaka, ambayo katika muktadha wa kufanya majaribio ya kiotomatiki ni sawa na mwaka wa matumizi ya bure ya huduma. Tunaweka maelezo yako ya malipo, tusubiri kutozwa kwa majaribio ya $1 na kupokea $300 kwenye akaunti yako. Baada ya mwaka, mradi huo utahamishiwa moja kwa moja kwenye mpango wa ushuru wa bure, kwa hiyo hakuna haja ya kuwa na wasiwasi kuhusu kupoteza pesa iwezekanavyo.
Hebu turudi kwenye kichupo na mradi wa Firebase na uhamishe kwa mpango wa ushuru wa Blaze - sasa tuna kitu cha kulipa ikiwa kikomo kinazidi.
Katika kiolesura cha gcloud, chagua mradi wetu wa Firebase, chagua kipengee cha menyu kuu ya "Directory" na uongeze API ya Majaribio ya Wingu na API ya Matokeo ya Zana za Wingu.
Kisha nenda kwenye kipengee cha menyu "IAM na utawala" -> Akaunti za huduma -> Unda akaunti ya huduma. Tunatoa haki ya kuhariri mradi.
Unda kitufe cha API katika umbizo la JSON
Tutahitaji JSON iliyopakuliwa baadaye kidogo, lakini kwa sasa tutazingatia kukamilisha usanidi wa Maabara ya Majaribio.
5. Kuanzisha CircleCI
Swali la busara linatokea - nini cha kufanya na nywila? Utaratibu wa kubadilisha mazingira wa mashine yetu ya ujenzi utatusaidia kuhifadhi kwa usalama manenosiri yetu na data nyingine nyeti. Katika mipangilio ya mradi wa CircleCI, chagua Vigezo vya Mazingira
Na usanidi vigezo vifuatavyo:
- ufunguo: GOOGLE_APPLICATION_CREDENTIALS
thamani: yaliyomo kwenye faili ya json ya ufunguo wa akaunti ya huduma ya gcloud - ufunguo: MATCH_PASSWORD
thamani: nenosiri la kusimbua hazina ya github na vyeti - ufunguo: FASTLANE_PASSWORD
thamani: Nenosiri la akaunti ya akaunti ya Msanidi Programu wa Apple
Tunahifadhi mabadiliko, kuunda PR na kuituma kwa kiongozi wetu wa timu kwa ukaguzi.
Matokeo ya
Kama matokeo ya upotoshaji huu rahisi, tulipokea kazi nzuri, thabiti ya kufanya kazi na uwezo wa kurekodi video kwenye skrini ya kifaa wakati wa majaribio. Katika mfano wa jaribio, nilitaja mfano wa kifaa cha iPhone X, lakini shamba hutoa uteuzi mzuri kutoka kwa mchanganyiko wa mifano tofauti na matoleo ya iOS.
Sehemu ya pili itatolewa kwa usanidi wa hatua kwa hatua wa Maabara ya Majaribio ya Firebase kwa mradi wa Android.
Chanzo: mapenzi.com