Nire izena Dmitry da, probatzaile gisa lan egiten dut enpresan
Hau baino lehen, Firebase Test Lab Android-erako probatu nuen eta dena asko gustatu zitzaidan, beraz, proiektuaren iOS probaren azpiegitura parean jartzen saiatzea erabaki nuen. Googlen asko egin behar izan nuen eta dena ez zen lehen aldiz ondo atera, beraz, oraindik borrokan daudenentzat tutorial artikulu bat idaztea erabaki nuen.
Beraz, iOS proiektu batean UI probak badituzu, dagoeneko saia zaitezke gailu errealetan exekutatzen gaur, Good Corporation-ek adeitasunez emandako. Interesa dutenentzat, ongi etorri cat.
Istorioan, hasierako datu batzuetan eraikitzea erabaki nuen: GitHub-en biltegi pribatu bat eta CircleCI eraikitzeko sisteman. Aplikazioaren izena AmazingApp da, bundleID com.company.amazingapp da. Datu hauek berehala aurkezten ditut ondorengo nahasmena murrizteko.
Zure proiektuan irtenbide batzuk modu ezberdinean ezarri badituzu, partekatu zure esperientzia iruzkinetan.
1. Probak beraiek
Sortu proiektu-adar berri bat UI probetarako:
$ git checkout develop
$ git pull
$ git checkout -b βfeature/add-ui-testsβ
Ireki dezagun proiektua XCode-n eta sortu Target berri bat UI probekin [XCode -> Fitxategia -> Berria -> Helburua -> iOS Testing Bundle], AmazingAppUITests izen propioa emanez.
Zoaz Sortutako Helburuko Eraikitze-faseak atalera eta egiaztatu Target Dependencies - AmazingApp, Konpilatu iturriak - AmazingAppUITests.swift-en.
Praktika on bat eraikuntza-aukera desberdinak eskema bereizietan bereiztea da. Gure UI probetarako eskema bat sortzen dugu [XCode -> Produktua -> Eskema -> Eskema berria] eta izen bera ematen diogu: AmazingAppUITests.
Sortutako eskemaren eraikuntzak aplikazio nagusiaren Helburua izan behar du - AmazingApp eta Target UI probak - AmazingAppUITests - ikusi pantaila-argazkia
Ondoren, konfigurazio konfigurazio berri bat sortzen dugu UI probetarako. XCode-n, egin klik proiektuaren fitxategian eta joan Informazio atalera. Egin klik "+"-n eta sortu konfigurazio berri bat, adibidez XCtest. Hori beharko dugu aurrerantzean, kodea sinatzeko orduan panderoarekin dantza egitea saihesteko.
Zure proiektuan gutxienez hiru Helburu daude: aplikazio nagusia, unitate-probak (azken finean, existitzen dira, ezta?) eta guk sortutako Target UI probak.
Joan Target AmazingApp, Eraikitzeko ezarpenak fitxara, Kode sinaduraren identitatea atalera. XCtest konfiguraziorako, hautatu iOS Developer. Kode sinadura estiloa atalean, hautatu Eskuliburua. Oraindik ez dugu hornidura-profilik sortu, baina, zalantzarik gabe, beranduago itzuliko gara.
Target AmazingAppUITests-etarako gauza bera egiten dugu, baina Product Bundle Identifier zutabean com.company.amazingappuitests sartzen dugu.
2. Apple Developer Program-en proiektu bat konfiguratzea
Joan Apple Developer Program orrira, joan Ziurtagiriak, Identifikatzaileak eta Profilak atalera eta ondoren Identifikatzaileak elementuko Aplikazioen IDak zutabera. Sortu AmazingAppUITests eta bundleID com.company.amazingappuitests izeneko aplikazioaren ID berria.
Orain gure probak ziurtagiri bereizi batekin sinatzeko aukera dugu, baina... Probetarako build bat muntatzeko prozedurak aplikazioa bera muntatu eta test runner muntatzea dakar. Horrenbestez, hornidura-profil batekin bi sorta ID sinatzeko arazoaren aurrean gaude. Zorionez, irtenbide sinple eta dotore bat dago: Wildcard App ID. Aplikazioaren ID berria sortzeko prozedura errepikatzen dugu, baina Aplikazioaren ID esplizituaren ordez, hautatu Komodinen Aplikazioaren IDa pantaila-argazkian bezala.
Une honetan, developer.apple.com-ekin lanean amaitu dugu, baina ez dugu arakatzailearen leihoa minimizatuko. Goazen
Irakurle adi batek konturatu zuen erabilgarritasun hau erabiltzeko biltegi pribatu bat eta Apple Developer Programarako eta Githuberako sarbidea duen kontu bat beharko dugula. Sortzen dugu (bat-batean horrelakorik ez badago) formako kontu bat [posta elektroniko bidez babestua], asmatu pasahitz sendo bat, erregistratu developer.apple.com helbidean eta izendatu proiektuko administratzaile gisa. Ondoren, kontuari sarbidea ematen diogu zure konpainiaren github biltegirako eta biltegi pribatu berri bat sortzen dugu AmazingAppMatch bezalako izen batekin.
3. Fastlane eta partida-erabilgarritasuna konfiguratzea
Ireki terminal bat, joan proiektua duen karpetara eta hasieratu fastlane atalean adierazitako moduan
$ fastlane init
Eskuragarri dauden erabilera-konfigurazioak hautatzeko eskatuko zaizu. Hautatu laugarren aukera - eskuzko proiektuaren konfigurazioa.
Proiektuak fastlane direktorio berri bat du, bi fitxategi dituena - Appfile eta Fastfile. Laburbilduz, zerbitzu-datuak Appfile-n gordetzen ditugu eta lanak Fastfile-n idazten ditugu, Fastlane terminologian bideak deitzen direnak. Dokumentazio ofiziala irakurtzea gomendatzen dut:
Ireki Appfile zure gogoko testu-editorean eta ekarri formulario honetara:
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
Terminalera itzuliko gara eta eskuliburu ofizialaren arabera partida konfiguratzen hasiko gara.
$ fastlane match init
$ fastlane match development
Ondoren, sartu eskatutako datuak - biltegia, kontua, pasahitza, etab.
Garrantzitsua: Bat-etortze-utilitatea abiarazten duzunean, biltegia deszifratzeko pasahitz bat sartzeko eskatuko zaizu. Oso garrantzitsua da pasahitz hau gordetzea; behar izango dugu CI zerbitzaria konfiguratzerakoan!
Fitxategi berri bat agertu da fastlane karpetan - Matchfile. Ireki zure gogoko testu-editorean eta bistaratu honela:
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
Zehazki horrela betetzen dugu etorkizunean match-a erabili nahi badugu Crashlytics eta/edo AppStore-n bistaratzeko eraikuntzak sinatzeko, hau da, zure aplikazioaren sorta IDa sinatzeko.
Baina, gogoratzen dugunez, Komodin ID berezi bat sortu genuen probaren eraikuntza sinatzeko. Beraz, ireki Fastfile eta sartu bide berri bat:
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests" # ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π±ΡΠ°Π½Ρ Π΄Π»Ρ development ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ.
)
end
Gorde eta sartu terminalean
fastlane testing_build_for_firebase
eta ikusten dugu nola fastlane-k ziurtagiri berri bat sortu eta biltegian jartzen duen. Bikaina!
Ireki XCode. Orain, Match Development com.company.* inprimakiaren hornidura-profila dugu, AmazingApp eta AmazingAppUITests helburuetarako Horniketa-profila atalean zehaztu behar dena.
Probak muntatzeko erreia gehitzea geratzen da. Goazen
Egin dezagun kopiatu-itsatsi jatorrizko adibidetik, gure lane testing_build_for_firebase honela geratu dadin:
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
Fastlane CircleCI-n konfiguratzeari buruzko informazio osoa lortzeko, dokumentazio ofiziala irakurtzea gomendatzen dut
Ez ahaztu zeregin berri bat gehitzea gure config.yml-ra:
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. Zer gertatzen da gure proba-bankua? Firebase konfiguratzen.
Goazen artikulua zertarako idatzi zen.
Agian zure aplikazioak Firebase doako plan batean erabiltzen du, edo agian ez. Ez dago erabateko desberdintasunik, probak egiteko beharretarako proiektu bereizi bat sor dezakegulako urtebeteko erabilera librearekin (gozoa, ezta?)
Gure azpiegitura-kontuan sartzen gara (edo beste edozeinetan, berdin dio), eta bertara joaten gara
Garrantzitsua: Firebase_test_lab_ios_xctest-eko Fastfileko aurreko urratsean gcp_project parametroak proiektuaren izenarekin bat etorri behar du.
Ezarpen lehenetsiak nahiko ondo egokitzen zaizkigu.
Ez itxi fitxa, erregistratu kontu berean
Google-k 300 dolar ematen ditu urtebeterako, hau da, autotestak egitearen testuinguruan, zerbitzua doan erabiltzeko urtebeteko baliokidea da. Zure ordainketa-informazioa sartzen dugu, $ 1eko probaren zordunketa itxaron eta $ 300 jasoko ditugu zure kontuan. Urtebete igaro ondoren, proiektua automatikoki transferituko da doako tarifa-plan batera, beraz, ez dago diru-galera posibleez kezkatu beharrik.
Itzul gaitezen Firebase proiektuaren fitxara eta transferi dezagun Blaze tarifa-planera - orain muga gainditzen bada zerbait ordaindu behar dugu.
gcloud interfazean, hautatu gure Firebase proiektua, hautatu "Directorio" menu nagusia elementua eta gehitu Cloud Testing API eta Cloud Tools Result API.
Ondoren, joan "IAM eta administrazioa" menu-elementura -> Zerbitzu-kontuak -> Sortu zerbitzu-kontua. Proiektua editatzeko eskubideak ematen ditugu.
Sortu API gako bat JSON formatuan
Deskargatutako JSON pixka bat geroago beharko dugu, baina oraingoz Test Lab konfigurazioa amaitutzat joko dugu.
5. CircleCI konfiguratzea
Arrazoizko galdera bat sortzen da - zer egin pasahitzekin? Gure eraikuntza-makinaren ingurune-aldagaiak gure pasahitzak eta beste datu sentikorrak modu seguruan gordetzen lagunduko digu. CircleCI proiektuaren ezarpenetan, hautatu Inguruneko aldagaiak
Eta ezarri aldagai hauek:
- gakoa: GOOGLE_APPLICATION_CREDENTIALS
balioa: gcloud zerbitzuko kontuaren gakoaren json fitxategiaren edukia - gakoa: MATCH_PASSWORD
balioa: github biltegia ziurtagiriekin deszifratzeko pasahitza - gakoa: FASTLANE_PASSWORD
balioa: Apple Developer Portal azpiegitura kontuaren pasahitza
Aldaketak gordetzen ditugu, PR bat sortzen dugu eta gure taldeko arduradunari bidaltzen diogu berrikus dezan.
Emaitzak
Manipulazio sinple horien ondorioz, laneko stand on eta egonkor bat jaso genuen, probak egiteko garaian bideoa gailuaren pantailan grabatzeko gaitasuna duena. Proba adibidean, iPhone X gailuaren eredua zehaztu nuen, baina baserriak aukeraketa aberatsa eskaintzen du modelo ezberdinen eta iOS bertsioen konbinazio batetik.
Bigarren zatia Android proiektu baterako Firebase Test Lab-en urratsez urrats konfiguratzera bideratuko da.
Iturria: www.habr.com