என் பெயர் டிமிட்ரி, நான் நிறுவனத்தில் சோதனையாளராக வேலை செய்கிறேன்
இதற்கு முன், நான் ஏற்கனவே ஆண்ட்ராய்டுக்கான ஃபயர்பேஸ் சோதனை ஆய்வகத்தை முயற்சித்தேன், எல்லாவற்றையும் மிகவும் விரும்பினேன், எனவே திட்டத்தின் iOS சோதனை உள்கட்டமைப்பை அதே நிலைப்பாட்டில் வைக்க முயற்சிக்க முடிவு செய்தேன். நான் நிறைய கூகிள் செய்ய வேண்டியிருந்தது, எல்லாமே முதல் முறையாக வேலை செய்யவில்லை, எனவே இன்னும் சிரமப்படுபவர்களுக்காக ஒரு பயிற்சிக் கட்டுரையை எழுத முடிவு செய்தேன்.
எனவே, உங்களிடம் iOS திட்டப்பணியில் UI சோதனைகள் இருந்தால், குட் கார்ப்பரேஷன் வழங்கும் உண்மையான சாதனங்களில் அவற்றை இயக்க முயற்சி செய்யலாம். ஆர்வமுள்ளவர்களுக்கு, பூனைக்கு வரவேற்கிறோம்.
கதையில், சில ஆரம்ப தரவுகளை உருவாக்க முடிவு செய்தேன் - GitHub இல் ஒரு தனியார் களஞ்சியம் மற்றும் CircleCI உருவாக்க அமைப்பு. பயன்பாட்டின் பெயர் AmazingApp, bundleID என்பது com.company.amazingapp. அடுத்தடுத்த குழப்பங்களைக் குறைக்க இந்தத் தரவை உடனடியாக முன்வைக்கிறேன்.
உங்கள் திட்டத்தில் சில தீர்வுகளை நீங்கள் வித்தியாசமாக செயல்படுத்தியிருந்தால், கருத்துகளில் உங்கள் அனுபவத்தைப் பகிர்ந்து கொள்ளுங்கள்.
1. சோதனைகள் தானே
UI சோதனைகளுக்கு புதிய திட்டக் கிளையை உருவாக்கவும்:
$ git checkout develop
$ git pull
$ git checkout -b “feature/add-ui-tests”
திட்டத்தை XCode இல் திறந்து UI சோதனைகளுடன் புதிய இலக்கை உருவாக்குவோம் [XCode -> File -> New -> Target -> iOS Testing Bundle], அதற்கு AmazingAppUITests என்ற சுய விளக்கப் பெயரைக் கொடுப்போம்.
உருவாக்கப்பட்ட இலக்கின் கட்ட கட்டங்கள் பகுதிக்குச் சென்று, இலக்கு சார்புகள் - AmazingApp, Compile Sources - AmazingAppUITests.swift இல் உள்ளதா எனச் சரிபார்க்கவும்.
வெவ்வேறு உருவாக்க விருப்பங்களை தனித்தனி திட்டங்களாக பிரிப்பது ஒரு நல்ல நடைமுறை. எங்கள் UI சோதனைகளுக்கு [XCode -> Product -> Scheme -> New Scheme] ஒரு திட்டத்தை உருவாக்கி அதற்கு அதே பெயரை வழங்குகிறோம்: AmazingAppUITests.
உருவாக்கப்பட்ட திட்டத்தின் உருவாக்கம் முக்கிய பயன்பாட்டின் இலக்கை உள்ளடக்கியிருக்க வேண்டும் - AmazingApp மற்றும் Target UI சோதனைகள் - AmazingAppUITests - ஸ்கிரீன்ஷாட்டைப் பார்க்கவும்
அடுத்து, UI சோதனைகளுக்கான புதிய கட்டமைப்பை உருவாக்குகிறோம். XCode இல், திட்டக் கோப்பைக் கிளிக் செய்து, தகவல் பகுதிக்குச் செல்லவும். “+” ஐக் கிளிக் செய்து புதிய உள்ளமைவை உருவாக்கவும், எடுத்துக்காட்டாக XCtest. குறியீடு கையொப்பமிடும்போது தம்பூரினுடன் நடனமாடுவதைத் தவிர்க்க எதிர்காலத்தில் இது தேவைப்படும்.
உங்கள் திட்டத்தில் குறைந்தது மூன்று இலக்குகள் உள்ளன: முக்கிய பயன்பாடு, யூனிட் சோதனைகள் (எல்லாவற்றுக்கும் மேலாக, அவை உள்ளன, இல்லையா?) மற்றும் நாங்கள் உருவாக்கிய இலக்கு UI சோதனைகள்.
Target AmazingApp, Build Settings டேப், Code Signing Identity பிரிவுக்குச் செல்லவும். XCtest உள்ளமைவுக்கு, iOS டெவலப்பரைத் தேர்ந்தெடுக்கவும். கோட் சைனிங் ஸ்டைல் பிரிவில், கையேடு என்பதைத் தேர்ந்தெடுக்கவும். நாங்கள் இன்னும் வழங்கல் சுயவிவரத்தை உருவாக்கவில்லை, ஆனால் சிறிது நேரம் கழித்து நாங்கள் நிச்சயமாக அதற்குத் திரும்புவோம்.
Target AmazingAppUITests க்கு நாமும் அவ்வாறே செய்கிறோம், ஆனால் Product Bundle Identifier நெடுவரிசையில் com.company.amazingappuitests ஐ உள்ளிடுகிறோம்.
2. ஆப்பிள் டெவலப்பர் திட்டத்தில் ஒரு திட்டத்தை அமைத்தல்
ஆப்பிள் டெவலப்பர் நிரல் பக்கத்திற்குச் சென்று, சான்றிதழ்கள், அடையாளங்காட்டிகள் & சுயவிவரங்கள் பிரிவுக்குச் சென்று, பின்னர் அடையாளங்காட்டிகள் உருப்படியின் பயன்பாட்டு ஐடிகள் நெடுவரிசைக்குச் செல்லவும். AmazingAppUITests மற்றும் bundleID com.company.amazingappuitests என்ற புதிய ஆப் ஐடியை உருவாக்கவும்.
இப்போது எங்கள் சோதனைகளில் தனி சான்றிதழுடன் கையொப்பமிட எங்களுக்கு வாய்ப்பு உள்ளது, ஆனால்... சோதனைக்கான கட்டமைப்பை அசெம்பிள் செய்வதற்கான செயல்முறையானது விண்ணப்பத்தையே அசெம்பிள் செய்து டெஸ்ட் ரன்னரை அசெம்பிள் செய்வதாகும். அதன்படி, ஒரு வழங்கல் சுயவிவரத்துடன் இரண்டு மூட்டை ஐடிகளில் கையொப்பமிடுவதில் சிக்கலை எதிர்கொள்கிறோம். அதிர்ஷ்டவசமாக, ஒரு எளிய மற்றும் நேர்த்தியான தீர்வு உள்ளது - வைல்ட்கார்ட் ஆப் ஐடி. புதிய ஆப் ஐடியை உருவாக்கும் செயல்முறையை நாங்கள் மீண்டும் செய்கிறோம், ஆனால் வெளிப்படையான பயன்பாட்டு ஐடிக்கு பதிலாக, ஸ்கிரீன்ஷாட்டில் உள்ளதைப் போல வைல்ட்கார்ட் ஆப் ஐடியைத் தேர்ந்தெடுக்கவும்.
இந்த கட்டத்தில், developer.apple.com உடன் பணிபுரிந்துவிட்டோம், ஆனால் உலாவி சாளரத்தை நாங்கள் குறைக்க மாட்டோம். நாம் செல்வோம்
இந்த பயன்பாட்டைப் பயன்படுத்த, எங்களுக்கு ஒரு தனிப்பட்ட களஞ்சியமும் ஆப்பிள் டெவலப்பர் புரோகிராம் மற்றும் கிதுப் இரண்டையும் அணுகக்கூடிய கணக்கும் தேவைப்படும் என்பதை கவனமுள்ள வாசகர் கவனித்தார். படிவத்தின் கணக்கை நாங்கள் உருவாக்குகிறோம் (திடீரென்று அப்படி எதுவும் இல்லை என்றால்). [மின்னஞ்சல் பாதுகாக்கப்பட்டது], வலுவான கடவுச்சொல்லைக் கொண்டு வந்து, அதை developer.apple.com இல் பதிவுசெய்து, அதை ஒரு திட்ட நிர்வாகியாக நியமிக்கவும். அடுத்து, உங்கள் நிறுவனத்தின் கிதுப் களஞ்சியத்திற்கான கணக்கிற்கான அணுகலை நாங்கள் வழங்குகிறோம் மற்றும் AmazingAppMatch போன்ற பெயரில் ஒரு புதிய தனியார் களஞ்சியத்தை உருவாக்குகிறோம்.
3. ஃபாஸ்ட்லேன் மற்றும் மேட்ச் யூட்டிலிட்டியை அமைத்தல்
டெர்மினலைத் திறந்து, திட்டத்துடன் கோப்புறைக்குச் சென்று, அதில் குறிப்பிட்டுள்ளபடி ஃபாஸ்ட்லேனைத் துவக்கவும்
$ fastlane init
கிடைக்கக்கூடிய பயன்பாட்டு உள்ளமைவுகளைத் தேர்ந்தெடுக்கும்படி கேட்கப்படுவீர்கள். நான்காவது விருப்பத்தைத் தேர்ந்தெடுக்கவும் - கையேடு திட்ட அமைப்பு.
திட்டமானது புதிய அடைவு ஃபாஸ்ட்லேனைக் கொண்டுள்ளது, இதில் இரண்டு கோப்புகள் உள்ளன - Appfile மற்றும் Fastfile. சுருக்கமாகச் சொல்வதானால், சேவைத் தரவை Appfile இல் சேமித்து, Fastlane டெர்மினாலஜியில் லேன்கள் எனப்படும் Fastfile இல் வேலைகளை எழுதுகிறோம். அதிகாரப்பூர்வ ஆவணங்களைப் படிக்க பரிந்துரைக்கிறேன்:
உங்களுக்குப் பிடித்த டெக்ஸ்ட் எடிட்டரில் Appfileஐத் திறந்து பின்வரும் படிவத்திற்குக் கொண்டு வாருங்கள்:
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
நாங்கள் முனையத்திற்குத் திரும்புகிறோம், அதிகாரப்பூர்வ கையேட்டின் படி பொருத்தத்தை உள்ளமைக்கத் தொடங்குகிறோம்.
$ fastlane match init
$ fastlane match development
அடுத்து, கோரப்பட்ட தரவை உள்ளிடவும் - களஞ்சியம், கணக்கு, கடவுச்சொல் போன்றவை.
அது முக்கியம்: நீங்கள் முதலில் மேட்ச் யூட்டிலிட்டியைத் தொடங்கும்போது, களஞ்சியத்தை மறைகுறியாக்க கடவுச்சொல்லை உள்ளிடுமாறு கேட்கப்படுவீர்கள். இந்த கடவுச்சொல்லை சேமிப்பது மிகவும் முக்கியம்; CI சேவையகத்தை அமைக்கும் போது நமக்கு இது தேவைப்படும்!
ஃபாஸ்ட்லேன் கோப்புறையில் புதிய கோப்பு தோன்றியுள்ளது - மேட்ச்ஃபைல். உங்களுக்குப் பிடித்த டெக்ஸ்ட் எடிட்டரில் இதைத் திறந்து இப்படிக் காட்டவும்:
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
Crashlytics மற்றும்/அல்லது AppStore இல் காட்சிப்படுத்த, அதாவது உங்கள் விண்ணப்பத்தின் மூட்டை ஐடியில் கையொப்பமிட, எதிர்காலத்தில் மேட்சைப் பயன்படுத்த விரும்பினால், அதை சரியாக நிரப்புவோம்.
ஆனால், நாங்கள் நினைவில் வைத்திருப்பது போல், சோதனைக் கட்டமைப்பில் கையொப்பமிட ஒரு சிறப்பு வைல்ட் கார்டு ஐடியை உருவாக்கியுள்ளோம். எனவே, Fastfile ஐ திறந்து புதிய பாதையை உள்ளிடவும்:
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests" # создаем отдельный бранч для development сертификата для подписи тестовой сборки.
)
end
சேமித்து டெர்மினலில் உள்ளிடவும்
fastlane testing_build_for_firebase
மற்றும் ஃபாஸ்ட்லேன் எப்படி ஒரு புதிய சான்றிதழை உருவாக்கி அதை களஞ்சியத்தில் வைத்தது என்பதைப் பார்க்கிறோம். நன்று!
Открываем XCode. Теперь у нас есть нужный provisioning profile вида Match Development com.company.*, который нужно указать в секции Provisioning profile для таргетов AmazingApp и AmazingAppUITests.
சோதனைகளை அசெம்பிள் செய்வதற்கான பாதையைச் சேர்க்க இது உள்ளது. நாம் செல்வோம்
அசல் எடுத்துக்காட்டில் இருந்து நகலெடுத்து ஒட்டுவோம், இதனால் எங்கள் லேன் testing_build_for_firebase இப்படி இருக்கும்:
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
CircleCI இல் ஃபாஸ்ட்லேன் அமைப்பது பற்றிய முழுமையான தகவலுக்கு, அதிகாரப்பூர்வ ஆவணங்களைப் படிக்க பரிந்துரைக்கிறேன்
எங்கள் 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. எங்கள் சோதனை பெஞ்ச் பற்றி என்ன? ஃபயர்பேஸை அமைத்தல்.
கட்டுரை எதற்காக எழுதப்பட்டது என்று பார்ப்போம்.
ஒருவேளை உங்கள் ஆப்ஸ் இலவச திட்டத்தில் Firebase ஐப் பயன்படுத்துகிறது அல்லது இல்லாமலும் இருக்கலாம். எந்த அடிப்படை வேறுபாடும் இல்லை, ஏனென்றால் சோதனைத் தேவைகளுக்காக ஒரு வருட இலவச பயன்பாட்டுடன் ஒரு தனி திட்டத்தை உருவாக்கலாம் (குளிர்ச்சி, சரியானதா?)
நாங்கள் எங்கள் உள்கட்டமைப்பு கணக்கில் உள்நுழைகிறோம் (அல்லது வேறு ஏதேனும், அது ஒரு பொருட்டல்ல), அதற்குச் செல்கிறோம்
அது முக்கியம்: Fastfile இன் லேனில் உள்ள முந்தைய படியில் firebase_test_lab_ios_xctest திட்டப் பெயருடன் gcp_project அளவுரு பொருந்த வேண்டும்.
இயல்புநிலை அமைப்புகள் எங்களுக்கு மிகவும் பொருத்தமானவை.
தாவலை மூட வேண்டாம், அதே கணக்கில் பதிவு செய்யவும்
கூகுள் ஒரு வருடத்திற்கு $300 வழங்குகிறது, இது தன்னியக்க சோதனைகளைச் செய்யும் சூழலில் ஒரு வருடத்திற்கான சேவையை இலவசமாகப் பயன்படுத்துவதற்குச் சமம். நாங்கள் உங்கள் கட்டணத் தகவலை உள்ளிட்டு, $1 சோதனைப் பற்றுக்காக காத்திருந்து, உங்கள் கணக்கில் $300 பெறுவோம். ஒரு வருடம் கழித்து, திட்டம் தானாகவே இலவச கட்டணத் திட்டத்திற்கு மாற்றப்படும், எனவே சாத்தியமான பண இழப்பு பற்றி கவலைப்பட வேண்டிய அவசியமில்லை.
Firebase திட்டத்துடன் தாவலுக்குத் திரும்பி, அதை Blaze கட்டணத் திட்டத்திற்கு மாற்றுவோம் - வரம்பை மீறினால், இப்போது எங்களிடம் பணம் செலுத்த வேண்டியுள்ளது.
gCloud இடைமுகத்தில், எங்கள் Firebase திட்டத்தைத் தேர்ந்தெடுத்து, "டைரக்டரி" முதன்மை மெனு உருப்படியைத் தேர்ந்தெடுத்து, Cloud Testing API மற்றும் Cloud Tools Result API ஐச் சேர்க்கவும்.
பின்னர் மெனு உருப்படி “IAM மற்றும் நிர்வாகம்” -> சேவை கணக்குகள் -> சேவை கணக்கை உருவாக்கவும். திட்டத்தைத் திருத்துவதற்கான உரிமைகளை நாங்கள் வழங்குகிறோம்.
JSON வடிவத்தில் API விசையை உருவாக்கவும்
சிறிது நேரம் கழித்து பதிவிறக்கம் செய்யப்பட்ட JSON தேவைப்படும், ஆனால் இப்போதைக்கு சோதனை ஆய்வக அமைப்பு முடிந்தது என்று கருதுவோம்.
5. CircleCI ஐ அமைத்தல்
ஒரு நியாயமான கேள்வி எழுகிறது - கடவுச்சொற்களை என்ன செய்வது? எங்களின் பில்ட் மெஷினின் சூழல் மாறி பொறிமுறையானது, நமது கடவுச்சொற்களையும் பிற முக்கியத் தரவையும் பாதுகாப்பாகச் சேமிக்க உதவும். CircleCI திட்ட அமைப்புகளில், சுற்றுச்சூழல் மாறிகள் என்பதைத் தேர்ந்தெடுக்கவும்
மற்றும் பின்வரும் மாறிகளை அமைக்கவும்:
- விசை: GOOGLE_APPLICATION_CREDENTIALS
மதிப்பு: gCloud சேவை கணக்கு விசையின் json கோப்பின் உள்ளடக்கங்கள் - விசை: MATCH_PASSWORD
மதிப்பு: சான்றிதழ்களுடன் கிதுப் களஞ்சியத்தை மறைகுறியாக்க கடவுச்சொல் - விசை: FASTLANE_PASSWORD
மதிப்பு: ஆப்பிள் டெவலப்பர் போர்டல் உள்கட்டமைப்பு கணக்கு கடவுச்சொல்
மாற்றங்களைச் சேமித்து, PRஐ உருவாக்கி, மதிப்பாய்வுக்காக எங்கள் குழுத் தலைவருக்கு அனுப்புகிறோம்.
முடிவுகளை
இந்த எளிய கையாளுதல்களின் விளைவாக, சோதனையின் போது சாதனத் திரையில் வீடியோவைப் பதிவுசெய்யும் திறனுடன் ஒரு நல்ல, நிலையான வேலை நிலைப்பாட்டை நாங்கள் பெற்றுள்ளோம். சோதனை எடுத்துக்காட்டில், நான் iPhone X சாதன மாதிரியைக் குறிப்பிட்டேன், ஆனால் பண்ணை பல்வேறு மாதிரிகள் மற்றும் iOS பதிப்புகளின் கலவையிலிருந்து ஒரு சிறந்த தேர்வை வழங்குகிறது.
இரண்டாவது பகுதியானது, ஆண்ட்ராய்டு திட்டத்திற்கான ஃபயர்பேஸ் சோதனை ஆய்வகத்தின் படிப்படியான அமைப்பிற்கு அர்ப்பணிக்கப்படும்.
ஆதாரம்: www.habr.com