Dmitry no anarako, miasa toy ny tester ao amin'ny orinasa aho
Talohan'izay, efa nanandrana Firebase Test Lab ho an'ny Android aho ary tena tiako ny zava-drehetra, ka nanapa-kevitra ny hanandrana hametraka ny fotodrafitrasa fitsapana iOS amin'ny tetikasa aho. Tsy maintsy nanao Google be dia be aho ary tsy nahomby ny zava-drehetra tamin'ny voalohany, ka nanapa-kevitra ny hanoratra lahatsoratra fampianarana ho an'ireo izay mbola sahirana aho.
Noho izany, raha manana fitsapana UI amin'ny tetikasa iOS ianao, dia afaka manandrana mihazakazaka azy ireo amin'ny fitaovana tena izy ankehitriny, nomen'ny Good Corporation. Ho an'izay liana dia tongasoa eto amin'ny saka.
Tao anatin'ny tantara dia nanapa-kevitra ny hanangana angon-drakitra voalohany aho - tahiry manokana ao amin'ny GitHub sy ny rafitra fananganana CircleCI. AmazingApp ny anarana fampiharana, bundleID dia com.company.amazingapp. Atolotro avy hatrany ity angon-drakitra ity mba hampihenana ny fisafotofotoana manaraka.
Raha nampihatra vahaolana sasany tao amin'ny tetikasanao ianao dia zarao amin'ny fanehoan-kevitra ny traikefanao.
1. Ny fitsapana mihitsy
Mamorona sampana tetikasa vaovao ho an'ny fitsapana UI:
$ git checkout develop
$ git pull
$ git checkout -b βfeature/add-ui-testsβ
Andao hanokatra ny tetikasa ao amin'ny XCode ary mamorona Target vaovao miaraka amin'ny fitsapana UI [XCode -> File -> New -> Target -> iOS Testing Bundle], manome azy ny anarana manazava tena AmazingAppUITests.
Mandehana any amin'ny fizarana Build Phases amin'ny Target noforonina ary jereo ny fisian'ny Target Dependencies - AmazingApp, ao amin'ny Compile Sources - AmazingAppUITests.swift.
Ny fomba fanao tsara dia ny manasaraka ireo safidy fananganana samihafa ho Tetika samihafa. Mamorona drafitra ho an'ny fitsapana UI izahay [XCode -> Product -> Scheme -> New Scheme] ary manome azy io anarana mitovy: AmazingAppUITests.
Ny fananganana ny drafitra noforonina dia tsy maintsy ahitana ny Tanjona amin'ny fampiharana lehibe - AmazingApp sy Target UI fitsapana - AmazingAppUITests - jereo ny pikantsary
Manaraka izany dia mamorona tefy fananganana vaovao ho an'ny fitsapana UI izahay. Ao amin'ny XCode, tsindrio ny rakitra tetikasa ary mandehana any amin'ny fizarana Info. Tsindrio eo amin'ny "+" ary mamorona fanovana vaovao, ohatra XCtest. Mila izany isika amin'ny ho avy mba hialana amin'ny dihy amin'ny ampongatapaka amin'ny fanaovana sonia kaody.
Misy Tanjona telo farafahakeliny ao amin'ny tetikasanao: ny fampiharana lehibe, ny andrana vondrona (rehefa misy izy ireo, sa tsy izany?) ary ny andrana Target UI noforoninay.
Mandehana any amin'ny Target AmazingApp, Build Settings tab, Code Signing Identity section. Ho an'ny fanamafisana XCtest, mifidiana iOS Developer. Ao amin'ny fizarana Code Signing Style, mifidiana Manual. Tsy mbola namorona ny mombamomba ny famatsiana izahay, fa tena hiverina amin'izany izahay aoriana kely.
Ho an'ny Target AmazingAppUITests dia manao toy izany koa izahay, fa ao amin'ny tsanganana Product Bundle Identifier dia miditra amin'ny com.company.amazingappuitests izahay.
2. Mametraka tetikasa ao amin'ny Apple Developer Program
Mandehana any amin'ny pejy Apple Developer Program, mandehana any amin'ny fizarana Certificates, Identifiers & Profiles ary avy eo amin'ny tsanganana App IDs amin'ny Identifiers. Mamorona ID App vaovao antsoina hoe AmazingAppUITests sy bundleID com.company.amazingappuitests.
Amin'izao fotoana izao isika dia manana fahafahana hanao sonia ny fitsapana amin'ny alalan'ny taratasy fanamarinana manokana, fa ... Ny dingana amin'ny fanangonana trano ho an'ny fitsapana dia ny fanangonana ny fampiharana sy ny fanangonana ny mpihazakazaka fitsapana. Noho izany, miatrika olana amin'ny fanasoniavana karapanondro roa miaraka amin'ny mombamomba ny provision iray izahay. Soa ihany fa misy vahaolana tsotra sy kanto - Wildcard App ID. Averinay ny fomba hamoronana ID App vaovao, fa raha tokony ho ID App Explicit, safidio ny ID App Wildcard toy ny eo amin'ny pikantsary.
Amin'izao fotoana izao dia vita ny fiaraha-miasa amin'ny developer.apple.com, saingy tsy hanamaivana ny varavarankelin'ny navigateur izahay. Andao ho any
Mpamaky malina iray nahatsikaritra fa ny fampiasana an'io fitaovana io dia mila tahiry manokana sy kaonty misy fidirana amin'ny Apple Developer Program sy Github. Mamorona (raha tsy misy tampoka) kaonty momba ny endrika [email voaaro], mamorona tenimiafina matanjaka, misoratra anarana amin'ny developer.apple.com, ary tendreo ho mpitantana tetikasa. Manaraka izany dia omenay ny fidirana amin'ny tranokala github an'ny orinasanao ny kaonty ary mamorona tahiry manokana vaovao miaraka amin'ny anarana toa an'i AmazingAppMatch.
3. Fametrahana Fastlane sy ny fampitaovana lalao
Sokafy ny terminal, mandehana any amin'ny lahatahiry miaraka amin'ny tetikasa ary manomboka ny fastlane araka ny voalaza ao
$ fastlane init
Asaina ianao hisafidy ny fampiasa ampiasaina. Safidio ny safidy fahefatra - fanamboarana tetikasa manual.
Ny tetikasa dia manana lahatahiry fastlane vaovao, izay misy rakitra roa - Appfile sy Fastfile. Raha fintinina dia mitahiry angon-drakitra momba ny serivisy ao amin'ny Appfile izahay, ary manoratra asa ao amin'ny Fastfile, antsoina hoe lanes amin'ny teny Fastlane. Manoro hevitra aho hamaky ny antontan-taratasy ofisialy:
Sokafy ny Appfile amin'ny tonian-dahatsoratra tianao indrindra ary ento amin'ity endrika manaraka ity:
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
Miverina any amin'ny terminal izahay ary araka ny boky ofisialy dia manomboka manamboatra lalao.
$ fastlane match init
$ fastlane match development
Avy eo, ampidiro ny angona angatahina - tahiry, kaonty, tenimiafina, sns.
Zava-dehibe ny: Rehefa manomboka ny fampitaovana lalao ianao, dia angatahina ianao hampiditra tenimiafina hamadika ny tahiry. Tena zava-dehibe ny mitahiry ity tenimiafina ity; mila izany izahay rehefa manangana ny mpizara CI!
Nisy rakitra vaovao niseho tao amin'ny lahatahiry fastlane - Matchfile. Sokafy amin'ny tonian-dahatsoratra tianao indrindra ary asehoy toy izao:
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
Toy izao no fenoinay izany raha te hampiasa lalao amin'ny ho avy izahay hanasonia fananganana ho aseho ao amin'ny Crashlytics sy/na AppStore, izany hoe hanasonia ny ID fehezin'ny fampiharanao.
Saingy, araka ny tsaroanay, namorona ID Wildcard manokana izahay hanasonia ny fananganana fitsapana. Noho izany, sokafy ny Fastfile ary midira lalana vaovao:
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests" # ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π±ΡΠ°Π½Ρ Π΄Π»Ρ development ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ.
)
end
Tehirizo ary midira ao amin'ny terminal
fastlane testing_build_for_firebase
ary hitantsika ny fomba namoronan'i fastlane taratasy fanamarinana vaovao ary napetrany tao amin'ny tahiry. Mahafinaritra!
Sokafy ny XCode. Ankehitriny dia manana ny mombamomba ny famatsiana ilaina amin'ny endrika Match Development com.company izahay.*, izay tsy maintsy voafaritra ao amin'ny fizarana mombamomba ny provisioning ho an'ny tanjona AmazingApp sy AmazingAppUITests.
Mbola ilaina ny manampy lalana ho an'ny fitsapana fanangonana. Andao ho any
Andao handika-mametaka avy amin'ny ohatra tany am-boalohany mba hahatonga ny lane testing_build_for_firebase ho toy izao:
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
Raha mila fampahalalana feno momba ny fametrahana fastlane ao amin'ny CircleCI dia manoro hevitra aho hamaky ny antontan-taratasy ofisialy
Aza adino ny manampy asa vaovao amin'ny 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. Ahoana ny momba ny dabilio fitsapana? Fametrahana Firebase.
Andeha hojerentsika hoe inona no nanoratana ilay lahatsoratra.
Angamba mampiasa Firebase amin'ny drafitra maimaim-poana ny fampiharanao, na mety tsy izany mihitsy. Tsy misy fahasamihafana fototra mihitsy, satria ho an'ny filΓ na fitsapana dia afaka mamorona tetikasa mitokana miaraka amin'ny taona fampiasana maimaim-poana (mangatsiaka, sa tsy izany?)
Midira ao amin'ny kaontintsika fotodrafitrasa (na hafa, tsy maninona izany), ary mandehana any
Zava-dehibe ny: Ao amin'ny dingana teo aloha ao amin'ny Fastfile amin'ny lane firebase_test_lab_ios_xctest ny gcp_project parameter dia tokony hifanaraka amin'ny anaran'ny tetikasa.
Ny firafitry ny default dia mifanaraka tsara aminay.
Aza manakatona ny tabilao, misoratra anarana amin'ny kaonty mitovy amin'ny
Manome $300 isan-taona i Google, izay ao anatin'ny tontolon'ny fanaovana autotest dia mitovy amin'ny taona fampiasana maimaim-poana ny serivisy. Ampidiro ny fampahalalana momba ny fandoavanao, miandry ny fandoavana andrana $1 ary mahazo $300 ao amin'ny kaontinao. Aorian'ny herintaona dia hafindra ho azy amin'ny drafitrasa maimaim-poana ny tetikasa, noho izany dia tsy ilaina ny manahy momba ny mety ho fahaverezan'ny vola.
Andao hiverina amin'ny tabilao miaraka amin'ny tetikasa Firebase ary hamindra izany amin'ny drafitry ny vidin'ny Blaze - manana zavatra tokony haloana isika izao raha mihoatra ny fetra.
Ao amin'ny interface gcloud, safidio ny tetikasa Firebase, safidio ny singa fototra "Directory" ary ampio ny Cloud Testing API sy Cloud Tools Result API.
Avy eo dia mandehana any amin'ny sakafo "IAM sy fitantanana" -> Kaonty serivisy -> Mamorona kaonty serivisy. Omenay zo hanova ny tetikasa.
Mamorona fanalahidy API amin'ny endrika JSON
Mila ny JSON alaina vetivety izahay, fa amin'izao fotoana izao dia hodinihintsika ny fametrahana ny Test Lab.
5. Fametrahana CircleCI
Mipoitra ny fanontaniana mitombina - inona no atao amin'ny tenimiafina? Ny mekanika miovaova amin'ny tontolo iainana amin'ny milina fanamboarana dia hanampy antsika hitahiry ny tenimiafinay sy angona saropady hafa. Ao amin'ny sehatry ny tetikasa CircleCI, mifidiana Variables Environment
Ary amboary ireto variables manaraka ireto:
- fanalahidy: GOOGLE_APPLICATION_CREDENTIALS
sanda: ao anatin'ny rakitra json an'ny fanalahidin'ny kaonty serivisy gcloud - fanalahidy: MATCH_PASSWORD
sanda: tenimiafina amin'ny famongorana ny tahiry github miaraka amin'ny fanamarinana - fanalahidy: FASTLANE_PASSWORD
sanda: tenimiafina kaonty fotodrafitrasa Apple Developer Portal
Mitahiry ny fanovana izahay, mamorona PR ary mandefa izany any amin'ny mpitarika ny ekipanay hojerena.
vokatra
Vokatr'ireo fanodinkodinana tsotra ireo dia nahazo toeram-piasana tsara sy azo antoka izahay miaraka amin'ny fahafahana mirakitra horonantsary amin'ny efijery amin'ny fitaovana amin'ny fotoana fitsapana. Ao amin'ny ohatra fitsapana dia nanondro ny modely fitaovana iPhone X aho, fa ny toeram-pambolena dia manome safidy manankarena avy amin'ny fitambaran'ny modely samihafa sy ny dikan-iOS.
Ny ampahany faharoa dia natokana ho an'ny fametrahana tsikelikely ny Firebase Test Lab ho an'ny tetikasa Android.
Source: www.habr.com