சோதனை தொகுப்பை ஒழுங்கமைத்தல்
திட்டங்கள் வளரும்போது, தவிர்க்க முடியாதபடி மேலும் மேலும் ஒருங்கிணைப்பு சோதனைகள் சேர்க்கப்படுகின்றன. இது கட்டுமானக் காலத்தை அதிகரிக்கிறது மற்றும் உற்பத்தித்திறனை மெதுவாக்குகிறது.
இதைத் தடுக்க, நீங்கள் உங்கள் சோதனைகளை இணையாக இயக்க வேண்டும். WebdriverIO ஏற்கனவே ஒவ்வொரு spec (அல்லது Cucumber இல் feature file) ஒரு அமர்வில் இணையாக சோதிக்கிறது. பொதுவாக, ஒரு spec கோப்பில் ஒரு அம்சத்தை மட்டுமே சோதிக்க முயற்சிக்கவும். ஒரு கோப ்பில் மிக அதிகமாகவோ அல்லது மிகக் குறைவாகவோ சோதனைகள் இல்லாமல் இருக்க முயற்சிக்கவும். (இருப்பினும், இங்கு எந்த தங்க விதியும் இல்லை.)
உங்கள் சோதனைகளில் பல spec கோப்புகள் இருக்கும்போது, நீங்கள் உங்கள் சோதனைகளை ஒரே நேரத்தில் இயக்கத் தொடங்க வேண்டும். அவ்வாறு செய்ய, உங்கள் கான்ஃபிக் கோப்பில் maxInstances பண்புகளை சரிசெய்யவும். WebdriverIO உங்கள் சோதனைகளை அதிகபட்ச ஒத்தியக்கத்துடன் இயக்க அனுமதிக்கிறது - அதாவது எத்தனை கோப்புகளும் சோதனைகளும் இருந்தாலும், அவை அனைத்தும் இணையாக இயங்கலாம். (இது இன்னும் உங்கள் கணினியின் CPU, ஒத்தியக்க கட்டுப்பாடுகள் போன்ற சில வரம்புகளுக்கு உட்பட்டது.)
உங்களிடம் 3 வெவ்வேறு திறன்கள் (Chrome, Firefox மற்றும் Safari) இருந்து, நீங்கள்
maxInstances-ஐ1-ஆக அமைத்திருந்தால், WDIO சோதனை இயக்கி 3 செயல்முறைகளை உருவாக்கும். எனவே, உங்களிடம் 10 spec கோப்புகள் இருந்துmaxInstances-ஐ10-ஆக அமைத்திருந்தால், அனைத்து spec கோப்புகளும் ஒரே நேரத்தில் சோதிக்கப்படும், மேலும் 30 செயல்முறைகள் உருவாக்கப்படும்.
அனைத்து உலாவிகளுக்கும் பண்பைக்குறிப்பிட maxInstances பண்பை உலகளாவிய அளவில் நீங்கள் வரையறுக்கலாம்.
நீங்கள் உங்கள் சொந்த WebDriver கட்டமைப்பை இயக்கினால், உங்களிடம் ஒரு உலாவியில் மற்றொன்றை விட அதிக திறன் இருக்கலாம். அந்த நிலையில், நீங்கள் உங்கள் திறன் பொருளில் maxInstances-ஐ கட்டுப்படுத்தலாம்:
// wdio.conf.js
export const config = {
// ...
// set maxInstance for all browser
maxInstances: 10,
// ...
capabilities: [{
browserName: 'firefox'
}, {
// maxInstances can get overwritten per capability. So if you have an in-house WebDriver
// grid with only 5 firefox instance available you can make sure that not more than
// 5 instance gets started at a time.
browserName: 'chrome'
}],
// ...
}
முக்கிய கான்ஃபிக் கோப்பிலிருந்து வாரிசாகப் பெறுதல்
நீங்கள் உங்கள் சோதனை தொகுப்பை பல சூழல்களில் (எ.கா., dev மற்றும் integration) இயக்கினால், விஷயங்களை நிர்வகிக்க பல கான்ஃபிக் கோப்புகளைப் பயன்படுத்துவது உதவலாம்.
பக்கப் பொருள் கருத்து போன்றதே, முதலில் உங்களுக்கு முதன்மை கான்ஃபிக் கோப்பு தேவைப்படும். இது நீங்கள் சூழல்களில் பகிரும் அனைத்து கட்டமைப்புகளையும் கொண்டுள்ளது.
பின்னர் ஒவ்வ ொரு சூழலுக்கும் மற்றொரு கான்ஃபிக் கோப்பை உருவாக்கி, முதன்மை கான்ஃபிகை சூழல்-குறிப்பிட்ட கோப்புகளுடன் நிரப்பவும்:
// wdio.dev.config.js
import { deepmerge } from 'deepmerge-ts'
import wdioConf from './wdio.conf.js'
// have main config file as default but overwrite environment specific information
export const config = deepmerge(wdioConf.config, {
capabilities: [
// more caps defined here
// ...
],
// run tests on sauce instead locally
user: process.env.SAUCE_USERNAME,
key: process.env.SAUCE_ACCESS_KEY,
services: ['sauce']
}, { clone: false })
// add an additional reporter
config.reporters.push('allure')
தொகுப்புகளில் சோதனை Specs ஐ குழுப்படுத்துதல்
சோதனை specs ஐ தொகுப்புகளில் குழுப்படுத்தி, அனைத்தையும் இயக்குவதற்குப் பதிலாக ஒரு குறிப்பிட்ட தொகுப்புகளை இயக்கலாம்.
முதலில், உங்கள் WDIO கான்ஃபிகில் உங்கள் தொகுப்புகளை வரையறுக்கவும்:
// wdio.conf.js
export const config = {
// define all tests
specs: ['./test/specs/**/*.spec.js'],
// ...
// define specific suites
suites: {
login: [
'./test/specs/login.success.spec.js',
'./test/specs/login.failure.spec.js'
],
otherFeature: [
// ...
]
},
// ...
}
இப்போது, நீங்கள் ஒரு தொகுப்பை மட்டும் இயக்க விரும்பினால், தொகுப்பு பெயரை CLI வாதமாக அனுப்பலாம்:
wdio wdio.conf.js --suite login
அல்லது, ஒரே நேரத்தில் பல தொகுப்புகளை இயக்கவும்:
wdio wdio.conf.js --suite login --suite otherFeature
வரிசையாக இயக்க சோதனை Specs ஐ குழுப்படுத்துதல்
மேலே விவரிக்கப்பட்டுள்ளபடி, சோதனைகளை ஒரே நேரத்தில் இயக்குவதில் பயன்கள் உள்ளன. இருப்பினும், சோதனைகளை ஒரு குழுவாக ஒரே நிகழ்விற்குள் வரிசையாக இயக்குவது பயனுள்ளதாக இருக்கும் சில சந்தர்ப்பங்கள் உள்ளன. இதற்கான எடுத்துக்காட்டுகள் பெரும்பாலும் டிரான்ஸ்பைலிங் குறியீடு அல்லது கிளவுட் நிகழ்வுகளை வழங்குதல் போன்ற பெரிய அமைப்பு செலவுகள் உள்ள இடங்கள் ஆகும், ஆனால் இந்த திறனில் பயன் பெறும் மேம்பட்ட பயன்பாட்டு மாதிரிகளும் உள்ளன.
சோதனைகளை ஒரு நிகழ்வில் வரிசையாக இயக்க குழுப்படுத்த, அவற்றை specs வரையறையில் ஒரு வரிசையாக வரையறுக்கவும்.
"specs": [
[
"./test/specs/test_login.js",
"./test/specs/test_product_order.js",
"./test/specs/test_checkout.js"
],
"./test/specs/test_b*.js",
],
மேலே உள்ள உதாரணத்தில், 'test_login.js', 'test_product_order.js' மற்றும் 'test_checkout.js' சோதனைகள் ஒரு நிகழ்வில் வரிசையாக இயக்கப்படும், மேலும் "test_b*" சோதனைகள் ஒவ்வொன்றும் தனிப்பட்ட நிகழ்வுகளில் ஒரே நேரத்தில் இயக்கப்படும்.
தொகுப்புகளில் வரையறுக்கப்பட்ட specs ஐ குழுப்படுத்துவதும் சாத்தியமே, எனவே நீங்கள் இப்போது தொகுப்புகளை இவ்வாறு வரையறுக்கலாம்:
"suites": {
end2end: [
[
"./test/specs/test_login.js",
"./test/specs/test_product_order.js",
"./test/specs/test_checkout.js"
]
],
allb: ["./test/specs/test_b*.js"]
},
இந்த நிலையில் "end2end" தொகுப்பின் அனைத்து சோதனைகளும் ஒரே நிகழ்வில் இயக்கப்படும்.
ஒரு முறையைப் பயன்படுத்தி வரிசையாக சோதனைகளை இயக்கும்போது, அது spec கோப்புகளை அகரவரிசை வரிசையில் இயக்கும்
"suites": {
end2end: ["./test/specs/test_*.js"]
},