प्रोटेक्टर परीक्षण क्या है?
PROTRACTOR एक स्वचालन और अंत-टू-एंड व्यवहार-चालित परीक्षण उपकरण है जो AngularJS अनुप्रयोगों के परीक्षण में एक महत्वपूर्ण भूमिका निभाता है और सेलेनियम, जैस्मीन, वेब ड्राइवर, आदि जैसे शक्तिशाली प्रौद्योगिकियों के संयोजन के समाधान के रूप में काम करता है, जो प्रोटेक्टर परीक्षण का उद्देश्य है। न केवल AngularJS अनुप्रयोगों का परीक्षण करने के लिए, बल्कि सामान्य वेब अनुप्रयोगों के लिए स्वचालित प्रतिगमन परीक्षण लिखने के लिए भी है।
इस शुरुआत के ट्यूटोरियल में, आप सीखेंगे-
- हमें प्रोटेक्टर फ्रेमवर्क की आवश्यकता क्यों है?
- रक्षक स्थापना
- नमूना AngularJS अनुप्रयोग परीक्षण, प्रोट्रैक्टर का उपयोग करके
- संहिता का निष्पादन
- जैस्मीन रिपोर्टर्स का उपयोग करके रिपोर्ट जनरेट करें
हमें प्रोटेक्टर फ्रेमवर्क की आवश्यकता क्यों है?
जावास्क्रिप्ट का उपयोग लगभग सभी वेब एप्लिकेशन में किया जाता है। जैसे-जैसे एप्लिकेशन बढ़ते हैं, जावास्क्रिप्ट भी आकार और जटिलता में बढ़ता है। ऐसे मामले में, विभिन्न परिदृश्यों के लिए वेब एप्लिकेशन का परीक्षण करना परीक्षकों के लिए एक मुश्किल काम बन जाता है।
कभी-कभी JUnit या सेलेनियम वेबड्राइवर का उपयोग करके AngularJS अनुप्रयोगों में वेब तत्वों को पकड़ना मुश्किल होता है।
Protractor एक NodeJS प्रोग्राम है जो जावास्क्रिप्ट में लिखा गया है और AngularJS अनुप्रयोगों में वेब तत्वों की पहचान करने के लिए Node के साथ चलता है, और यह उपयोगकर्ता क्रियाओं के साथ ब्राउज़र को नियंत्रित करने के लिए WebDriver का भी उपयोग करता है।
ठीक है, अब ठीक चर्चा करते हैं कि वास्तव में एक AngularJS एप्लिकेशन क्या है?
AngularJS एप्लिकेशन वेब एप्लिकेशन हैं जो वेब एप्लिकेशन घटकों को व्यक्त करने के लिए विस्तारित HTML के सिंटैक्स का उपयोग करते हैं। यह मुख्य रूप से गतिशील वेब अनुप्रयोगों के लिए उपयोग किया जाता है। ये एप्लिकेशन सामान्य वेब एप्लिकेशन की तुलना में कम और लचीले कोड का उपयोग करते हैं।
हम सामान्य सेलेनियम वेब ड्राइवर का उपयोग करके कोणीय जेएस वेब तत्वों को क्यों नहीं खोज सकते हैं?
कोणीय जेएस अनुप्रयोगों में एनजी-रिपीटर, एनजी-कंट्रोलर, एनजी-मॉडल… आदि जैसे कुछ अतिरिक्त एचटीएमएल गुण हैं, जो सेलेनियम लोकेटर में शामिल नहीं हैं। सेलेनियम उन वेब तत्वों की पहचान करने में सक्षम नहीं है जो सेलेनियम कोड का उपयोग कर रहे हैं। तो, सेलेनियम के शीर्ष पर प्रोटेक्टर वेब एप्लिकेशन में उन विशेषताओं को संभाल और नियंत्रित कर सकता है।
प्रोट्रैक्टर कोणीय जेएस आधारित अनुप्रयोगों के लिए परीक्षण रूपरेखा को समाप्त करने का एक अंत है। जबकि अधिकांश चौखटे, कोणीय जेएस अनुप्रयोगों के लिए इकाई परीक्षण करने पर ध्यान केंद्रित करते हैं, प्रोट्रैक्टर एक अनुप्रयोग की वास्तविक कार्यक्षमता का परीक्षण करने पर ध्यान केंद्रित करता है।
इससे पहले कि हम प्रोट्रेक्टर शुरू करें, हमें निम्नलिखित को स्थापित करना होगा:
- सेलेनियम
आप निम्न लिंक में सेलेनियम इंस्टॉलेशन चरण पा सकते हैं, (https://www.guru99.com/installing-selenium-webdriver.html)
- एनपीएम (Node.js)
NodeJS इंस्टॉलेशन, हमें प्रोटेक्टर स्थापित करने के लिए NodeJS इंस्टॉल करना होगा। आप इस स्थापना चरणों को निम्न लिंक में पा सकते हैं। (https://www.guru99.com/download-install-node-js.html)
रक्षक स्थापना
चरण 1) ओपन कमांड प्रॉम्प्ट और "npm इंस्टॉल -g प्रोट्रेक्टर" टाइप करें और एंटर दबाएं ।
उपरोक्त कमांड आवश्यक फाइलें डाउनलोड करेगा और क्लाइंट सिस्टम पर प्रोटेक्टर स्थापित करेगा।
चरण 2) " प्रोट्रैक्टर --version " का उपयोग करके स्थापना और संस्करण की जांच करें । यदि यह सफल होता है तो नीचे दिए गए स्क्रीनशॉट की तरह संस्करण को भी दिखाया जाएगा। यदि नहीं, तो चरण 1 फिर से करें।
(चरण 3 और 4 वैकल्पिक हैं लेकिन बेहतर अभ्यास के लिए अनुशंसित हैं)
चरण 3) वेब ड्राइवर प्रबंधक को अपडेट करें। वेब चालक प्रबंधक का उपयोग किसी विशिष्ट ब्राउज़र में कोणीय वेब अनुप्रयोग के विरुद्ध परीक्षण चलाने के लिए किया जाता है। प्रोटेक्टर स्थापित होने के बाद, वेब ड्राइवर प्रबंधक को नवीनतम संस्करण में अपडेट करने की आवश्यकता है। यह कमांड प्रॉम्प्ट में निम्न कमांड चलाकर किया जा सकता है।
webdriver-manager update
चरण 4) वेब चालक प्रबंधक शुरू करें। यह चरण वेब ड्राइवर प्रबंधक को पृष्ठभूमि में चलाएगा और किसी भी परीक्षण को सुनेगा जो प्रोट्रेक्टर के माध्यम से चलता है।
एक बार किसी भी परीक्षण को चलाने के लिए प्रोट्रैक्टर का उपयोग किया जाता है, वेब ड्राइवर स्वचालित रूप से संबंधित ब्राउज़र में परीक्षण को लोड और चलाएगा। वेब ड्राइवर प्रबंधक को शुरू करने के लिए, कमांड प्रॉम्प्ट से निम्नलिखित कमांड को निष्पादित करने की आवश्यकता है।
webdriver-manager start
अब, यदि आप अपने ब्राउज़र में निम्न URL ( http: // localhost: 4444 / wd / hub / static / resource / hub.html ) पर जाते हैं, तो आप वास्तव में वेब ड्राइवर प्रबंधक को पृष्ठभूमि में चलते देखेंगे।
नमूना AngularJS अनुप्रयोग परीक्षण, प्रोट्रैक्टर का उपयोग करके
प्रोटेक्टर को चलाने के लिए दो फ़ाइलों की आवश्यकता होती है, एक कल्पना फ़ाइल और कॉन्फ़िगरेशन फ़ाइल।
- कॉन्फ़िगरेशन फ़ाइल : यह फ़ाइल प्रोट्रेक्टर को उस स्थान पर जाने में मदद करती है जहाँ परीक्षण फ़ाइलों को रखा गया है (चश्मा) और सेलेनियम सर्वर (सेलेनियम एड्रेस) के साथ बात करने के लिए। Chrome प्रोट्रेक्टर के लिए डिफ़ॉल्ट ब्राउज़र है।
- विशेष फ़ाइल: इस फ़ाइल में एप्लिकेशन के साथ सहभागिता करने के लिए तर्क और लोकेटर हैं ।
चरण 1) हमें https://angularjs.org लॉग इन करना है और "GURU99" के रूप में पाठ दर्ज करें "टेक्स्टबॉक्स में नाम दर्ज करें"।
चरण 2) इस चरण में,
- "गुरु99" नाम दर्ज किया
- आउटपुट टेक्स्ट में "हैलो गुरु 99" देखा जाता है।
चरण 3) अब हमें नाम दर्ज करने के बाद वेबपेज से टेक्स्ट को कैप्चर करना होगा और अपेक्षित टेक्स्ट के साथ सत्यापन करना होगा ।
कोड:
जैसा कि ऊपर बताया गया है, हमें कॉन्फ़िगरेशन फ़ाइल (conf.js) और कल्पना फ़ाइल (spec.js) तैयार करनी है।
युक्ति का तर्क ।js:
describe('Enter GURU99 Name', function() {it('should add a Name as GURU99', function() {browser.get('https://angularjs.org');element(by.model('yourName')).sendKeys('GURU99');var guru= element(by.xpath('html/body/div[2]/div[1]/div[2]/div[2]/div/h1'));expect(guru.getText()).toEqual('Hello GURU99!');});});
Spec.js का कोड स्पष्टीकरण:
- वर्णन ('GURU99 नाम दर्ज करें', फ़ंक्शन ()
वर्णन वाक्य रचना जैस्मीन ढांचे से है। यहां "वर्णन" ('GURU99 नाम दर्ज करें') आम तौर पर एक एप्लिकेशन के घटकों को परिभाषित करता है, जो एक वर्ग या फ़ंक्शन आदि हो सकता है। "सुई GURU99 दर्ज करें" नामक कोड सूट में, यह सिर्फ एक स्ट्रिंग है और एक कोड नहीं है।
- यह ('GURU99 के रूप में एक नाम जोड़ना चाहिए', फ़ंक्शन ()
- Browser.get ('https://angularjs.org')
जैसे कि सेलेनियम वेबड्राइवर ब्राउजर.गेट में उल्लेखित यूआरएल के साथ एक नया ब्राउजर उदाहरण खुलेगा।
- तत्व (by.model ('yourName'))। sendKeys ('GURU99')
यहां हम मॉडल नाम का उपयोग कर वेब तत्व को "yourName" के रूप में पा रहे हैं, जो वेब पेज पर "एनजी-मॉडल" का मूल्य है। नीचे स्क्रीन शॉट की जाँच करें-
- var गुरु = तत्व (by.xpath ('html / body / div [2] / div [1] / div [2] / div [2] / div / h1')
यहां हम XPath का उपयोग करके वेब तत्व ढूंढ रहे हैं और इसके मूल्य को एक "गुरु" चर में संग्रहीत करते हैं ।
- अपेक्षा (गुरु.गीत पाठ) ()। inququal ('हैलो गुरू 99!')
अंत में हम उस पाठ की पुष्टि कर रहे हैं जो हमें वेबपेज (गेटटेक्स्ट () का उपयोग करके) अपेक्षित पाठ के साथ मिला है।
Conf.js का तर्क:
exports.config = {seleniumAddress: 'http://localhost:4444/wd/hub',specs: ['spec.js']};
कोड की व्याख्या
- seleniumAddress: 'http: // localhost: 4444 / wd / हब'
कॉन्फ़िगरेशन फ़ाइल प्रोटेक्टर को सेलेनियम वेबड्राइवर के साथ बात करने के लिए सेलेनियम एड्रेस का स्थान बताती है।
- चश्मा: ['spec.js']
यह रेखा प्रोट्रेक्टर को परीक्षण फ़ाइलों के स्थान को बताती है। चश्मा
संहिता का निष्पादन
यहां पहले, हम निर्देशिका पथ को बदलेंगे या उस फ़ोल्डर में नेविगेट करेंगे जहां हमारे सिस्टम में confi.js और spec.js रखे गए हैं ।
निम्न चरण का पालन करें।
चरण 1) कमांड प्रॉम्प्ट खोलें।
चरण 2) सुनिश्चित करें कि सेलेनियम वेब ड्राइवर प्रबंधक ऊपर और चल रहा है। इसके लिए कमांड को "वेबड्राइवर-मैनेजर स्टार्ट" के रूप में दें और एंटर को हिट करें ।
(यदि सेलेनियम वेब ड्राइवर चालू नहीं है और हम परीक्षण के साथ आगे नहीं बढ़ सकते हैं क्योंकि प्रोटेक्टर वेब एप्लिकेशन को वेब एप्लिकेशन को संभालने के लिए नहीं खोज सकता है)
चरण 3) एक नई कमांड प्रॉम्प्ट खोलें और कॉन्फ़िगरेशन फ़ाइल को चलाने के लिए कमांड को "प्रोट्रैक्टर conf.js" के रूप में दें ।
स्पष्टीकरण:
- यहाँ पर प्रोटेक्टर कॉन्फ़िगरेशन फ़ाइल में निष्पादित फ़ाइल के साथ दिया जाएगा।
- हम " http: // localhost: 4444 / wd / हब " पर चलने वाले सेलेनियम सर्वर को देख सकते हैं जो हमने conf.js फ़ाइल में दिया है।
- इसके अलावा, यहां रिजल्ट देख सकते हैं कि कितने उत्तीर्ण हैं और उपरोक्त स्क्रीनशॉट की तरह फेलियर हैं ।
ठीक है, हमने परिणाम की पुष्टि की है जब यह पारित किया गया है या अपेक्षित है। अब हम असफल परिणाम में भी देखते हैं।
चरण 1) नीचे दिए गए जैसे "'हैलो परिवर्तन GURU99" में spec.js में परिणाम के लिए खुला और परिवर्तित होने की उम्मीद है।
Spec.js में परिवर्तन के बाद :
describe('Enter GURU99 Name', function() {it('should add a Name as GURU99', function() {browser.get('https://angularjs.org');element(by.model('yourName')).sendKeys('GURU99');var guru= element(by.xpath('html/body/div[2]/div[1]/div[2]/div[2]/div/h1'));expect(guru.getText()).toEqual('Hello change GURU99!');});});
चरण 2) Spec.js फ़ाइल को सहेजें और "कोड के निष्पादन" खंड के चरणों से ऊपर दोहराएं
अब, उपरोक्त चरणों को निष्पादित करें।
परिणाम:
हम परिणाम को स्क्रीनशॉट में 'F' के साथ इंगित किए गए परिणाम के रूप में "अपेक्षित 'हैलो GURU99!' बराबर करने के लिए 'नमस्ते GURU99 बदल!'। इसके अलावा, यह दिखाता है कि कितने विफलताओं जब कोड को क्रियान्वित करने का सामना करना पड़ा है।
क्या हम सेलेनियम वेब ड्राइवर के साथ भी इसे प्राप्त कर सकते हैं?
कभी-कभी हम सेलेनियम वेब ड्राइवर से XPath या CSS चयनकर्ता का उपयोग करके AngularJS अनुप्रयोगों के वेब तत्वों की पहचान कर सकते हैं। लेकिन AngularJS अनुप्रयोगों में, तत्वों को उत्पन्न और गतिशील रूप से बदला जाएगा। इसलिए प्रोटेक्टर एंगुलरजेएस एप्लिकेशन के साथ काम करने के लिए बेहतर अभ्यास है।
जैस्मीन रिपोर्टर्स का उपयोग करके रिपोर्ट जनरेट करें
प्रोटेक्टर जैस्मिन संवाददाताओं को परीक्षण रिपोर्ट बनाने के लिए समर्थन करता है। इस खंड में, हम XML प्रारूप में टेस्ट निष्पादन रिपोर्ट को स्वचालित रूप से उत्पन्न करने के लिए JunitXMLReporter का उपयोग करेंगे।
XML प्रारूप में रिपोर्ट उत्पन्न करने के लिए नीचे दिए गए चरणों का पालन करें।
जैस्मीन रिपोर्टर की स्थापना
दो तरीके हैं जिनसे आप ऐसा कर सकते हैं, स्थानीय या वैश्विक स्तर पर
- ओपन कमांड प्रॉम्प्ट स्थानीय रूप से स्थापित करने के लिए निम्न कमांड निष्पादित करता है
npm install --save-dev jasmine-reporters@^2.0.0
ऊपर कमांड चमेली की रिपोर्ट नोड-मॉड्यूल को स्थानीय रूप से उस निर्देशिका से संस्थापित करेगी जहाँ हम कमांड प्रॉम्प्ट में कमांड चला रहे हैं।
- ओपन कमांड प्रॉम्प्ट वैश्विक इंस्टॉलेशन के लिए निम्न कमांड निष्पादित करता है
npm install -g jasmine-reporters@^2.0.0
इस ट्यूटोरियल में, हम स्थानीय स्तर पर चमेली पत्रकारों को स्थापित करेंगे ।
चरण 1) कमांड निष्पादित करें।
npm install --save-dev jasmine-reporters@^2.0.0
कमांड प्रॉम्प्ट से नीचे की तरह।
चरण 2) निर्देशिका में स्थापना फ़ोल्डर की जाँच करें । "Node_modules" उपलब्ध होना चाहिए अगर यह सफलतापूर्वक नीचे स्नैपशॉट की तरह स्थापित हो।
चरण 3) एक मौजूद conf.js फ़ाइल में निम्न रंगीन कोड जोड़ें
exports.config = {seleniumAddress: 'http://localhost:4444/wd/hub',capabilities: {'browserName': 'firefox'},specs: ['spec.js'],framework: 'jasmine2' ,onPrepare: function() {var jasmineReporters = require('C:/Users/RE041943/Desktop/guru/node_modules/jasmine-reporters');jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter(null, true, true));}};
कोड की व्याख्या:
कोड में, हम रिपोर्ट " JUnitXmlReporter " और रिपोर्ट को स्टोर करने के लिए पथ दे रहे हैं।
चरण 4) कमांड प्रॉम्प्ट खोलें और कमांड प्रोट्रेक्टर conf.js. निष्पादित करें।
चरण 5) जब आप उपरोक्त कोड निष्पादित करते हैं, तो junitresults.xml उल्लेखित पथ में उत्पन्न होगा।
चरण 6) XML खोलें और परिणाम सत्यापित करें। परिणाम फ़ाइल में विफलता संदेश दिखाया गया है क्योंकि हमारा टेस्ट केस विफल है। टेस्ट केस फेल है क्योंकि "सट्टा" से अपेक्षित परिणाम वेब पेज से वास्तविक परिणाम के साथ मेल नहीं खाते हैं
चरण 7) सबूत या परिणाम फ़ाइलों के लिए junitresult.xml फ़ाइल का उपयोग करें।
सारांश:
हालांकि सेलेनियम कुछ चीजें कर सकता है जो प्रोट्रैक्टर करता है, फिर भी एंगुलरजेएस अनुप्रयोगों का परीक्षण करने के लिए प्रोट्रैक्टर औद्योगिक मानक और सर्वोत्तम अभ्यास है। एक प्रोटेक्टर इसमें कई क्षमताओं का प्रबंधन कर सकता है और एनजी-मॉडल, एनजी-क्लिक… आदि आदि का उपयोग करके वेब तत्वों के गतिशील परिवर्तनों को संभाल सकता है (जो सेलेनियम नहीं कर सकता है)।
इस लेख का योगदान रंजीत कुमार एनिशेट्टी द्वारा दिया गया है