QTP - त्वरित गाइड
QTP का अर्थ है QuickTEST Professional, का एक उत्पाद Hewlett Packard (HP)। यह टूल स्क्रिप्ट के विकास के पूरा होने के बाद, परीक्षकों को बिना किसी निगरानी के स्वचालित रूप से कार्यात्मक परीक्षण करने में मदद करता है।
HP QTP का उपयोग करता है Visual Basic Scripting (VBScript)अनुप्रयोगों को स्वचालित करने के लिए। स्क्रिप्टिंग इंजन को विशेष रूप से स्थापित करने की आवश्यकता नहीं है, क्योंकि यह विंडोज ओएस के एक भाग के रूप में उपलब्ध है। VBScript का वर्तमान संस्करण 5.8 है, जो विन 7 के एक भाग के रूप में उपलब्ध है। VBScript एक वस्तु-उन्मुख भाषा नहीं है, बल्कि एक वस्तु-आधारित भाषा है।
परीक्षण उपकरण
सॉफ़्टवेयर परीक्षण संदर्भ के उपकरण, एक उत्पाद के रूप में परिभाषित किए जा सकते हैं जो योजना, आवश्यकताओं, निर्माण, परीक्षण निष्पादन, दोष लॉगिंग और परीक्षण विश्लेषण से एक या अधिक परीक्षण गतिविधियों का समर्थन करता है।
औजारों का वर्गीकरण
उपकरण को कई मापदंडों के आधार पर वर्गीकृत किया जा सकता है। इसमें शामिल हैं -
- उपकरण का उद्देश्य
- उपकरण के भीतर समर्थित गतिविधियाँ
- इसका परीक्षण करने का प्रकार / स्तर।
- लाइसेंस का प्रकार (खुला स्रोत, फ्रीवेयर, वाणिज्यिक)
- तकनीक का इस्तेमाल किया
उपकरण के प्रकार
अनु क्रमांक। | टूल प्रकार | के लिए इस्तेमाल होता है | द्वारा इस्तेमाल किया |
---|---|---|---|
1 | टेस्ट मैनेजमेंट टूल | परीक्षण प्रबंधन, शेड्यूलिंग, दोष लॉगिंग, ट्रैकिंग और विश्लेषण। | परीक्षक |
2 | कॉन्फ़िगरेशन प्रबंधन उपकरण | कार्यान्वयन, निष्पादन, ट्रैकिंग परिवर्तन के लिए | सभी टीम के सदस्य |
3 | स्थैतिक विश्लेषण उपकरण | स्थैतिक परीक्षण | डेवलपर्स |
4 | टेस्ट डेटा प्रीपरेशन टूल्स | विश्लेषण और डिजाइन, परीक्षण डेटा पीढ़ी | परीक्षक |
5 | परीक्षण निष्पादन उपकरण | कार्यान्वयन, निष्पादन | परीक्षक |
6 | तुलना करने वाले परीक्षण करें | अपेक्षित और वास्तविक परिणामों की तुलना करना | सभी टीम के सदस्य |
7 | कवरेज माप उपकरण | संरचनात्मक कवरेज प्रदान करता है | डेवलपर्स |
8 | प्रदर्शन परीक्षण उपकरण | प्रदर्शन, प्रतिक्रिया समय की निगरानी करना | परीक्षक |
9 | प्रोजेक्ट प्लानिंग और ट्रैकिंग टूल | योजना के लिए | परियोजना प्रबंधक |
10 | हादसा प्रबंधन उपकरण | परीक्षणों के प्रबंधन के लिए | परीक्षक |
QTP कहाँ में फिट बैठता है?
QTP एक कार्यात्मक परीक्षण उपकरण है, जो अनुप्रयोगों के प्रतिगमन परीक्षण के लिए सबसे उपयुक्त है। QTP एक लाइसेंस प्राप्त / वाणिज्यिक उपकरण है जो HP के स्वामित्व में है, जो बाजार में उपलब्ध सबसे लोकप्रिय उपकरणों में से एक है। यह वास्तविक और अपेक्षित परिणाम की तुलना करता है और निष्पादन सारांश में परिणामों की रिपोर्ट करता है।
QTP - इतिहास और विकास
एचपी क्विक टेस्ट प्रोफेशनल मूल रूप से मर्क्यूरी इंटरएक्टिव के स्वामित्व में था और इसे एचपी ने अधिग्रहित किया था। इसका मूल नाम एस्ट्रा क्विक टेस्ट था और बाद में इसे क्विक टेस्ट प्रोफेशनल के रूप में नामित किया गया था लेकिन नवीनतम संस्करण को यूनिफाइड फंक्शनल टेस्टर (यूएफटी) के रूप में जाना जाता है।
संस्करण इतिहास
अब हम QTP के संस्करण इतिहास पर एक नज़र डालते हैं।
संस्करणों | समयसीमा |
---|---|
एस्ट्रा क्विक टेस्ट v1.0 से v5.5 - बुध इंटरएक्टिव | मई 1998 से अगस्त 2001 तक |
क्विकटेस्ट प्रोफेशनल v6.5 से v9.0 - मर्क्यूरी इंटरएक्टिव | सितम्बर 2003 से अप्रैल 2006 तक |
Hp-QuickTest Professional v9.1 to v11.0 - एचपी द्वारा अधिग्रहित और विमोचित | फरवरी 2007 से सितंबर 2010 तक |
एचपी-यूनिफाइड फंक्शनल टेस्टिंग v11.5 से v11.53 | 2012 से नवंबर 2013 तक |
लाभ
VBScript का उपयोग करके स्वचालित परीक्षणों का विकास करना एक उच्च कुशल कोडर की आवश्यकता नहीं है और अन्य ऑब्जेक्ट उन्मुख प्रोग्रामिंग भाषाओं की तुलना में अपेक्षाकृत आसान है।
उपयोग में आसान, नेविगेशन में आसानी, परिणाम सत्यापन और रिपोर्ट जनरेशन।
आसानी से परीक्षण प्रबंधन उपकरण (एचपी-गुणवत्ता केंद्र) के साथ एकीकृत होता है जो आसान समय-निर्धारण और निगरानी में सक्षम बनाता है।
मोबाइल एप्लीकेशन टेस्टिंग के लिए भी इस्तेमाल किया जा सकता है।
चूंकि यह एक एचपी उत्पाद है, तकनीकी मुद्दों को संबोधित करने के लिए एचपी द्वारा और इसके मंचों द्वारा पूर्ण समर्थन प्रदान किया जाता है।
नुकसान
सेलेनियम के विपरीत, QTP विंडोज ऑपरेटिंग सिस्टम में ही काम करता है।
ब्राउज़रों के सभी संस्करणों का समर्थन नहीं किया जाता है और परीक्षकों को पैच की प्रतीक्षा करने की आवश्यकता होती है ताकि हर एक प्रमुख संस्करण के लिए जारी किया जा सके।
कहा गया है, कि यह एक वाणिज्यिक उपकरण है, लाइसेंस की लागत बहुत अधिक है।
हालांकि स्क्रिप्टिंग का समय कम है, निष्पादन समय अपेक्षाकृत अधिक है क्योंकि यह सीपीयू और रैम पर भार डालता है।
किसी भी स्वचालित उपकरण के कार्यान्वयन के लिए, इसके चरण / चरण निम्नलिखित हैं। प्रत्येक चरण में एक विशेष गतिविधि से मेल खाती है और प्रत्येक चरण का एक निश्चित परिणाम होता है।
Test Automation Feasibility Analysis- पहला कदम यह जांचना है कि आवेदन स्वचालित हो सकता है या नहीं। इसकी सीमाओं के कारण सभी अनुप्रयोगों को स्वचालित नहीं किया जा सकता है।
Appropriate Tool Selection- अगला सबसे महत्वपूर्ण कदम उपकरणों का चयन है। यह उस तकनीक पर निर्भर करता है जिसमें एप्लिकेशन बनाया गया है, इसकी विशेषताएं और उपयोग।
Evaluate the suitable framework- उपकरण का चयन करने पर, अगली गतिविधि एक उपयुक्त रूपरेखा का चयन करना है। विभिन्न प्रकार के फ्रेमवर्क हैं और प्रत्येक फ्रेमवर्क का अपना महत्व है। हम इस ट्यूटोरियल में बाद में विस्तार से रूपरेखा तैयार करेंगे।
Build Proof of Concept- उपकरण के अनुप्रयोग के स्वचालन का समर्थन कर सकता है, तो मूल्यांकन करने के लिए एंड-टू-एंड परिदृश्य के साथ प्रूफ ऑफ कॉन्सेप्ट (POC) विकसित किया गया है। यह एंड-टू-एंड परिदृश्य के साथ किया जाता है, जो यह सुनिश्चित करता है कि प्रमुख कार्यक्षमताएं स्वचालित हो सकती हैं।
Develop Automation Framework- POC के निर्माण के बाद, ढांचागत विकास किया जाता है, जो किसी भी परीक्षण स्वचालन परियोजना की सफलता के लिए एक महत्वपूर्ण कदम है। आवेदन द्वारा उपयोग की जाने वाली तकनीक के परिश्रमपूर्ण विश्लेषण के बाद फ्रेमवर्क बनाया जाना चाहिए और इसकी प्रमुख विशेषताएं भी।
Develop Test Script, Execute, and Analyze- स्क्रिप्ट का विकास पूरा हो जाने के बाद, स्क्रिप्ट निष्पादित हो जाती है, परिणामों का विश्लेषण किया जाता है और दोषों को लॉग किया जाता है, यदि कोई हो। टेस्ट लिपियों को आमतौर पर संस्करण नियंत्रित किया जाता है।
QTP एक वाणिज्यिक उपकरण है और परीक्षण संस्करण को सीधे HP साइट से डाउनलोड किया जा सकता है। केवल वर्तमान संस्करण, जो एकीकृत कार्यात्मक परीक्षण (11.5x) डाउनलोड के लिए उपलब्ध है। निम्नलिखित URL है जहाँ से परीक्षण संस्करण डाउनलोड किया जा सकता है।
डाउनलोड URL - QTP
स्थापना प्रक्रिया
Step 1 - "ट्रायल्स एंड डेमोस" लिंक पर क्लिक करें और "एचपी यूनिफाइड फंक्शनल टेस्टिंग 11.50 सीसी इंग्लिश एसडब्ल्यू ई-मीडिया मूल्यांकन" का चयन करें जैसा कि नीचे दिखाया गया है -
Step 2- "एचपी यूनिफाइड फंक्शनल टेस्टिंग 11.50" का चयन करने के बाद, डाउनलोड विज़ार्ड खुलता है। व्यक्तिगत विवरण भरें और अगला पर क्लिक करें।
Step 3 - 'उपयोग की शर्तें' पढ़ें और "अगला" पर क्लिक करें।
Step 4- डाउनलोड विंडो खुलती है। अब, "डाउनलोड" बटन पर क्लिक करें।
Step 5- डाउनलोड की गई फाइल फॉर्मेट .RAR की होगी। अब आपको संग्रह को अनज़िप करने की आवश्यकता है और फ़ोल्डर की सामग्री नीचे दिखाई जाएगी और Setup.exe निष्पादित करें।
Step 6 - स्थापित करने के लिए, सेटअप फ़ाइल को निष्पादित करने पर, नीचे दी गई सूची से "एकीकृत कार्यात्मक परीक्षण सेट अप" चुनें -
Step 7 - फिर जारी रखने के लिए Next पर क्लिक करें।
Step 8- कस्टम सेट अप विंडो में, आपके स्वचालन के लिए आवश्यक प्लगइन्स का चयन करें अर्थात आपको परीक्षण के तहत अपने आवेदन की तकनीक के आधार पर प्लगइन्स का चयन करना चाहिए। उदाहरण के लिए, यदि आपका आवेदन .NET पर आधारित है तो आपको यह सुनिश्चित करना चाहिए कि आप .NET का चयन करें।
Step 9- स्थापना के लिए आवश्यक प्लगइन्स का चयन करने के बाद, अगला क्लिक करें। स्थापना के पूरा होने के बाद, आप एक समाप्त बटन विंडो के साथ समाप्त हो जाएंगे।
Step 10- एक बार जब आप अपनी स्थापना पूरी कर लेते हैं, तो "अतिरिक्त स्थापना आवश्यकताएँ" डायलॉग बॉक्स खुल जाता है। "रन लाइसेंस इंस्टॉलेशन विज़ार्ड" के अलावा सूची में सब कुछ का चयन करें और "RUN" पर क्लिक करें। हमें "रन लाइसेंस इंस्टॉलेशन विज़ार्ड" का चयन करने की आवश्यकता नहीं है क्योंकि हम परीक्षण संस्करण स्थापित कर रहे हैं, जो डिफ़ॉल्ट रूप से, 30 दिनों के लिए लाइसेंस देता है।
Step 11- अतिरिक्त स्थापना आवश्यकताओं के पूरा होने के बाद, एक टिक मार्क दिखाया जाता है, जो बदले में बताता है कि घटक सफलतापूर्वक स्थापित हैं। अब, बंद करें पर क्लिक करें।
UFT और Add ins Page लॉन्च करना
Step 1 - इंस्टॉलेशन के बाद, एप्लिकेशन स्टार्ट मेनू से लॉन्च किया जा सकता है जैसा कि आंकड़े में दिखाया गया है।
Step 2- लाइसेंस पृष्ठ प्रकट होता है। आप जारी रखें पर क्लिक कर सकते हैं क्योंकि हमने परीक्षण लाइसेंस स्थापित किया है।
Step 3 - ऐड-इन्स संवाद बॉक्स उपयोगकर्ता के लिए आवश्यक ऐड-इन्स का चयन करने के लिए खुलता है।
Note - सभी ऐड-इन्स को लोड न करें, लेकिन केवल आवश्यक ऐड-इन्स और ओके पर क्लिक करें।
Step 4 - आवश्यक ऐड-इन्स लोड करने के बाद, उपयोगकर्ता के लिए UFT 11.5 टूल खुलता है और UFT की पहली झलक दिखती है, जैसा कि नीचे दिखाया गया है -
परीक्षण की रिकॉर्डिंग, परीक्षण के तहत एप्लिकेशन के उपयोगकर्ता कार्यों को रिकॉर्ड करने से मेल खाती है ताकि UFT स्वचालित रूप से उन स्क्रिप्ट को उत्पन्न कर सके जिन्हें वापस खेला जा सकता है। रिकॉर्ड और प्लेबैक हमें टूल की पहली छाप दे सकता है, चाहे वह तकनीक का समर्थन कर सके या नहीं, यदि प्रारंभिक सेटिंग्स सही ढंग से की गई हों।
रिकॉर्ड और प्लेबैक के लिए कदम इस प्रकार हैं -
Step 1 - नीचे दिखाए गए अनुसार प्रारंभ पृष्ठ से "नया" परीक्षण पर क्लिक करें -
Step 2- "नया" लिंक पर क्लिक करने पर, एक नई परीक्षण विंडो खुलती है और उपयोगकर्ता को परीक्षण प्रकार का चयन करने की आवश्यकता होती है। "जीयूआई टेस्ट" का चयन करें, परीक्षण और उस स्थान के लिए एक नाम दें जहां इसे सहेजने की आवश्यकता है।
Step 3- एक बार एक नई परीक्षा तैयार हो जाने के बाद, नई परीक्षा स्क्रीन खुलती है जैसा कि नीचे दिखाया गया है। अब, "एक्शन 1" टैब पर क्लिक करें, जो डिफ़ॉल्ट रूप से 1 क्रिया के साथ बनाया गया है।
Step 4 - "रिकॉर्ड" मेनू पर क्लिक करें और नीचे दिखाए अनुसार "रिकॉर्ड और रन सेटिंग्स" चुनें -
Step 5- रिकॉर्ड और रन सेटिंग्स डायलॉग बॉक्स खुलता है और एप्लिकेशन के प्रकार के आधार पर, कोई भी वेब, जावा या विंडोज एप्लिकेशन का चयन कर सकता है। उदाहरण के लिए, यहां, हम एक वेब आधारित एप्लिकेशन (http://easycalacle.com/) रिकॉर्ड करेंगे।
Step 6- क्लिक करें। इंटरनेट एक्सप्लोरर वेब पते के साथ स्वचालित रूप से खुलता हैhttps://www.easycalculation.com/सेटिंग्स के अनुसार। "बीजगणित" के तहत "संख्या" लिंक पर क्लिक करें और एक संख्या में कुंजी और "गणना करें" पर हिट करें। कार्रवाई पूरी होने के बाद, रिकॉर्ड पैनल में "स्टॉप" बटन पर क्लिक करें। आप देखेंगे कि स्क्रिप्ट नीचे दी गई जानकारी के अनुसार बनाई गई है -
Step 7- अब प्लेबैक बटन पर क्लिक करके स्क्रिप्ट को प्लेबैक करें। स्क्रिप्ट पुन: प्रदर्शित होती है और परिणाम प्रदर्शित होता है।
Step 8 - परिणाम विंडो को डिफ़ॉल्ट रूप से खोला जाता है, जो वास्तव में निष्पादन, पास और असफल चरणों का टाइमस्टैम्प दिखाता है।
रिकॉर्ड और प्लेबैक का महत्व
यह सत्यापित करने के लिए प्रारंभिक जांच पद्धति के रूप में उपयोग किया जाता है कि क्या UFT प्रौद्योगिकी / अनुप्रयोग का समर्थन कर सकता है।
परीक्षण को किसी अनुप्रयोग या सुविधा की एक बुनियादी कार्यक्षमता बनाने के लिए उपयोग किया जाता है जिसमें दीर्घकालिक रखरखाव की आवश्यकता नहीं होती है।
इसका उपयोग माउस के मूवमेंट और कीबोर्ड इनपुट दोनों को रिकॉर्ड करने के लिए किया जा सकता है।
रिकॉर्डिंग के मोड
Normal Recording - यह डिफ़ॉल्ट रिकॉर्डिंग मोड है जो ऑब्जेक्ट्स और ऑपरेशन पर परीक्षण के तहत किए गए कार्यों को रिकॉर्ड करता है।
Analog Recording - यह न केवल कीबोर्ड क्रियाओं को बल्कि स्क्रीन या एप्लिकेशन विंडो के सापेक्ष माउस आंदोलनों को भी रिकॉर्ड करता है।
Low-Level Recording- यह इस तथ्य से स्वतंत्र वस्तुओं के सटीक समन्वय को रिकॉर्ड करता है कि क्या UFT ऑब्जेक्ट को पहचानता है या नहीं। यह सिर्फ सह-निर्देश रिकॉर्ड करता है, इसलिए माउस आंदोलनों को रिकॉर्ड नहीं करता है।
Insight Recording - यूएफटी रिकॉर्ड संचालन, इसकी उपस्थिति के आधार पर और इसके मूल गुणों के आधार पर नहीं।
रिकॉर्डिंग मोड कैसे चुनें
रिकॉर्डिंग बटन पर क्लिक करने के बाद, उपयोगकर्ता रिकॉर्डिंग शुरू होने वाले रिकॉर्डिंग फलक से रिकॉर्डिंग मोड को चुन सकता है, एक बार रिकॉर्डिंग शुरू होने पर। चयन उन लोगों में से किसी से किया जा सकता है जिनकी ऊपर चर्चा की गई है।
आप देखेंगे कि निम्नलिखित परिदृश्य सभी मोड में दर्ज किया गया है और एक ही कार्रवाई विभिन्न परिस्थितियों में दर्ज की गई है।
- IE लॉन्च करें - https://www.easycalculation.com/
- "बीजगणित" के तहत "संख्या" पर क्लिक करें
- "स्क्वायर रूट" लिंक पर क्लिक करें
- वर्गमूल की गणना करने के लिए एक मान दर्ज करें। हम कहते हैं 10
- हिट की गणना
डिफ़ॉल्ट, एनालॉग और निम्न स्तर रिकॉर्डिंग मोड के तहत रिकॉर्ड की गई स्क्रिप्ट नीचे दी गई है -
' DEFAULT RECORDING MODE
Browser("Free Online Math Calculator").Page("Free Online Math
Calculator").Link("Numbers").Click
Browser("Free Online Math Calculator").Page("Numbers Calculator -
Math").Link("Square Root").Click
Browser("Free Online Math Calculator").Page("Square Root
Calculator").WebEdit("n").Set "10"
Browser("Free Online Math Calculator").Page("Square Root
Calculator").WebButton("calculate").Click
' ANALOG RECORDING MODE
Desktop.RunAnalog "Track1"
' LOW LEVEL RECORDING MODE
Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click
235,395
Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click
509,391
Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click
780,631
Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Type
"10"
Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click
757,666
अंतर्दृष्टि रिकॉर्डिंग मोड का उपयोग करते हुए रिकॉर्डिंग नीचे दी गई है -
ऑब्जेक्ट रिपोजिटरी
ऑब्जेक्ट रिपोजिटरी ऑब्जेक्ट और गुणों का एक संग्रह है जिसके साथ QTP ऑब्जेक्ट्स को पहचानने और उस पर कार्य करने में सक्षम होगा। जब कोई उपयोगकर्ता एक परीक्षण रिकॉर्ड करता है, तो ऑब्जेक्ट और उसके गुण डिफ़ॉल्ट रूप से कैप्चर किए जाते हैं। वस्तुओं और इसके गुणों को समझने के बिना, QTP स्क्रिप्ट वापस नहीं खेल पाएगा।
ऑब्जेक्ट रिपॉजिटरी और उससे जुड़ी विशेषताओं के बारे में अधिक जानने के लिए निम्न विषयों में से प्रत्येक पर क्लिक करें।
अनु क्रमांक। | विषय विवरण |
---|---|
1 | ऑब्जेक्ट स्पाई और इसकी विशेषताएं ऑब्जेक्ट स्पाई और उससे जुड़ी कार्यक्षमता के उपयोग को समझने के लिए। |
2 | ऑब्जेक्ट रिपोजिटरी के साथ काम करना ऑब्जेक्ट रिपॉजिटरी और उससे जुड़ी कार्यप्रणालियों से वस्तुओं को जोड़ना, संपादित करना, हटाना। |
3 | ऑब्जेक्ट रिपोजिटरी के प्रकार स्क्रिप्टिंग के संबंध में साझा वस्तु और स्थानीय वस्तु भंडार और उनके संदर्भ से संबंधित है। |
4 | उपयोगकर्ता-परिभाषित ऑब्जेक्ट उपयोगकर्ता-परिभाषित ऑब्जेक्ट का उपयोग करने के लिए परिस्थितियों से संबंधित है। |
5 | XML में ऑब्जेक्ट रिपोजिटरी XML को रूपांतरित करने और XML के रूप में ऑब्जेक्ट रिपोजिटरी का उपयोग करने से संबंधित है। |
6 | तुलना और विलय या तुलना या ', मर्ज ऑर' जैसे ऑपरेशन ऑब्जेक्ट रिपोजिटरी के साथ प्रभावी ढंग से काम करने के लिए हैं। |
7 | साधारण पहचानकर्ता परिस्थितियाँ जहाँ क्रमिक पहचानकर्ताओं का उपयोग किया जाता है और इसके फायदे। |
8 | बाल वस्तुओं प्रभावी स्क्रिप्टिंग के लिए चाइल्ड ऑब्जेक्ट्स का उपयोग करना |
क्रियाएँ, QTP कथनों के समूहों में स्क्रिप्ट को विभाजित करने में परीक्षकों की मदद करती हैं। क्रियाएँ VBScript में कार्यों के समान हैं; हालाँकि, कुछ अंतर हैं। डिफ़ॉल्ट रूप से, QTP एक कार्रवाई के साथ एक परीक्षण बनाता है।
कार्रवाई | कार्यों |
---|---|
कार्रवाई QTP की एक अंतर्निहित सुविधा है। | VBScript फ़ंक्शंस VBScript और QTP दोनों द्वारा समर्थित हैं। |
क्रिया पैरामीटर केवल मूल्य द्वारा पारित किए जाते हैं। | फ़ंक्शन पैरामीटर या तो मान द्वारा या रेफ द्वारा पारित किए जाते हैं। |
क्रियाओं का विस्तार .mts है | फ़ंक्शंस को .vbs या .qfl के रूप में सहेजा जाता है |
क्रियाएँ पुन: प्रयोज्य हो सकती हैं या नहीं। | कार्य हमेशा पुन: प्रयोज्य होते हैं। |
कार्रवाई के गुणों को स्क्रिप्ट संपादक विंडो पर राइट क्लिक करके और "गुण" का चयन करके पहुँचा जा सकता है।
क्रिया गुणों में निम्न जानकारी होती है -
- कार्रवाई का नाम
- Location
- पुन: प्रयोज्य ध्वज
- इनपुट पैरामीटर्स
- आउटपुट पैरामीटर
क्रिया के प्रकार
तीन प्रकार की क्रियाएं हैं -
Non-reusable action - एक क्रिया जिसे केवल उस विशिष्ट परीक्षण में कहा जा सकता है जिसमें इसे डिजाइन किया गया है और केवल एक बार ही बुलाया जा सकता है।
Reusable action - एक क्रिया जिसे कई बार कहा जा सकता है, कोई भी परीक्षण जिसमें वह रहता है, और किसी अन्य परीक्षण द्वारा भी उपयोग किया जा सकता है।
External Reusable action- यह एक पुन: प्रयोज्य कार्रवाई एक और परीक्षण में संग्रहीत है। बाह्य क्रियाएं केवल कॉलिंग टेस्ट में पढ़ी जाती हैं, लेकिन इसका उपयोग बाहरी कार्रवाई के लिए डेटा तालिका जानकारी की संपादन योग्य प्रतिलिपि के साथ स्थानीय रूप से किया जा सकता है।
क्रियाओं के साथ काम करना
किसी क्रिया को सम्मिलित करने के लिए तीन विकल्प हैं। चयनित प्रकार की कार्रवाई के बारे में अधिक जानने के लिए उनमें से प्रत्येक पर क्लिक करें।
अनु क्रमांक। | क्रिया प्रकार और विवरण |
---|---|
1 | नए एक्शन में कॉल डालें मौजूदा क्रिया से एक नई क्रिया सम्मिलित करता है |
2 | कॉल टू एक्शन कॉपी डालें एक मौजूदा कार्रवाई की एक प्रति सम्मिलित करता है |
3 | मौजूदा कार्रवाई में कॉल डालें मौजूदा पुन: प्रयोज्य कार्रवाई के लिए एक कॉल सम्मिलित करता है |
Microsoft Excel के समान एक डेटाटेबल, परीक्षकों को डेटा-संचालित परीक्षण मामलों को बनाने में मदद करता है जिनका उपयोग कई बार एक्शन चलाने के लिए किया जा सकता है। डेटाटैबल्स दो प्रकार के होते हैं -
Local DataTable - प्रत्येक कार्रवाई का अपना निजी डेटा है, जिसे स्थानीय डेटा योग्य भी कहा जाता है, जिसे कार्रवाई के दौरान भी एक्सेस किया जा सकता है।
Global DataTable - प्रत्येक परीक्षण में एक वैश्विक डेटा शीट होती है जो कार्यों के दौरान सुलभ होती है।
डेटा शीट को QTP के "डेटा" टैब से एक्सेस किया जा सकता है जैसा कि नीचे दिखाया गया है -
कुछ निर्दिष्ट संख्या में पुनरावृत्तियों के लिए एक परीक्षण मामले को निष्पादित करने के लिए, कोई व्यक्ति परीक्षण सेटिंग संवाद में वैश्विक डेटाटेबल के पुनरावृत्तियों को सेट कर सकता है, जिसे नीचे दिखाए गए अनुसार फ़ाइल → सेटिंग्स → रन (टैब) का उपयोग करके एक्सेस किया जा सकता है -
उदाहरण
उदाहरण के लिए, यदि कोई उपयोगकर्ता "चक्रवृद्धि ब्याज" का पैरामीटर बनाना चाहता है http://easycalculation.com/ का उपयोग करके पहुँचा जा सकता है http://easycalculation.com/compound-interest.php। पैरामीटर नीचे दिखाए गए अनुसार बनाया जा सकता है। एक्सेल की अधिकांश कार्यप्रणालियों का उपयोग डेटा तालिका में भी किया जा सकता है।
डेटाटेबल ऑपरेशन
DataTable तक पहुँचने के लिए तीन प्रकार की वस्तुएँ हैं। निम्नलिखित के माध्यम से ट्रेस करके डेटाटेबल ऑपरेशन को अच्छी तरह से समझा जा सकता है -
अनु क्रमांक। | ऑब्जेक्ट प्रकार और विवरण |
---|---|
1 | डेटा टेबल के तरीके डेटा तालिका विधियों के बारे में विस्तृत जानकारी देता है। |
2 | DTParameter ऑब्जेक्ट मेथड्स DTParameter विधियों के बारे में विस्तृत जानकारी देता है। |
3 | DTSheet ऑब्जेक्ट तरीके DTSheet विधियों के बारे में विस्तृत जानकारी देता है। |
चेकपॉइंट्स, जैसा कि नाम यह सब कहता है, एक सत्यापन बिंदु को संदर्भित करता है जो निर्दिष्ट गुणों के वर्तमान मूल्य या किसी वस्तु की वर्तमान स्थिति की तुलना अपेक्षित मूल्य के साथ करता है, जिसे स्क्रिप्ट में किसी भी समय डाला जा सकता है।
चौकी के प्रकार
अनु क्रमांक। | टाइप और विवरण |
---|---|
1 | Standard Checkpoint परीक्षण के तहत आवेदन में एक वस्तु के संपत्ति मूल्यों को सत्यापित करता है और सभी ऐड-इन वातावरण द्वारा समर्थित है। |
2 | Bitmap Checkpoint बिटमैप के रूप में आपके आवेदन का एक क्षेत्र सत्यापित करता है |
3 | File Content Checkpoint पाठ को डायनेमिक रूप से उत्पन्न या एक्सेस की गई फ़ाइल जैसे .txt, .pdf में सत्यापित करता है |
4 | Table Checkpoint तालिका के भीतर सूचना का सत्यापन करता है। सभी वातावरण समर्थित नहीं हैं। |
5 | Text Checkpoint निर्दिष्ट मानदंड के अनुसार, सत्यापित करें कि पाठ को विंडोज-आधारित एप्लिकेशन में किसी परिभाषित क्षेत्र में प्रदर्शित किया गया है या नहीं। |
6 | Text Area Checkpoint निर्दिष्ट मानदंड के अनुसार, यदि पाठ स्ट्रिंग को विंडोज-आधारित एप्लिकेशन में परिभाषित क्षेत्र के भीतर प्रदर्शित किया जाता है। |
7 | Accessibility Checkpoint पृष्ठ को सत्यापित करता है और वेब साइट के उन क्षेत्रों की रिपोर्ट करता है जो वर्ल्ड वाइड वेब कंसोर्टियम (W3C) वेब सामग्री एक्सेसिबिलिटी दिशानिर्देशों के अनुरूप नहीं हो सकते हैं |
8 | Page Checkpoint एक वेब पेज की विशेषताओं को सत्यापित करता है। यह टूटे हुए लिंक की भी जांच कर सकता है। |
9 | Database Checkpoint परीक्षण के तहत एप्लिकेशन द्वारा एक्सेस किए गए डेटाबेस की सामग्री को सत्यापित करता है। |
10 | XML Checkpoint वेब पृष्ठों और फ़्रेमों में .xml दस्तावेज़ों या .xml दस्तावेज़ों की सामग्री की जाँच करता है। |
चेकपॉइंट सम्मिलित करना
जब उपयोगकर्ता एक चेकपॉइंट सम्मिलित करना चाहता है, तो किसी को यह सुनिश्चित करना होता है कि अधिकांश चौकियों को रिकॉर्डिंग सत्रों के दौरान ही समर्थन किया जाता है। एक बार जब उपयोगकर्ता रिकॉर्डिंग बंद कर देता है, तो चौकियों को सक्षम नहीं किया जाता है।
नीचे दिया गया चेकपॉइंट मेनू है, जब उपयोगकर्ता रिकॉर्डिंग मोड में नहीं है।
नीचे दिया गया चेकपॉइंट मेनू है, जब उपयोगकर्ता रिकॉर्डिंग मोड में है।
उदाहरण
चौकियों को परीक्षण के तहत जोड़ा जाता है - "http://easycalacle.com/"
' 1. Inserted Standard Checkpoint
Status = Browser("Math Calculator").Page("Math
Calculator").Link("Numbers").Check CheckPoint("Numbers")
If Status Then
print "Checkpoint Passed"
Else
Print "Checkpoint Failed"
End if
' 2. Inserted BitMap Checkpoint
imgchkpoint = Browser("Math Calculator").Page("Math
Calculator").Image("French").Check CheckPoint("French")
If imgchkpoint Then
print "Checkpoint Passed"
Else
Print "Checkpoint Failed"
End if
चेकपॉइंट गुण देखना
डालने के बाद, यदि कोई परीक्षक मानों को बदलना चाहता है, तो हम स्क्रिप्ट के कीवर्ड 'चेकपॉइंट' पर राइट क्लिक करके और नीचे दिखाए गए अनुसार "चेकपॉइंट गुण" पर नेविगेट कर सकते हैं -
आप ऑब्जेक्ट रिपॉजिटरी में समान चौकियों का पता लगा सकते हैं, साथ ही नीचे दिखाया गया है। यह वास्तव में दिखाता है कि किस प्रकार की चौकी का उपयोग किया जाता है और अपेक्षित मूल्य और टाइम आउट मान क्या हैं।
सिंक्रोनाइज़ेशन पॉइंट टूल और एप्लिकेशन के बीच का समय इंटरफेस है। तुल्यकालन बिंदु परीक्षण स्क्रिप्ट के दो चरणों के बीच देरी समय निर्दिष्ट करने की एक विशेषता है।
उदाहरण के लिए, किसी लिंक पर क्लिक करने पर पृष्ठ लोड हो सकता है 1 सेकंड, कभी-कभी 5 सेकंड या यहां तक कि इसे पूरी तरह से लोड करने में 10 सेकंड लग सकते हैं। यह विभिन्न कारकों पर निर्भर करता है जैसे एप्लिकेशन-सर्वर प्रतिक्रिया समय, नेटवर्क बैंडविड्थ और क्लाइंट सिस्टम क्षमताएं।
यदि समय अलग-अलग है तो स्क्रिप्ट विफल हो जाएगी, जब तक कि परीक्षक इन समय के अंतर को समझदारी से नहीं संभालता।
सिंक प्वाइंट डालने के तरीके
- WaitProperty
- Exist
- Wait
- सिंक (केवल वेब आधारित ऐप्स के लिए)
- QTP इनबिल्ट सिंक्रोनाइज़ेशन पॉइंट सम्मिलित करना।
हम कहते हैं, हमें "संख्या" लिंक पर क्लिक करने और " www.easycalacle.com " में "साधारण ब्याज" कैलकुलेटर पर क्लिक करने के बीच एक सिंक बिंदु सम्मिलित करने की आवश्यकता है । अब हम उपरोक्त परिदृश्य के लिए सिंक पॉइंट सम्मिलित करने के सभी पाँच तरीकों पर एक नज़र डालेंगे।
विधि 1 - WaitProperty
WaitProperty एक ऐसी विधि है जो सिंक करने के लिए इनपुट के रूप में संपत्ति का नाम, मान और टाइमआउट मान लेता है। यह एक गतिशील प्रतीक्षा है और इसलिए, इस विकल्प को प्रोत्साहित किया जाता है।
' Method 1 - WaitProperty with 25 seconds
Dim obj
Set obj = Browser("Math Calculator").Page("Math Calculator")
obj.Link("Numbers").Click
obj.Link("Simple Interest").WaitProperty "text", "Simple Interest",25000
obj.Link("Simple Interest").Click
विधि 2 - अस्तित्व
एक्सिस्ट एक ऐसी विधि है जो सिंक करने के लिए इनपुट के रूप में टाइमआउट मान लेता है। फिर से, यह एक गतिशील प्रतीक्षा है और इसलिए इस विकल्प को प्रोत्साहित किया जाता है।
' Method 2 : Exist Timeout - 30 Seconds
Dim obj
Set obj = Browser("Math Calculator").Page("Math Calculator")
obj.Link("Numbers").Click
If obj.Link("Simple Interest").Exist(30) Then
obj.Link("Simple Interest").Click
Else
Print "Link NOT Available"
End IF
विधि 3 - प्रतीक्षा करें
प्रतीक्षा एक हार्डकोड समन्वयन बिंदु है, जो घटना के स्वतंत्र होने या न होने की प्रतीक्षा करता है। इसलिए, प्रतीक्षा का उपयोग हतोत्साहित किया जाता है और इसे कम प्रतीक्षा समय जैसे 1 या 2 सेकंड के लिए उपयोग किया जा सकता है।
' Method 3 : Wait Timeout - 30 Seconds
Dim obj
Set obj = Browser("Math Calculator").Page("Math Calculator")
obj.Link("Numbers").Click
wait(30)
Browser("Math Calculator").Page("Math Calculator").Link("Simple Interest").Click
विधि 4 - सिंक विधि
सिंक विधि का उपयोग केवल उन वेब एप्लिकेशन के लिए किया जा सकता है, जहां पृष्ठ लोड के बीच हमेशा एक अंतराल होता है।
' Method 4 :
Dim obj
Set obj = Browser("Math Calculator").Page("Math Calculator")
obj.Link("Numbers").Click
Browser("Math Calculator").Sync
Browser("Math Calculator").Page("Math Calculator").Link("Simple Interest").Click
विधि 5 - QTP इनबिल्ट सिंक्रोनाइज़ेशन पॉइंट सम्मिलित करना
Step 1- रिकॉर्डिंग मोड में जाओ। यदि उपयोगकर्ता रिकॉर्डिंग मोड में नहीं है, तो यह विकल्प अक्षम हो जाएगा।
Step 2 - "डिज़ाइन" → "सिंक्रोनाइज़ेशन पॉइंट" पर जाएं।
Step 3- हमें ऑब्जेक्ट का चयन करना होगा, जिसे हम सिंक प्वाइंट बनना चाहते हैं। ऑब्जेक्ट का चयन करने के बाद, ऑब्जेक्ट विंडो खुलती है जैसा कि नीचे दिखाया गया है -
Step 4- क्लिक करें; "सिंक्रोनाइज़ेशन विंडो जोड़ें" खुलता है। संपत्ति, मूल्य और समय बाहर मूल्य का चयन करें और नीचे दिखाए अनुसार ठीक क्लिक करें -
Step 5 - नीचे दी गई जानकारी के अनुसार स्क्रिप्ट तैयार की जाएगी, जोकि वेटप्रॉपर्टी (विधि 1) के समान है जिसे हमने पहले ही देख लिया था -
Browser("Math Calculator").Page("Math Calculator").Link("Numbers").Click
Browser("Math Calculator").Page("Math Calculator").Link("Simple
Interest").WaitProperty "text", "Simple Interest", 10000
डिफ़ॉल्ट सिंक्रनाइज़ेशन
जब उपयोगकर्ता ने उपरोक्त सिंक विधियों में से किसी का भी उपयोग नहीं किया है, तब भी QTP में एक अंतर्निहित ऑब्जेक्ट सिंक्रनाइज़ेशन टाइमआउट है जिसे उपयोगकर्ता द्वारा समायोजित किया जा सकता है।
"फ़ाइल" >> "सेटिंग" पर नेविगेट करें> टैब चलाएं >> ऑब्जेक्ट सिंक्रनाइज़ेशन नीचे दिखाए गए समय के अनुसार।
कभी-कभी, QTP किसी भी ऐसी वस्तु को खोजने में असमर्थ होता है जो मान्यता प्राप्त वस्तु विवरण से मेल खाती हो या वह एक से अधिक उस वस्तु को खोज सकती है जो विवरण को फिट करती है, तो QTP मान्यता प्राप्त विवरण को अनदेखा करता है और वस्तु को पहचानने के लिए स्मार्ट पहचान प्रणाली का उपयोग करता है।
QTP की स्मार्ट पहचान दो प्रकार के गुणों का उपयोग करती है -
Base Filter Properties - किसी विशेष परीक्षण ऑब्जेक्ट क्लास के मूल गुण जिनके मूल ऑब्जेक्ट का सार बदले बिना नहीं बदला जा सकता है।
Optional Filter Properties - अन्य गुण भी एक विशेष वर्ग की वस्तुओं की पहचान करने में सहायता करते हैं जिनके गुणों में अक्सर परिवर्तन होने की संभावना नहीं होती है लेकिन यदि वे अब लागू नहीं होते हैं तो उन्हें अनदेखा किया जा सकता है।
किसी वस्तु के लिए स्मार्ट पहचान को सक्षम करना
Step 1- "टूल" → "ऑब्जेक्ट आइडेंटिफिकेशन" पर नेविगेट करें। ऑब्जेक्ट पहचान संवाद खुलता है।
Step 2 - पर्यावरण, ऑब्जेक्ट क्लास चुनें और नीचे दिखाए गए अनुसार "स्मार्ट पहचान सक्षम करें" को चालू करें -
Step 3 - कॉन्फ़िगर पर क्लिक करें और आधार और वैकल्पिक फ़िल्टर गुण चुनें।
Step 4- डिफॉल्ट एक के अलावा बेस प्रॉपर्टीज में प्रॉपर्टीज ऐड करें और ऑप्शनल फिल्टर प्रॉपर्टीज को भी जोड़ें / हटाएं। कृपया ध्यान दें कि समान गुण अनिवार्य और सहायक दोनों गुणों का हिस्सा नहीं हो सकते हैं और "ओके" पर क्लिक करें।
Step 5- ऑब्जेक्ट रिपोजिटरी में उस प्रकार के ऑब्जेक्ट को जोड़ने के बाद स्मार्ट पहचान सक्षम होने पर सत्यापित करें। स्मार्ट पहचान TRUE पर सेट की गई है। अगर हम स्मार्ट आइडेंटिफिकेशन को सक्षम नहीं करना चाहते हैं तो हम इसे गलत भी बना सकते हैं।
Step 6 - हम नीचे दिखाए गए अनुसार "फ़ाइल" मेनू के "सेटिंग्स" के तहत परीक्षण स्क्रिप्ट स्तर पर आवेदन करके एक परीक्षण स्तर को भी अक्षम कर सकते हैं -
Step 7 - यदि स्टेप # 6 के अनुसार स्मार्ट आइडेंटिफिकेशन को निष्क्रिय कर दिया जाता है तो यह स्क्रिप्ट निष्पादन के दौरान किसी भी वस्तु के लिए स्मार्ट आइडेंटिफिकेशन लागू नहीं करेगा।
Step 8 - अगर वस्तुओं को स्मार्ट पहचान के साथ जोड़ा जाता है, तो QTP भविष्य में पहचानने के लिए स्मार्ट पहचान का उपयोग नहीं करेगा, भले ही हमने इसे बाद में सक्षम किया हो।
डिबगिंग, ऑटोमेशन टेस्टिंग के संदर्भ में, ऑटोमेशन स्क्रिप्ट में कोडिंग मुद्दों को स्पॉट करने और ठीक करने की एक व्यवस्थित प्रक्रिया है ताकि स्क्रिप्ट अधिक मजबूत हो और आवेदन में दोषों को स्पॉट कर सके।
QTP में ब्रेक पॉइंट का उपयोग करके डिबगिंग करने के विभिन्न तरीके हैं। ब्रेक पॉइंट्स को "F9" दबाकर या मेनू विकल्प "रन" → "इंसर्टिंग / रिमूवल ब्रेक प्वाइंट" का उपयोग करके डाला जा सकता है।
ब्रेक प्वाइंट सम्मिलित करने के बाद, "रेड कलर्ड" डॉट और लाइन को लाल रंग में हाइलाइट किया जाएगा जैसा कि नीचे दिखाया गया है -
तरीका | छोटा रास्ता | विवरण |
---|---|---|
में कदम | F11 | प्रत्येक चरण को निष्पादित करने के लिए उपयोग किया जाता है। फ़ंक्शन / कार्रवाई में कदम और लाइन द्वारा लाइन निष्पादित करता है। यह निष्पादन के बाद प्रत्येक पंक्ति पर रुक जाता है। |
चहलकदमी | F10 | फंक्शन पर कदम रखने के लिए उपयोग किया जाता है। स्टेप ओवर सक्रिय दस्तावेज़ में केवल वर्तमान चरण चलता है। |
बाहर कदम | Shift + F11 | फ़ंक्शन में चरण के बाद, आप चरण आउट कमांड का उपयोग कर सकते हैं। चरण आउट कार्य के अंत तक रन जारी रखता है और फिर अगली पंक्ति में रन सत्र को रोक देता है। |
ब्रेक प्वाइंट में विकल्प
ब्रेक प्वाइंट में विभिन्न विकल्पों को 'रन' मेनू के माध्यम से नेविगेट करके पहुँचा जा सकता है।
अनु क्रमांक। | शॉर्टकुट और विवरण |
---|---|
1 | F9 ब्रेकपॉइंट डालें / निकालें |
2 | Ctrl+F9 सक्षम करें / ब्रेकप्वाइंट अक्षम करें |
3 | Ctrl+Shift+F9 क्लियर ऑल ब्रेकप्वाइंट |
4 | Use Only Menu सभी ब्रेकपॉइंट को सक्षम / अक्षम करें |
डिबगिंग पेन
डीबगिंग विंडो में निम्नलिखित पैन हैं -
Output - यह टैब प्रिंट स्टेटमेंट के सभी आउटपुट को प्रदर्शित करता है।
Watch - यह टैब दिए गए एक्सप्रेशन के बूलियन आउटपुट को प्रदर्शित करता है।
LocalVariables - यह टैब लोकल वेरिएबल्स के आउटपुट को प्रदर्शित करता है।
उदाहरण
घड़ी फलक आउटपुट अभिव्यक्ति को दिखाता है जैसा कि नीचे दिखाया गया है -
स्थानीय चर फलक स्थानीय चर द्वारा आयोजित मान दिखाता है जैसा कि नीचे दिखाया गया है -
QTP में त्रुटियों को संभालने के विभिन्न तरीके हैं। QTP के साथ काम करते समय तीन संभावित प्रकार की त्रुटियां होती हैं, एक का सामना होता है। वे हैं -
- सिंटेक्स त्रुटियां
- तार्किक त्रुटियां
- रन टाइम एरर्स
त्रुटि प्रकार
सिंटेक्स त्रुटियां
सिंटैक्स त्रुटियां टाइपोस या कोड का एक टुकड़ा है जो VBscripting भाषा व्याकरण के साथ पुष्टि नहीं करता है। सिंटैक्स त्रुटियां कोड के संकलन के समय होती हैं और जब तक कि त्रुटियों को ठीक नहीं किया जाता है तब तक इसे निष्पादित नहीं किया जा सकता है।
सिंटैक्स को सत्यापित करने के लिए, कीबोर्ड शॉर्टकट Ctrl + F7 का उपयोग करें और परिणाम नीचे दिखाया गया है। यदि विंडो प्रदर्शित नहीं होती है तो कोई "व्यू" → "त्रुटियां" पर नेविगेट कर सकता है।
तार्किक त्रुटियां
यदि स्क्रिप्ट वाक्यात्मक रूप से सही है, लेकिन यह अप्रत्याशित परिणाम उत्पन्न करती है, तो इसे तार्किक त्रुटि के रूप में जाना जाता है। तार्किक त्रुटि आमतौर पर निष्पादन को बाधित नहीं करती है लेकिन गलत परिणाम उत्पन्न करती है। तार्किक त्रुटियां विभिन्न कारणों से हो सकती हैं, आवश्यकता की गलत धारणाएं या गलतफहमी और कभी-कभी गलत प्रोग्राम लॉजिक्स (डू-अप के बजाय डू-एसे का उपयोग करना) या अनंत लूप।
तार्किक त्रुटि का पता लगाने के तरीकों में से एक सहकर्मी की समीक्षा करना है और यह सुनिश्चित करने के लिए QTP आउटपुट फ़ाइल / परिणाम फ़ाइल को सत्यापित करना है कि उपकरण ने उस तरीके का प्रदर्शन किया है जो वह करना चाहता था।
रनटाइम त्रुटियां
जैसा कि नाम बताता है, रन टाइम के दौरान इस तरह की त्रुटि होती है। इस तरह की त्रुटियों का कारण यह है कि कुछ करने की कोशिश कर रही स्क्रिप्ट ऐसा करने में असमर्थ है और स्क्रिप्ट आमतौर पर बंद हो जाती है, क्योंकि यह निष्पादन के साथ जारी रखने में असमर्थ है। रन टाइम एरर्स के क्लासिक उदाहरण हैं -
- फ़ाइल नहीं मिली लेकिन फ़ाइल पढ़ने की कोशिश कर रही स्क्रिप्ट
- ऑब्जेक्ट नहीं मिला, लेकिन स्क्रिप्ट उस विशेष ऑब्जेक्ट पर कार्य करने की कोशिश कर रही है
- शून्य से एक संख्या को विभाजित करना
- सरणी तत्वों को एक्सेस करते समय सीमा से बाहर सरणी सूचकांक
रन-टाइम त्रुटियां संभालना
कोड में त्रुटियों को संभालने के विभिन्न तरीके हैं।
1. Using Test Settings- त्रुटि हैंडलिंग को "फ़ाइल" >> "सेटिंग्स" >> "रन" टैब पर नेविगेट करके टेस्ट सेटिंग्स को परिभाषित किया जा सकता है जैसा कि नीचे दिखाया गया है। हम किसी भी निर्दिष्ट सेटिंग्स का चयन कर सकते हैं और "ओके" पर क्लिक कर सकते हैं।
2. Using On Error Statement - 'ऑन एरर' स्टेटमेंट का उपयोग वीबीएसस्क्रिप्ट इंजन को एक परीक्षक द्वारा रन-टाइम त्रुटियों को संभालने के इरादे को सूचित करने के लिए किया जाता है, इसके बजाय वीबीएसस्क्रिप्ट इंजन को उन संदेशों को प्रदर्शित करने की अनुमति देता है जो उपयोगकर्ता के अनुकूल नहीं हैं।
On Error Resume Next - त्रुटि को फिर से शुरू पर अगला VBScript इंजन को एक त्रुटि का सामना करने पर कोड की अगली पंक्ति को निष्पादित करने की प्रक्रिया के लिए सूचित करता है।
On error Goto 0 - यह परीक्षकों को त्रुटि से निपटने में मदद करता है।
3. Using Err Object - एरर ऑब्जेक्ट VBScript के भीतर एक इन-बिल्ट ऑब्जेक्ट है जो रन-टाइम एरर नंबर और एरर डिस्क्रिप्शन को कैप्चर करता है जिसके साथ हम कोड को आसानी से डीबग करने में सक्षम होते हैं।
Err.Number- संख्या गुण देता है या एक त्रुटि निर्दिष्ट एक संख्यात्मक मान सेट करता है। यदि Err.Number मान 0 है, तो कोई त्रुटि नहीं हुई है।
Err.Description - विवरण संपत्ति रिटर्न या एक त्रुटि के बारे में एक संक्षिप्त विवरण सेट करता है।
Err.Clear - स्पष्ट विधि Err ऑब्जेक्ट को रीसेट करता है और इससे जुड़े सभी पिछले मानों को साफ करता है।
उदाहरण
'Call the function to Add two Numbers Call Addition(num1,num2)
Function Addition(a,b)
On error resume next
If NOT IsNumeric(a) or IsNumeric(b) Then
Print "Error number is " & err.number & " and description is :
" & err.description
Err.Clear
Exit Function
End If
Addition = a+b
'disables error handling
On Error Goto 0
End function
4. Using Exit Statement- एग्जिट स्टेटमेंट्स का इस्तेमाल एरर ऑब्जेक्ट के साथ एक टेस्ट या एक्शन या इरीटेशन से बाहर निकलने के लिए किया जा सकता है। आइए हम उन सभी में से एक को विस्तार से देखें।
ExitTest - संपूर्ण QTP परीक्षण से बाहर निकलता है, रन-टाइम पुनरावृति सेटिंग चाहे जो भी हो।
ExitAction - वर्तमान क्रिया से बाहर निकलता है।
ExitActionIteration - कार्रवाई की वर्तमान पुनरावृत्ति से बाहर निकलता है।
ExitTestIteration - QTP परीक्षण की वर्तमान पुनरावृत्ति से बाहर निकलता है और अगले पुनरावृत्ति के लिए आगे बढ़ता है।
5. Recovery Scenarios - एक त्रुटि का सामना करने पर, कुछ स्थितियों के आधार पर पुनर्प्राप्ति परिदृश्य ट्रिगर होते हैं और इसे एक अलग अध्याय में विस्तार से निपटाया जाता है।
6. Reporter Object- रिपोर्टर ऑब्जेक्ट हमें रन परिणाम के लिए एक घटना की रिपोर्ट करने में मदद करता है। यदि संबंधित कार्रवाई / कदम पास / विफल है तो यह पहचानने में हमारी मदद करता है।
'Syntax: Reporter.ReportEventEventStatus, ReportStepName, Details,
[ImageFilePath]
'Example
Reporter.ReportEvent micFail, "Login", "User is unable to Login."
रिकवरी परिदृश्य
QTP स्क्रिप्ट निष्पादित करते समय, हमें कुछ अनपेक्षित त्रुटियां हो सकती हैं। परीक्षणों को ठीक करने और इन अप्रत्याशित त्रुटियों से बाकी स्क्रिप्ट को निष्पादित करने के लिए, पुनर्प्राप्ति परिदृश्य का उपयोग किया जाता है। पुनर्प्राप्ति परिदृश्य प्रबंधक को "संसाधन" पर नेविगेट करके पहुँचा जा सकता है → रिकवरी परिदृश्य प्रबंधक जैसा कि नीचे दिखाया गया है -
पुनर्प्राप्ति परिदृश्य बनाने के लिए चरण
Step 1- "नया" रिकवरी परिदृश्य बटन पर क्लिक करें; पुनर्प्राप्ति परिदृश्य विज़ार्ड नीचे दिखाए अनुसार खुलता है -
Step 2- ट्रिगर इवेंट चुनें। यह घटना से मेल खाती है, जो निम्नलिखित चार घटनाओं में से किसी में उत्पन्न हो सकती है -
- पॉप - अप विंडो
- वस्तु स्थिति
- टेस्ट रन त्रुटि
- आवेदन क्रैश
Step 3- रिकवरी ऑपरेशंस विंडो खुलती है। रिकवरी ऑपरेशन निम्नलिखित में से कोई भी ऑपरेशन कर सकता है जैसा कि नीचे स्क्रीनशॉट में दिखाया गया है -
Step 4 - उपयुक्त रिकवरी ऑपरेशन को निर्दिष्ट करने के बाद, हमें पोस्ट रिकवरी ऑपरेशन को निर्दिष्ट करने की आवश्यकता है, जैसा कि नीचे दिखाया गया है -
Step 5 - पोस्ट रिकवरी ऑपरेशन को निर्दिष्ट करने के बाद, रिकवरी परिदृश्य को नाम दिया जाना चाहिए और टेस्ट में जोड़ा जाना चाहिए ताकि इसे सक्रिय किया जा सके।
Step 6 - रिकवरी परिदृश्य का निर्माण पूरा हो गया है और "टेस्ट में वर्तमान परिदृश्य जोड़ें" विकल्प पर क्लिक करके वर्तमान टेस्ट में मैप करना होगा और "फिनिश" पर क्लिक करें।
Step 7 - जोड़ा गया रिकवरी परिदृश्य नीचे दिखाया गया है और जारी रखने के लिए "बंद करें" बटन पर क्लिक करें।
Step 8- क्लोज बटन पर क्लिक करने के बाद, QTP उपयोगकर्ता को बनाए गए पुनर्प्राप्ति परिदृश्य को बचाने के लिए संकेत देगा। इसे एक्सटेंशन .qrs के साथ सहेजा जाएगा और विज़ार्ड बंद हो जाएगा।
सत्यापन
बनाया गया पुनर्प्राप्ति परिदृश्य अभी परीक्षण का एक हिस्सा होना चाहिए और "फ़ाइल" → "सेटिंग" → "रिकवरी" टैब पर नेविगेट करके सत्यापित किया जा सकता है।
QTP वातावरण चर विशेष प्रकार के चर होते हैं जिन्हें सभी क्रियाओं, फ़ंक्शन लाइब्रेरी और पुनर्प्राप्ति परिदृश्यों द्वारा एक्सेस किया जा सकता है। विंडोज के लिए इन-बिल्ट वातावरण वेरिएबल्स हैं जो उस विशेष सिस्टम पर चलने वाले सभी एप्लिकेशन के लिए उपलब्ध हैं, लेकिन QTP पर्यावरण वेरिएबल केवल रन-टाइम के दौरान उस विशेष टेस्ट स्क्रिप्ट के लिए उपलब्ध हैं।
पर्यावरण चर के प्रकार
Built-in Environment Variables- पर्यावरण मानकों की एक श्रृंखला प्रदान करता है जो परीक्षण नाम, कार्रवाई नाम, परीक्षण पथ, स्थानीय होस्ट नाम, ऑपरेटिंग सिस्टम नाम, प्रकार और इसके संस्करण जैसी जानकारी प्रदान कर सकता है। पर्यावरण चर नाम "फ़ाइल" → "परीक्षण सेटिंग्स" → "पर्यावरण" टैब पर नेविगेट करके पहुँचा जा सकता है।
User defined Internal- पर्यावरण टैब विंडो में "उपयोगकर्ता परिभाषित" का चयन करके उपयोगकर्ता परिभाषित चर को बचाया जा सकता है। "+" बटन को पैरामीटर नाम और मान दर्ज करने के लिए क्लिक किया गया है जैसा कि नीचे दिखाया गया है -
User Defined External- उपयोगकर्ता परिभाषित चर को एक .xml फ़ाइल के रूप में एक बाहरी फ़ाइल में संग्रहीत किया जा सकता है और नीचे दिए गए चित्र में दिखाए अनुसार परीक्षण में लोड किया जा सकता है। यह रन-टाइम के दौरान गतिशील रूप से लोड किया जा सकता है जैसा कि नीचे दिए गए उदाहरणों में से एक में बताया गया है।
पर्यावरण चर - समर्थित विधियाँ
1. ExternalFileName Property- परीक्षण सेटिंग्स संवाद बॉक्स के पर्यावरण टैब में निर्दिष्ट लोड बाहरी पर्यावरण चर फ़ाइल का नाम देता है। यदि कोई बाहरी वातावरण चर फ़ाइल लोड नहीं है, तो यह गुण एक रिक्त स्ट्रिंग देता है।
x = Environment.ExternalFileName
print x
2. LoadFromFile Method- चलाए गए समय के दौरान निर्दिष्ट पर्यावरण चर फ़ाइल (.xml) को गतिशील रूप से लोड करता है। इस पद्धति का उपयोग करते समय, पर्यावरण चर को मैन्युअल रूप से पर्यावरण टैब में नहीं जोड़ा जाना चाहिए।
Environment.LoadFromFile "D:\config.xml"
b = Environment.Value("Browser")
print b
3. Value Property- पर्यावरण चर के मूल्य को पुनः प्राप्त करता है। हम इस संपत्ति का उपयोग करके उपयोगकर्ता द्वारा परिभाषित आंतरिक पर्यावरण चर का मूल्य भी निर्धारित कर सकते हैं।
' Get the Value of the InBuilt Environment Variables
a = Environment.Value("OS")
print a
b = Environment.Value("ActionName")
print b
'Loaded from External File
Environment.LoadFromFile "D:\config.xml"
c = Environment.Value("Browser")
print c
स्क्रिप्ट को संशोधित करने के लिए, लाइब्रेरी फ़ाइलों को QTP स्क्रिप्ट में जोड़ा जाता है। इसमें परिवर्तनशील घोषणा, कार्य, वर्ग आदि शामिल हैं। वे पुन: प्रयोज्य सक्षम करते हैं जिन्हें परीक्षण लिपियों में साझा किया जा सकता है। वे एक विलोपन .vbs या .qfl के साथ सहेजे जाते हैं
"फ़ाइल" >> "फ़ंक्शन लाइब्रेरी" पर नेविगेट करके एक नई लाइब्रेरी फ़ाइल बनाई जा सकती है।
फंक्शन लाइब्रेरीज़ को जोड़ना
Method 1- "फाइल"> "सेटिंग्स"> संसाधन> एसोसिएट फंक्शन लाइब्रेरी विकल्प का उपयोग करके। फ़ंक्शन लाइब्रेरी फ़ाइल को जोड़ने के लिए "+" बटन पर क्लिक करें और इसे नीचे दिखाए गए अनुसार वास्तविक पथ या रिश्तेदार पथ का उपयोग करके जोड़ें -
Method 2 - ExecuteFile पद्धति का उपयोग करना।
'Syntax : ExecuteFile(Filepath)
ExecuteFile "C:\lib1.vbs"
ExecuteFile "C:\lib2.vbs"
Method 3 - LoadFunctionLibrary विधि का उपयोग करना।
'Syntax : LoadFunctionLibrary(Filepath)
LoadFunctionLibrary "C:\lib1.vbs"
LoadFunctionLibrary "C:\lib2.vbs"
Method 4- ऑटोमेशन ऑब्जेक्ट मॉडल (एओएम) - यह एक तंत्र है, जिसके उपयोग से हम क्यूटीपी के बाहर विभिन्न क्यूटीपी संचालन को नियंत्रित कर सकते हैं। AOM के उपयोग से हम QTP, टेस्ट, एसोसिएट फंक्शन लाइब्रेरी आदि खोल सकते हैं। निम्नलिखित VbScript को एक्सटेंशन .vbs के साथ सेव किया जाना चाहिए और इसे निष्पादित करने के बाद, QTP लॉन्च किया जाएगा और परीक्षण निष्पादित होना शुरू हो जाएगा। एओएम पर बाद के अध्यायों में विस्तार से चर्चा की जाएगी।
'Launch QTP
Set objQTP = CreateObject("QuickTest.Application")
objQTP.Launch
objQTP.Visible = True
'Open the test
objQTP.Open "D:\GUITest2", False, False
Set objLib = objQTP.Test.Settings.Resources.Libraries
'Associate Function Library if NOT associated already.
If objLib.Find("C:\lib1.vbs") = -1 Then
objLib.Add "C:\lib1.vbs", 1
End
परीक्षण के परिणाम
परीक्षा परिणाम विंडो हमें दिए गए चरणों, विफल आदि को दिखाने के लिए पर्याप्त जानकारी प्रदान करती है। परीक्षण के निष्पादन के बाद परिणाम विंडो स्वचालित रूप से खुलती है (डिफ़ॉल्ट सेटिंग्स के अनुसार)। निम्नलिखित जानकारी प्रदर्शित की गई है -
- कदम पास किए
- चरण विफल
- पर्यावरण पैरामीटर
- चित्रमय सांख्यिकी
संचालन परीक्षा परिणाम में प्रदर्शन किया
HTML में परिणाम परिवर्तित करना
परिणाम व्यूअर विंडो में, "फ़ाइल" → "फ़ाइल पर निर्यात करें" पर नेविगेट करें। निर्यात रन परिणाम डायलॉग बॉक्स नीचे दिखाए गए अनुसार खुलता है -
हम चुन सकते हैं कि किस प्रकार की रिपोर्ट निर्यात की जानी है। यह छोटे परिणाम, विस्तृत परिणाम या यहां तक कि हम नोड का चयन कर सकते हैं। फ़ाइल नाम का चयन करने और उसे निर्यात करने के बाद, फ़ाइल को .HTML फ़ाइल के रूप में सहेजा जाता है
परिणाम फ़िल्टर करना
परिणाम स्थिति, नोड प्रकार और Iterations के आधार पर फ़िल्टर किए जा सकते हैं। इसे "टेस्ट रिजल्ट विंडो" में फ़िल्टर बटन का उपयोग करके एक्सेस किया जा सकता है।
दोष उठाना
दोषों को क्यूसी में सीधे परीक्षण उपकरण विंडो फलक से "टूल" एक्सेस करके लॉग इन किया जा सकता है → "जोड़ें दोष" जो कि नीचे दिए गए अनुसार एएलएम के कनेक्शन को खोलता है -
परीक्षण के परिणाम
स्वचालित परीक्षण परिणाम विंडो को "टूल" → "विकल्प" → "रन सत्र" टैब के तहत कॉन्फ़िगर किया जा सकता है। हम इसे बंद कर सकते हैं, यदि आवश्यक हो, और यह भी, हम सत्र समाप्त होने पर "स्वचालित रूप से निर्यात परिणाम" पर स्विच कर सकते हैं।
स्क्रीनशॉट या फिल्म को सेटिंग्स के आधार पर रिकॉर्ड किया जा सकता है। उसी को "टूल" → "विकल्प" → "स्क्रीन कैप्चर" टैब के तहत कॉन्फ़िगर किया जा सकता है। हम निम्नलिखित तीन स्थितियों के आधार पर स्क्रीनशॉट या फिल्मों को बचा सकते हैं -
- त्रुटियों के लिए
- Always
- त्रुटियों और चेतावनियों के लिए
स्क्रिप्ट निष्पादन के दौरान, विभिन्न GUI ऑब्जेक्ट हैं, जिनके साथ QTP इंटरैक्ट करता है। इसलिए, महत्वपूर्ण जीयूआई वस्तुओं के लिए मूल तरीकों को जानना महत्वपूर्ण है, जिनके उपयोग से हम इस पर प्रभावी ढंग से काम कर पाएंगे।
टेक्स्ट बॉक्स के साथ काम करना
रन टाइम के दौरान टेक्स्ट बॉक्स को एक्सेस करने के तरीके निम्नलिखित हैं -
Set - परीक्षक को पाठ बॉक्स में मान सेट करने में मदद करता है
Click - टेक्स्ट बॉक्स पर क्लिक करता है
SetSecure - पासवर्ड बक्सों में सुरक्षित रूप से टेक्स्ट सेट करने के लिए उपयोग किया जाता है
WaitProperty - जब तक संपत्ति का मूल्य सही नहीं हो जाता है, तब तक इंतजार करता है
Exist - पाठ बॉक्स के अस्तित्व के लिए जाँच करता है
GetROProperty("text") - पाठ बॉक्स का मूल्य हो जाता है
GetROProperty("Visible") - दिखाई देने पर बूलियन मान लौटाता है
उदाहरण
Browser("Math Calculator").Sync
Set Obj = Browser("Math Calculator").Page("SQR Calc").WebEdit("n")
'Clicks on the Text Box
Obj.Click
'Verify if the Object Exist - Returns Boolean value
a = obj.Exist
print a
'Set the value
obj.Set "10000" : wait(2)
'Get the Runtime Object Property - Value of the Text Box
val = obj.GetROProperty("value")
print val
'Get the Run Time Object Property - Visiblility - Returns Boolean Value
x = Obj.GetROProperty("visible")
print x
चेक बॉक्स के साथ काम करना
निम्नलिखित कुछ महत्वपूर्ण विधियाँ हैं जिनके साथ कोई भी चेक बॉक्स के साथ काम कर सकता है -
Set - परीक्षक को चेकबॉक्स मान "चालू" या "बंद" सेट करने में मदद करता है
Click- चेक बॉक्स पर क्लिक करता है। यहां तक कि ON या OFF की भी जांच करता है, लेकिन उपयोगकर्ता स्थिति के बारे में निश्चित नहीं होगा
WaitProperty - जब तक संपत्ति का मूल्य सही नहीं हो जाता है, तब तक इंतजार करता है
Exist - चेक बॉक्स के अस्तित्व की जाँच करता है
GetROProperty("name") - चेक बॉक्स का नाम हो जाता है
GetROProperty("Visible") - दिखाई देने पर बूलियन मान लौटाता है
उदाहरण
'To Check the Check Box
Set Obj = Browser("Calculator").Page("Gmail").WebCheckBox("PersistentCookie")
Obj.Set "ON"
'To UnCheck the Check Box
Obj.Set "OFF"
'Verifies the Existance of the Check box and returns Boolean Value
val = Obj.Exist
print val
'Fetches the Name of the CheckBox
a = Obj.GetROProperty("name")
print a
'Verifies the visible property and returns the boolean value.
x = Obj.GetROProperty("visible")
print x
रेडियो बटन के साथ काम करना
निम्नलिखित कुछ प्रमुख विधियाँ हैं जिनके साथ रेडियो बटन काम कर सकता है -
Select(RadioButtonName) - रेडियो बॉक्स "चालू" सेट करने के लिए परीक्षक की मदद करता है
Click- रेडियो बटन पर क्लिक करता है। यहां तक कि रेडियो बटन पर या बंद लेकिन परीक्षक को स्थिति नहीं मिल सकती है
WaitProperty - जब तक संपत्ति का मूल्य सही नहीं हो जाता है, तब तक इंतजार करता है
Exist - रेडियो बटन के अस्तित्व की जाँच करता है
GetROProperty("name") - रेडियो बटन का नाम हो जाता है
GetROProperty("Visible") - दिखाई देने पर बूलियन मान लौटाता है
उदाहरण
'Select the Radio Button by name "YES"
Set Obj = Browser("Calculator").Page("Forms").WebRadioGroup("group1")
Obj.Select("Yes")
'Verifies the Existance of the Radio Button and returns Boolean Value
val = Obj.Exist
print val
'Returns the Outerhtml of the Radio Button
txt = Obj.GetROProperty("outerhtml")
print text
'Returns the boolean value if Radio button is Visible.
vis = Obj.GetROProperty("visible")
print vis
कॉम्बो बॉक्स के साथ काम करना
निम्नलिखित कुछ प्रमुख विधियाँ हैं जिनके साथ कोई भी कॉम्बो बॉक्स के साथ काम कर सकता है -
Select(Value) - कॉम्बो बॉक्स से मूल्य का चयन करने में परीक्षक की मदद करता है
Click - ऑब्जेक्ट पर क्लिक करता है
WaitProperty - जब तक संपत्ति का मूल्य सही नहीं हो जाता है, तब तक इंतजार करता है
Exist - कॉम्बो बॉक्स के अस्तित्व की जाँच करता है
GetROProperty("Text") - कॉम्बो बॉक्स के चयनित मूल्य हो जाता है
GetROProperty("all items") - कॉम्बो बॉक्स में सभी आइटम लौटाता है
GetROProperty("items count") - कॉम्बो बॉक्स में आइटमों की संख्या लौटाता है
उदाहरण
'Get the List of all the Items from the ComboBox
Set ObjList = Browser("Math Calculator").Page("Statistics").WebList("class")
x = ObjList.GetROProperty("all items")
print x
'Get the Number of Items from the Combo Box
y = ObjList.GetROProperty("items count")
print y
'Get the text value of the Selected Item
z = ObjList.GetROProperty("text")
print z
बटन के साथ काम करना
निम्नलिखित कुछ प्रमुख विधियाँ हैं जिनके साथ बटन के साथ काम कर सकते हैं -
Click - बटन पर क्लिक करता है
WaitProperty - जब तक संपत्ति का मूल्य सही नहीं हो जाता है, तब तक इंतजार करता है
Exist - बटन के अस्तित्व के लिए जाँच करता है
GetROProperty("Name") - बटन का नाम हो जाता है
GetROProperty("Disabled") - सक्षम / अक्षम होने पर बूलियन मान लौटाता है
उदाहरण
'To Perform a Click on the Button
Set obj_Button = Browser("Math Calculator").Page("SQR").WebButton("Calc")
obj_Button.Click
'To Perform a Middle Click on the Button
obj_Button.MiddleClick
'To check if the button is enabled or disabled.Returns Boolean Value
x = obj_Button.GetROProperty("disabled")
print x
'To fetch the Name of the Button
y = obj_Button.GetROProperty("name")
print y
वेबटेबल्स के साथ काम करना
आज के वेब आधारित अनुप्रयोग में, वेबटेबल्स बहुत आम हो गए हैं और परीक्षकों को यह समझने की आवश्यकता है कि वेबटेबल्स कैसे काम करते हैं और वेबटेबल्स पर कार्रवाई कैसे करें। यह विषय आपको वेबटेबल्स के साथ प्रभावी ढंग से काम करने में मदद करेगा।
अनु क्रमांक। | विवरण और विवरण |
---|---|
1 | if statement एक if बयान में एक या अधिक बयानों के बाद बूलियन अभिव्यक्ति शामिल है। |
2 | if...else statement एक if elseबयान में एक या अधिक बयानों के बाद बूलियन अभिव्यक्ति शामिल है। अगर हालत सच है। के तहत बयानifबयान निष्पादित किए जाते हैं। अगर हालत झूठी है।Else स्क्रिप्ट का एक हिस्सा एक्सेप्टेड है |
3 | if..elseif...else statement यदि एक या एक से अधिक के बाद बयान Elseif बयान, कि बूलियन अभिव्यक्ति के होते हैं और फिर एक वैकल्पिक द्वारा पीछा किया else statement, जो निष्पादित करता है जब सभी हालत झूठी हो जाती है। |
4 | nested if statements एक अगर या elseif दूसरे के अंदर बयान if या elseif कथन (नों)। |
5 | switch statement ए switch बयान एक चर को समान रूप से अज्ञेय के लिए मूल्यों की एक सूची के लिए परीक्षण करने की अनुमति देता है। |
html id - यदि तालिका में आईडी टैग है तो इस संपत्ति का उपयोग करना सबसे अच्छा है।
innerText - तालिका का शीर्षक।
sourceIndex - तालिका के स्रोत सूचकांक को लाती है
ChildItemCount - निर्दिष्ट पंक्ति में मौजूद ChildItems की संख्या हो जाती है
RowCount - तालिका में पंक्तियों की संख्या हो जाती है
ColumnCount - तालिका में कॉलम की संख्या हो जाती है
GetcellData - कॉलम और रो इंडेक्स के आधार पर सेल की वैल्यू मिलती है
उदाहरण
Browser("Tutorials Point").Sync
' WebTable
Obj = Browser("Tutorials Point").Page("VBScript Decisions").WebTable("Statement")
' Fetch RowCount
x = Obj.RowCount
print x
' Fetch ColumnCount
y = Obj.ColumnCount(1)
print y
' Print the Cell Data of the Table
For i = 1 To x Step 1
For j = 1 To y Step 1
z = Obj.GetCellData(i,j)
print "Row ID : " & i & " Column ID : " & j & " Value : " & z
Next
Next
'Fetch the Child Item count of Type Link in a particular Cell
z = Obj.ChildItemCount(2,1,"Link")
print z
वर्चुअल ऑब्जेक्ट्स क्या हैं?
कभी-कभी, परीक्षण के तहत एक एप्लिकेशन में मानक विंडो ऑब्जेक्ट हो सकता है लेकिन QTP द्वारा मान्यता प्राप्त नहीं हैं। इन परिस्थितियों में, ऑब्जेक्ट्स को टाइप बटन, लिंक आदि के वर्चुअल ऑब्जेक्ट (VO) के रूप में परिभाषित किया जा सकता है ताकि निष्पादन के दौरान उपयोगकर्ता की क्रियाओं को वर्चुअल ऑब्जेक्ट्स पर सिम्युलेट किया जा सके।
उदाहरण
हम कहते हैं कि हम Microsoft Word में एक परिदृश्य को स्वचालित कर रहे हैं। मैंने एमएस वर्ड एप्लिकेशन को सक्रिय किया और मैं रिबन में किसी भी आइकन पर क्लिक करता हूं। उदाहरण के लिए, रिबन पर, सम्मिलित करें टैब पर क्लिक किया जाता है और फिर उपयोगकर्ता "चित्र" बटन पर क्लिक करता है। एक बटन WinObject के रूप में मान्यता प्राप्त है; इसलिए, आभासी वस्तुओं का महत्व स्पष्ट है।
Window("Microsoft Word").WinObject("Ribbon").Click 145,45
Window("Microsoft Word").WinObject("Ribbon").WinObject("Picture...").Click
170,104
वर्चुअल ऑब्जेक्ट बनाना
Step 1 - ऐसे परिदृश्यों में, वर्चुअल ऑब्जेक्ट "ऑब्जेक्ट" >> "वर्चुअल ऑब्जेक्ट" >> "न्यू वर्चुअल ऑब्जेक्ट" से वर्चुअल ऑब्जेक्ट मैनेजर या नए वर्चुअल ऑब्जेक्ट का उपयोग करके बनाए जाते हैं और "अगला" बटन पर क्लिक करें।
Step 2 - क्लास टाइप के खिलाफ ऑब्जेक्ट को मैप करें और "नेक्स्ट" पर क्लिक करें।
Step 3- "मार्क ऑब्जेक्ट" बटन पर क्लिक करें। एक क्रॉस हेयर कर्सर दिखाई देगा और उस ऑब्जेक्ट को चिह्नित करेगा जिसे आप मैप करना चाहते हैं और "अगला" पर क्लिक करें।
Step 4 - वर्चुअल ऑब्जेक्ट के जनक का चयन करें और "अगला" पर क्लिक करें।
Step 5 - उस संग्रह का नाम बताएं जिसमें आप वर्चुअल ऑब्जेक्ट को स्टोर करना चाहते हैं और "फिनिश" पर क्लिक करें।
वर्चुअल ऑब्जेक्ट मैनेजर
वर्चुअल ऑब्जेक्ट मैनेजर वर्चुअल ऑब्जेक्ट के संग्रह का प्रबंधन करता है। परीक्षक वर्चुअल ऑब्जेक्ट प्रबंधक से वर्चुअल ऑब्जेक्ट को जोड़ या हटा सकते हैं।
वर्चुअल ऑब्जेक्ट मैनेजर में नेविगेशन: "टूल" >> "वर्चुअल ऑब्जेक्ट मैनेजर" जैसा कि नीचे दिखाया गया है -
वर्चुअल ऑब्जेक्ट्स का उपयोग करना
वर्चुअल ऑब्जेक्ट बनाने के बाद, बनाई गई वस्तु को नीचे दिखाए अनुसार उपयोग किया जा सकता है -
Window("Microsoft Word").WinObject("Ribbon").VirtualButton("button").Click
आभासी वस्तु सीमाएँ
QTP एनालॉग या निम्न-स्तरीय रिकॉर्डिंग के लिए आभासी वस्तुओं का समर्थन नहीं करता है।
वर्चुअल ऑब्जेक्ट पर चेकपॉइंट नहीं जोड़े जा सकते हैं।
वर्चुअल ऑब्जेक्ट ऑब्जेक्ट रिपोजिटरी द्वारा नियंत्रित नहीं होते हैं।
यद्यपि हम किसी ऑब्जेक्ट को किसी विशेष वर्ग (बटन या सूची) में मैप करते हैं, लेकिन देशी वस्तुओं के सभी तरीके वर्चुअल ऑब्जेक्ट द्वारा समर्थित नहीं हैं।
ऑब्जेक्ट स्पाई का उपयोग वर्चुअल ऑब्जेक्ट पर नहीं किया जा सकता है।
सह-निर्देशांक बदलते ही स्क्रीन रिज़ॉल्यूशन बदल जाता है तो परीक्षण निष्पादन विफल हो जाएगा।
एप्लिकेशन विंडो समान स्क्रीन आकार की होनी चाहिए ताकि वर्चुअल ऑब्जेक्ट्स सही ढंग से कैप्चर हो सकें।
जैसे, QTP डेटाबेस से कनेक्ट करने के लिए कोई अंतर्निहित समर्थन प्रदान नहीं करता है, हालांकि VBScript परीक्षक का उपयोग करके ADODB ऑब्जेक्ट का उपयोग करके डेटाबेस से कनेक्ट और इंटरैक्ट कर पाएंगे।
ADODB में 4 गुण या विधियां हैं जिनके साथ हम डेटाबेस के साथ काम कर पाएंगे। वे हैं -
ADODB.Connection - डेटाबेस से संबंध स्थापित करने के लिए उपयोग किया जाता है
ADODB.Command - SQL कमांड निष्पादित करने के लिए उपयोग किया जाता है (प्रश्न या संग्रहीत कार्यविधियाँ)
ADODB.Fields - क्वेरी / संग्रहित खरीद को निष्पादित करने के बाद रिकॉर्ड सेट से एक विशेष कॉलम लाने के लिए उपयोग किया जाता है
ADODB.Recordset - डेटाबेस से डेटा लाने के लिए उपयोग किया जाता है
डेटाबेस से कैसे जुड़ें?
डेटाबेस कनेक्शन स्ट्रिंग्स का उपयोग करके जोड़ा जा सकता है। प्रत्येक डेटाबेस हमारे संपर्क करने के तरीके में भिन्न होता है। हालांकि, कनेक्शन स्ट्रिंग www.connectionstrings.com की मदद से बनाया जा सकता है
आइए देखते हैं कि डेटाबेस को निम्नलिखित मापदंडों से कैसे जोड़ा जाए -
Database Type - MSSQL सर्वर
Server Name - SQLEXPRESS
Database Name - परीक्षण
User Id - सा
password - पासवर्ड123
क्वेरी का आउटपुट SQL सर्वर प्रबंधन स्टूडियो में निम्नानुसार दिखाया गया है -
Dim objConnection
'Set Adodb Connection Object
Set objConnection = CreateObject("ADODB.Connection")
Dim objRecordSet
'Create RecordSet Object
Set objRecordSet = CreateObject("ADODB.Recordset")
Dim DBQuery 'Query to be Executed
DBQuery = "Select NAME from dbo.EMPLOYEE where AGE = 29"
'Connecting using SQL OLEDB Driver
objConnection.Open "Provider = sqloledb.1;Server =.\SQLEXPRESS;
User Id = sa;Password=Password123;Database = Trial"
'Execute the Query
objRecordSet.Open DBQuery,objConnection
'Return the Result Set
Value = objRecordSet.fields.item(0)
msgbox Value
' Release the Resources
objRecordSet.Close
objConnection.Close
Set objConnection = Nothing
Set objRecordSet = Nothing
परिणाम
उपरोक्त स्क्रिप्ट को निष्पादित करने पर, संदेश बॉक्स में आउटपुट दिखाया गया है जैसा कि नीचे दिखाया गया है -
XML एक मार्कअप भाषा है जिसे प्रारूप में डेटा संग्रहीत करने के लिए डिज़ाइन किया गया है जो मानव और मशीन दोनों द्वारा पठनीय हो सकता है। XML का उपयोग करके, कंप्यूटर और डेटाबेस सिस्टम के बीच डेटा का आदान-प्रदान भी आसानी से किया जा सकता है।
नमूना XML और उनके प्रमुख तत्वों को नीचे दर्शाया गया है -
एक्सएमएल तक पहुंच
Const XMLDataFile = "C:\TestData.xml"
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = False
xmlDoc.Load(XMLDataFile)
' Getting the number of Nodes (books)
Set nodes = xmlDoc.SelectNodes("/bookstore/book")
Print "Total books: " & nodes.Length ' Displays 2
' get all titles
Set nodes = xmlDoc.SelectNodes("/Booklib/book/value/text()")
' get their values
For i = 0 To (nodes.Length - 1)
Title = nodes(i).NodeValue
Print "Title is" & (i + 1) & ": " & Title
Next
एक्सएमएल की तुलना
हम दो दिए गए XML की तुलना कर सकते हैं -
Dim xmlDoc1
Dim xmlDoc2
' Load the XML Files
Set xmlDoc1 = XMLUtil.CreateXMLFromFile ("C:\File1.xml")
Set xmlDoc2 = XMLUtil.CreateXMLFromFile ("C:\File2.xml")
'Use the compare method of the XML to check if they are equivalent
Comp = xmlDoc1.Compare (xmlDoc1, xmlDoc2)
'Returns 1 if the two files are the same
If Comp = 1 Then
Msgbox "XML Files are the Same"
Else
Msgbox "XML Files are Different"
End if
QTP स्क्रिप्ट केवल तभी निष्पादित कर सकते हैं जब ऑब्जेक्ट ऑब्जेक्ट रिपॉजिटरी में मौजूद हों। वर्णनात्मक प्रोग्रामिंग का उपयोग करके वस्तुओं का वर्णन बनाया गया है -
जब परीक्षक किसी ऑब्जेक्ट पर एक ऑपरेशन करना चाहते हैं जो ऑब्जेक्ट रिपॉजिटरी में मौजूद नहीं है
जब अनुप्रयोग में वस्तुएँ प्रकृति में बहुत गतिशील होती हैं।
जब ऑब्जेक्ट रिपॉजिटरी बड़ी हो जाती है, तो इसका परिणाम खराब प्रदर्शन होता है क्योंकि ऑब्जेक्ट रिपोजिटरी का आकार बढ़ जाता है।
जब फ्रेमवर्क बनाया जाता है, जैसे कि यह ऑब्जेक्ट रिपोजिटरी का उपयोग नहीं करने का निर्णय लिया गया है।
जब परीक्षक ऑब्जेक्ट के अनूठे गुणों के ज्ञान के बिना रन-टाइम पर आवेदन पर एक कार्रवाई करना चाहते हैं।
वाक्य - विन्यास
वर्णनात्मक प्रोग्रामिंग तकनीक का उपयोग करके स्क्रिप्टिंग करने के दो तरीके हैं। वे हैं -
- विवरण वस्तुओं
- वर्णन स्ट्रिंग्स
विवरण वस्तुओं
स्क्रिप्ट का उपयोग विवरण वस्तुओं का उपयोग करके किया जाता है जो उपयोग किए गए गुणों और उनके संबंधित मूल्यों पर निर्भर करते हैं। फिर, इन विवरणों का उपयोग स्क्रिप्ट बनाने के लिए किया जाता है।
'Creating a description object
Set btncalc = Description.Create()
'Add descriptions and properties
btncalc("type").value = "Button"
btncalc("name").value = "calculate"
btncalc("html tag").value = "INPUT"
' Use the same to script it
Browser("Math Calc").Page("Num Calculator").WebButton(btncalc).Click
वर्णन स्ट्रिंग्स
वस्तुओं का विवरण गुणों और मूल्यों का उपयोग करके विकसित किया गया है जैसा कि नीचे दिखाया गया है।
Browser("Math Calc").Page("Num Calculator").WebButton("html
tag:=INPUT","type:=Button","name:=calculate").Click
बाल वस्तुओं
QTP चाइल्डऑब्जेक्ट्स विधि प्रदान करता है, जो हमें वस्तुओं का संग्रह बनाने में सक्षम बनाता है। मूल वस्तुएँ चाइल्डऑब्जेक्ट से पहले होती हैं।
Dim oDesc
Set oDesc = Description.Create
oDesc("micclass").value = "Link"
'Find all the Links
Set obj = Browser("Math Calc").Page("Math Calc").ChildObjects(oDesc)
Dim i
'obj.Count value has the number of links in the page
For i = 0 to obj.Count - 1
'get the name of all the links in the page
x = obj(i).GetROProperty("innerhtml")
print x
Next
साधारण पहचानकर्ता
वर्णनात्मक पहचान का उपयोग क्रमिक पहचानकर्ताओं के आधार पर स्क्रिप्ट लिखने के लिए किया जाता है, जो QTP को उन वस्तुओं पर कार्य करने में सक्षम करेगा जब दो या अधिक वस्तुओं में समान गुण होते हैं।
' Using Location
Dim Obj
Set Obj = Browser("title:=.*google.*").Page("micclass:=Page")
Obj.WebEdit("name:=Test","location:=0").Set "ABC"
Obj.WebEdit("name:=Test","location:=1").Set "123"
' Index
Obj.WebEdit("name:=Test","index:=0").Set "1123"
Obj.WebEdit("name:=Test","index:=1").Set "2222"
' Creation Time
Browser("creationtime:=0").Sync
Browser("creationtime:=1").Sync
Browser("creationtime:=2").Sync
QTP खुद को HP-QTP द्वारा प्रदान किए गए COM इंटरफ़ेस का उपयोग करके स्वचालित किया जा सकता है। ऑटोमेशन ऑब्जेक्ट मॉडल ऑब्जेक्ट्स, विधियों और गुणों का एक सेट है, जो कॉन्फ़िगरेशन सेटिंग्स को नियंत्रित करने और QTP इंटरफ़ेस का उपयोग करके स्क्रिप्ट को निष्पादित करने में परीक्षकों की मदद करता है। कुंजी विन्यास / क्रियाएं जिन्हें नियंत्रित किया जा सकता है (लेकिन इन तक सीमित नहीं) नीचे सूचीबद्ध हैं -
- एक परीक्षण के लिए सभी आवश्यक ऐड-इन लोड करें
- निष्पादन के समय QTP दिखाई देता है
- निर्दिष्ट स्थान का उपयोग करके परीक्षण खोलता है
- एसोसिएट्स फंक्शन लाइब्रेरी
- कॉमन ऑब्जेक्ट सिंक टाइम को निर्दिष्ट करता है
- प्रारंभ और समाप्ति Iteration
- स्मार्ट पहचान को सक्षम / अक्षम करें
- त्रुटि सेटिंग्स पर
- डेटा टेबल पथ
- रिकवरी परिदृश्य सेटिंग्स
- ट्रैकिंग सेटिंग लॉग करें
QTP 11.5x ऑटोमेशन ऑब्जेक्ट मॉडल पर एक विशेष दस्तावेज प्रदान करता है जिसे "स्टार्ट" >> "ऑल प्रोग्राम्स" >> "एचपी सॉफ्टवेयर" >> "एचपी यूनिफाइड फंक्शनल टेस्टिंग" >> "डॉक्यूमेंटेशन" >> "यूनिफाइड" द्वारा नेविगेट किया जा सकता है। कार्यात्मक परीक्षण स्वचालन संदर्भ "।
AOM स्क्रिप्ट जनरेट करें
एक परीक्षक "जनरेट स्क्रिप्ट" विकल्प का उपयोग करके, QTP से AOM स्क्रिप्ट उत्पन्न कर सकता है। नीचे दिखाए गए अनुसार "रन" >> "सेटिंग" >> "गुण" टैब >> "जनरेट स्क्रिप्ट" पर नेविगेट करें -
उदाहरण
' A Sample Script to Demostrate AOM
Dim App 'As Application
Set App = CreateObject("QuickTest.Application")
App.Launch
App.Visible = True
App.Test.Settings.Launchers("Web").Active = False
App.Test.Settings.Launchers("Web").Browser = "IE"
App.Test.Settings.Launchers("Web").Address = "http://easycalculation.com/"
App.Test.Settings.Launchers("Web").CloseOnExit = True
App.Test.Settings.Launchers("Windows Applications").Active = False
App.Test.Settings.Launchers("Windows Applications").Applications.RemoveAll
App.Test.Settings.Launchers("Windows Applications").RecordOnQTDescendants = True
App.Test.Settings.Launchers("Windows Applications").RecordOnExplorerDescendants = False
App.Test.Settings.Launchers("Windows Applications").RecordOnSpecifiedApplications = True
App.Test.Settings.Run.IterationMode = "rngAll"
App.Test.Settings.Run.StartIteration = 1
App.Test.Settings.Run.EndIteration = 1
App.Test.Settings.Run.ObjectSyncTimeOut = 20000
App.Test.Settings.Run.DisableSmartIdentification = False
App.Test.Settings.Run.OnError = "Dialog"
App.Test.Settings.Resources.DataTablePath = "<Default>"
App.Test.Settings.Resources.Libraries.RemoveAll
App.Test.Settings.Web.BrowserNavigationTimeout = 60000
App.Test.Settings.Web.ActiveScreenAccess.UserName = ""
App.Test.Settings.Web.ActiveScreenAccess.Password = ""
App.Test.Settings.Recovery.Enabled = True
App.Test.Settings.Recovery.SetActivationMode "OnError"
App.Test.Settings.Recovery.Add "D:\GUITest2\recover_app_crash.qrs",
"Recover_Application_Crash", 1
App.Test.Settings.Recovery.Item(1).Enabled = True
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' System Local Monitoring settings
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
App.Test.Settings.LocalSystemMonitor.Enable = false
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Log Tracking settings
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
With App.Test.Settings.LogTracking
.IncludeInResults = False
.Port = 18081
.IP = "127.0.0.1"
.MinTriggerLevel = "ERROR"
.EnableAutoConfig = False
.RecoverConfigAfterRun = False
.ConfigFile = ""
.MinConfigLevel = "WARN"
End With
एक फ्रेमवर्क दिशानिर्देशों / सर्वोत्तम प्रथाओं के एक सेट को परिभाषित करता है जो मानकों के एक सेट को लागू करता है, जिससे अंत उपयोगकर्ताओं के साथ काम करना आसान हो जाता है। विभिन्न प्रकार के स्वचालन ढांचे हैं और सबसे आम नीचे सूचीबद्ध हैं -
- कीवर्ड-संचालित फ्रेमवर्क
- डेटा-संचालित फ्रेमवर्क
- हाइब्रिड फ्रेमवर्क
कीवर्ड-संचालित फ्रेमवर्क
कीवर्ड संचालित परीक्षण एक प्रकार का कार्यात्मक स्वचालन परीक्षण ढांचा है जिसे टेबल-संचालित परीक्षण या क्रिया शब्द आधारित परीक्षण के रूप में भी जाना जाता है।
कीवर्ड-संचालित परीक्षण में, हम प्रत्येक फ़ंक्शन के लिए कीवर्ड या एक्शन शब्दों को परिभाषित करने के लिए एक टेबल प्रारूप, आमतौर पर एक स्प्रेडशीट का उपयोग करते हैं, जिसे हम निष्पादित करना चाहते हैं।
लाभ
यह नौसिखिया या गैर-तकनीकी परीक्षक के लिए सबसे उपयुक्त है।
इस दृष्टिकोण का उपयोग करके अधिक सार तरीके से परीक्षण लिखने में सक्षम बनाता है।
कीवर्ड द्वारा संचालित परीक्षण स्वचालन को एसडीएलसी में पहले ही शुरू करने की अनुमति देता है इससे पहले कि एक स्थिर निर्माण परीक्षण के लिए वितरित किया जाता है।
पुन: प्रयोज्य की एक उच्च डिग्री है।
नुकसान
कीवर्ड और उससे संबंधित कार्यप्रणालियों को विकसित करने में प्रारंभिक निवेश में अधिक समय लग सकता है।
यह तकनीकी रूप से विकलांग परीक्षकों के लिए प्रतिबंध के रूप में कार्य कर सकता है।
डेटा ड्रिवेन फ्रेमवर्क
डेटा-चालित परीक्षण परीक्षण स्क्रिप्ट का निर्माण होता है जहां परीक्षण डेटा और / या आउटपुट मान प्रत्येक बार परीक्षण के चलने के दौरान समान हार्ड-कोडित मूल्यों का उपयोग करने के बजाय डेटा फ़ाइलों से पढ़ा जाता है। इस तरह, परीक्षक परीक्षण कर सकते हैं कि आवेदन विभिन्न इनपुट को प्रभावी ढंग से कैसे संभालता है। यह निम्नलिखित डेटा फ़ाइलों में से कोई भी हो सकता है -
- datapools
- एक्सेल फाइल
- ADO ऑब्जेक्ट
- सीएसवी फाइलें
- ODBC स्रोत
प्रवाह आरेख
डेटा चालित परीक्षण को निम्नलिखित आरेख द्वारा सर्वोत्तम रूप से समझा जा सकता है -
लाभ
- डेटा संचालित फ्रेमवर्क में कोड की मात्रा कम होती है
- स्क्रिप्टिंग मुद्दों को बनाए रखने और ठीक करने के लिए अधिक लचीलापन प्रदान करता है
- टेस्ट डेटा विकसित किया जा सकता है
नुकसान
- प्रत्येक स्क्रिप्ट को डेटा के विभिन्न सेटों को समझने के लिए अलग होना चाहिए।
हाइब्रिड फ्रेमवर्क
हाइब्रिड फ्रेमवर्क कीवर्ड संचालित और डेटा ड्रिवेन फ्रेमवर्क का एक संयोजन है जिसे निम्नलिखित प्रवाह आरेख का उपयोग करके सबसे अच्छा वर्णित किया जा सकता है।
कारकों को प्रभावित करना
निम्नलिखित पैरामीटर हैं जिन्हें रूपरेखा को विकसित करते समय ध्यान में रखा जाना चाहिए। प्रभावित कारक नीचे सूचीबद्ध हैं -
फ्रेमवर्क फ़ाइलों को एसवीएन, सीवीएस, एमएस स्रोत नियंत्रण जैसे सॉफ्टवेयर को नियंत्रित करने वाले संस्करण का समर्थन करना चाहिए
फ़्रेमवर्क को अलग-अलग वातावरणों में स्क्रिप्ट निष्पादित करने का समर्थन करना चाहिए- QA, SAT, DEV
ऑब्जेक्ट परिवर्तन पर, स्क्रिप्ट को न्यूनतम परिवर्तनों के साथ निष्पादित करना चाहिए।
फ्रेमवर्क को स्वयं कॉन्फ़िगर करना चाहिए और फ़ोल्डर्स / डेटाबेस बनाने जैसे शर्त का ध्यान रखना चाहिए।
फ्रेमवर्क में मजबूत रिपोर्टिंग संरचना होनी चाहिए ताकि स्क्रिप्ट / एप्लिकेशन में मुद्दों को आसानी से देखा जा सके
फ्रेमवर्क में अधिक लचीलापन होना चाहिए ताकि इसका उपयोग करना आसान हो
फ्रेमवर्क को कोडिंग मानकों का पालन करना चाहिए ताकि फ़ाइलों, कार्यों और परिवर्तनों के इतिहास को सही ढंग से बनाए रखा जा सके।
अगले अध्याय में, हम सीखेंगे कि एक साधारण रूपरेखा कैसे तैयार की जाए।
एक नमूना आवेदन करके हम एक सरल रूपरेखा तैयार करते हैं। हम परीक्षण के तहत आवेदन के कुछ परिदृश्यों को स्वचालित करेंगे और पुन: प्रयोज्य कार्य लिखेंगे।
परीक्षण के तहत नमूना आवेदन है "Calculator", एक डिफ़ॉल्ट अनुप्रयोग जो विंडोज के एक भाग के रूप में उपलब्ध है। आइए अब हम एक फ्रेमवर्क के विभिन्न घटकों को बनाते हैं। यहां, हम एक हाइब्रिड फ्रेमवर्क विकसित करेंगे और ऑब्जेक्ट रिपॉजिटरी का उपयोग करेंगे क्योंकि यह काफी सरल अनुप्रयोग है। हालाँकि, इस रूपरेखा को एक जटिल अनुप्रयोग के समर्थन में भी बढ़ाया जा सकता है।
फ्रेमवर्क की फ़ोल्डर संरचना नीचे दी गई है -
फ़ोल्डर संरचना की व्याख्या -
Master Driver Script- स्क्रिप्ट जो पूरे निष्पादन को चलाती है। यह पूर्वापेक्षा और प्रारंभिक सेटिंग्स करता है जो निष्पादन के लिए आवश्यक हैं।
Library Files - फंक्शन लाइब्रेरी बनाने वाले एसोसिएटेड फ़ंक्शंस।
Data Table - परीक्षा डेटा जो निष्पादन के लिए आवश्यक है।
Object Repository - ऑब्जेक्ट और इसके गुण जो QTP को ऑब्जेक्ट को मूल रूप से पहचानने में सक्षम करते हैं।
Execution Logs - फ़ोल्डर में उपयोगकर्ता फ़ंक्शन और फ़ंक्शन निष्पादन इतिहास के साथ निष्पादन लॉग फ़ाइल होती है।
मास्टर ड्राइवर स्क्रिप्ट
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
' MASTER DRIVER SCRIPT NAME : Calculator
' DESCRIPTION : Drivers Script to Execute Automated Test for
the Calculator
' AUTHOR : Tutorials Point
' DATE CREATED : 30-Dec-2013
' OBJECT REPOSITORY ASSOCIATED : Calc.tsr
' LIBRARY FILES ASSOCIATED : calculator.qfl, Common.qfl
' MODIFICATION LOG
' ----------------------------------------------------
' First Version Tutorials point
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Option Explicit
Public ExecDrive
' Get the Root folder of the Test so that we can make use of relative paths.
Dim x : x = Instr(Environment.Value("TestDir"),"Driver")-2
ExecDrive = mid(Environment.Value("TestDir"),1,x)
' Get the path of Libraries using relative to the current Drive
Dim LibPath : LibPath = ExecDrive+"\Libraries\"
' Dynamically Load the Function Libraries
LoadFunctionLibrary LibPath + "Calculator.qfl", LibPath + "common_utils.qfl"
' Capturing the Start Time
' clscommon is the class object created in common.qfl library file
clscommon.StartTime = Time()
' Launching the Application
SystemUtil.Run "C:\Windows\System32\Calc.exe" : wait (2)
' Initialize the Data Table Path
Dim FileName : FileName = ExecDrive+"\TestData\Calculator.xls"
Dim SheetSource : SheetSource = "Calc_test"
Dim SheetDest : SheetDest = "Global"
' Import the DataTable into the QTP Script
DataTable.ImportSheet FileName , SheetSource , SheetDest
' Object Repository Path
Dim RepPath : RepPath = ExecDrive+"\Object_Repository\Calc.tsr"
RepositoriesCollection.RemoveAll()
RepositoriesCollection.Add(RepPath)
' To Keep a Count on iteration
Dim InttestIteration
Dim InttestRows : InttestRows = datatable.GetRowCount
' Fetching Date-TimeStamp which will be unique for Naming the Execution Log File
clscommon.StrDateFormatted = day(date()) & "_" & MonthName(Month(date()),true) &
"_" & YEAR(date())& "_"&hour(now)&"_"&minute(now)
' Name the LogFile
clscommon.StrLogFile = ExecDrive & "\Execution Logs\" &
clscommon.StrDateFormatted & ".txt"
' Create the Execution LogFile which captures the result
clscommon.Fn_FileCreate(clscommon.StrLogFile)
' Iniitialize the Parameters and all the relevant Test Details
Call Fn_InitializeLogFile()
' Kill all the previous calculator process
Call fn_Kill_Process("calc.exe")
For InttestIteration = 1 to InttestRows
datatable.SetCurrentRow InttestIteration
Dim StrExecute : StrExecute = Ucase(Trim(datatable.Value("Run","Global")))
If StrExecute = "Y" Then
clscommon.Number1 = Trim(datatable.Value("Number_1","Global"))
clscommon.Number2 = Trim(datatable.Value("Number_2","Global"))
clscommon.Number3 = Trim(datatable.Value("Number_3","Global"))
clscommon.Number4 = Trim(datatable.Value("Number_4","Global"))
clscommon.Number5 = Trim(datatable.Value("Number_5","Global"))
clscommon.Number6 = Trim(datatable.Value("Number_6","Global"))
clscommon.Test_Case_ID =
Trim(datatable.Value("Test_Case_ID","Global"))'
: clscommon.LogWrite "The Test Case Data is Located at :: " & tcDataPath
clscommon.tcScenario =
Trim(datatable.Value("Scenario","Global"))'
: clscommon.LogWrite "The Test Case Data is Located at :: " & tcDataPath
Dim Expected_Val : Expected_Val =
Trim(datatable.Value("Expected_Val","Global"))'
: clscommon.LogWrite "The Test Case Data is Located at :: " & tcDataPath
Select case clscommon.tcScenario
Case "Add"
clscommon.LogWrite "=== Inside the Test Set :: " &
clscommon.tcScenario & " ==="
Call fnCalculate("+",Expected_Val)
Case "Subtract"
clscommon.LogWrite "=== Inside the Test Set :: " &
clscommon.tcScenario & " ==="
Call fnCalculate("-",Expected_Val)
Case "Multiply"
clscommon.LogWrite "=== Inside the Test Set :: " &
clscommon.tcScenario & " ==="
Call fnCalculate("*",Expected_Val)
Case "Divide"
clscommon.LogWrite "=== Inside the Test Set :: " &
clscommon.tcScenario & " ==="
Call fnCalculate("/",Expected_Val)
Case "Sqrt"
clscommon.LogWrite "=== Inside the Test Set :: " &
clscommon.tcScenario & " ==="
Call fnCalculate("sqt",Expected_Val)
End Select
End If
Next
' Calling the End Test to Add the result Footer in exec log file.
Call fn_End_test()
' ===================== End of Master Driver Script =====================
लाइब्रेरी फ़ाइलें
कैलक्यूलेटर फ़ंक्शंस एक्सटेंशन .qfl या .vbs के साथ सहेजे गए एक अलग फ़ंक्शन फ़ाइल में लिखे गए हैं। ये कार्य पूरे कार्यों में पुन: प्रयोज्य हैं।
' Calculator. Qfl File :: Associated Function Library for Calculator Master Driver
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
' FUNCTION NAME : Fn_InitializeLogFile
' DESCRIPTION : Function to Write the Initial Values in the Log File
' INPUT PARAMETERS : varExecDrive,StrDB,StrUId,Strpwd,StrNewDB
' OUTPUT PARAMETERS : NIL
' RETURN VALUE : Pass or Fail message
' DATE CREATED : 30-Dec-2013
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Public Function Fn_InitializeLogFile()
clscommon.LogWrite "********************************************"
clscommon.LogWrite "Calc Automation Started"
End Function
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
' FUNCTION NAME : fnCalculate
' DESCRIPTION : Function to perform Arithmetic Calculations
' INPUT PARAMETERS : operator,Expected_Val
' OUTPUT PARAMETERS : NIL
' RETURN VALUE : Pass or Fail message
' DATE CREATED : 30-Dec-2013
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Function fnCalculate(operator,Expected_Val)
clscommon.LogWrite "Executing the Function 'fnCalculate' "
Window("Calculator").Activate
If Trim(clscommon.Number1) <> "" Then
Window("Calculator").WinButton(clscommon.Number1).Click
If Trim(clscommon.Number2) <> "" Then
Window("Calculator").WinButton(clscommon.Number2).Click
If Trim(clscommon.Number3) <> "" Then
Window("Calculator").WinButton(clscommon.Number3).Click
Window("Calculator").WinButton(operator).Click
If Trim(clscommon.Number4) <> "" Then
Window("Calculator").WinButton(clscommon.Number4).Click
If Trim(clscommon.Number5) <> "" Then
Window("Calculator").WinButton(clscommon.Number5).Click
If Trim(clscommon.Number6) <> "" Then
Window("Calculator").WinButton(clscommon.Number6).Click
Window("Calculator").WinButton("=").Click
Dim ActualVal : ActualVal =
Window("Calculator").WinEdit("Edit").GetROProperty("text")
clscommon.LogWrite "The Actual Value after the Math Operation is "& ActualVal
If Trim(ActualVal) = Trim(Expected_Val) Then
clscommon.WriteResult "Pass", clscommon.Test_Case_ID ,
clscommon.tcScenario , " Expected Value matches with Actual Value :: "
& ActualVal
Else
clscommon.WriteResult "Fail", clscommon.Test_Case_ID ,
clscommon.tcScenario , " Expected Value - " & Expected_Val & " Does NOT matches
with Actual Value :: " & ActualVal
End If
Window("Calculator").WinButton("C").Click
If Err.Number <> 0 Then
clscommon.LogWrite "Execution Error : The Error Number is :: " &
Err.Number & " The Error Description is " & Err.Description
Err.Clear
End If
clscommon.LogWrite "Exiting the Function 'fnCalculate' "
End Function
'= = = = = = = = = = = = = = = = = = = = = = = = = = =
' FUNCTION NAME : fn_Kill_Process
' DESCRIPTION : Function to Kill the process by name
' INPUT PARAMETERS : Application name to be killed
' OUTPUT PARAMETERS : NIL
' RETURN VALUE : NIL
' DATE CREATED : 30-Dec-2013
'= = = = = = = = = = = = = = = = = = = = = = = = = = =
Function fn_Kill_Process(process)
Dim strComputer , strProcessToKill , objWMIService , colProcessstrComputer = "."
strProcessToKill = process
Set objWMIService = GetObject("winmgmts:" _&
"{impersonationLevel=impersonate}!\\" _& strComputer & "\root\cimv2")
Set colProcess = objWMIService.ExecQuery _("Select * from Win32_Process
Where Name = '" & strProcessToKill & "'")
count = 0
For Each objProcess in colProcess
objProcess.Terminate()
count = count + 1
Next
End Function
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
' FUNCTION NAME : fn_End_test
' DESCRIPTION : Function to finish the test Execution process
' INPUT PARAMETERS : Application name to be killed
' OUTPUT PARAMETERS : NIL
' RETURN VALUE : NIL
' DATE CREATED : 20/Dec/2013
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Function fn_End_test()
clscommon.LogWrite "Status Message - Executing the Function 'fn_End_test' "
Window("Calculator").Close
On Error Resume Next
clscommon.StopTime = Time()
clscommon.ElapsedTime = DateDiff("n",clscommon.StartTime,clscommon.StopTime)
Dim Totaltests
Totaltests = clscommon.gintPassCount+ clscommon.gintFailCount
clscommon.LogWrite "## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
clscommon.LogWrite "## The Execution Start Time :: " & clscommon.StartTime
clscommon.LogWrite "## The Execution End Time :: " & clscommon.StopTime
clscommon.LogWrite "## The Time Elapsed :: " & clscommon.ElapsedTime & " Minutes "
clscommon.LogWrite "## The OS :: " & Environment.Value("OS")
clscommon.LogWrite "## The Total No of Test Cases Executed :: " & Totaltests
clscommon.LogWrite "## The No. of Test Case Passed :: " & clscommon.gintPassCount
clscommon.LogWrite "## The No. of Test Case Failed :: " & clscommon.gintFailCount
clscommon.LogWrite "## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
SystemUtil.CloseDescendentProcesses
End Function
' =============== End of Calculator. Qfl ============================= '
अन्य लाइब्रेरी फ़ाइल, जो 'common_utils.qfl' है जिसमें फ़ंक्शन शामिल हैं, जो हमें आउटपुट को टेक्स्ट फ़ाइल में लिखने में सक्षम बनाता है।
Set clscommon = New OS_clsUtils
'Creating a class file to handle global variables.
Class OS_clsUtils
Dim StrLogFile
Dim StrDateFormatted
Dim Result
Dim Number1, Number2 , Number3
Dim Number4, Number5 , Number6
Dim Test_Case_ID , tcScenario
Dim StartTime, StopTime, ElapsedTime
Dim gintPassCount , gintFailCount , gintWarningCount , gintdoneCount,
gintinfoCount
Function Fn_FileCreate(strFileName)
Dim objFSO: Set objFSO = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Dim objTextFile : Set objTextFile = objFSO.CreateTextFile(strFileName)
objTextFile.Close
Set objTextFile = Nothing
Set objFSO = Nothing
End Function
Function LogWrite(sMsg)
Const ForAppending = 8
Dim objFSO : Set objFSO = CreateObject("scripting.FileSystemObject")
Dim objTextFile : Set objTextFile = objFSO.OpenTextFile
(clscommon.StrLogFile, ForAppending, True)
objTextFile.WriteLine day(date()) & "/" & MonthName(Month(date()),true)
& "/" & YEAR(date()) & " " & time & ": " & sMsg
objTextFile.Close
Set objTextFile = Nothing
Set objFSO = Nothing
End Function
Function WriteResult(strStatus,functionName,functionDescription,Result)
Const ForAppending = 8
Dim objFSO : Set objFSO = CreateObject("scripting.FileSystemObject")
Dim objTextFile : Set objTextFile = objFSO.OpenTextFile
(clscommon.StrLogFile, ForAppending, True)
objTextFile.WriteLine day(date()) & "/" & MonthName(Month(date()),true)
& "/" & YEAR(date()) & " " & time & ": " & "
* * * * * * Test Case Exec Details * * * * * "
objTextFile.WriteLine day(date()) & "/" & MonthName(Month(date()),true)
& "/" & YEAR(date()) & " " & time & ": " & " Test staus :: " & strStatus
objTextFile.WriteLine day(date()) & "/" & MonthName(Month(date()),true)
& "/" & YEAR(date()) & " " & time & ": " & " Tese ID :: " & functionName
objTextFile.WriteLine day(date()) & "/" & MonthName(Month(date()),true)
& "/" & YEAR(date()) & " " & time & ": " & " Test Description :: "
& functionDescription
objTextFile.WriteLine day(date()) & "/" & MonthName(Month(date()),true)
& "/" & YEAR(date()) & " " & time & ": " & " Test Result Details :: " & Result
objTextFile.WriteLine day(date()) & "/" & MonthName(Month(date()),true)
& "/" & YEAR(date()) & " " & time & ": " & "
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * "
objTextFile.Close
Set objTextFile = Nothing
Set objFSO = Nothing
Select Case Lcase(strStatus)
Case "pass"
gintPassCount = gintPassCount + 1
Case "fail"
gintFailCount = gintFailCount+1
End Select
End Function
End Class
' ===================== End of common_Utils.qfl =====================
ऑब्जेक्ट रिपोजिटरी
ऑब्जेक्ट रिपॉजिटरी में उन सभी ऑब्जेक्ट्स को मिला है जिन पर उपयोगकर्ता कार्य कर रहा होगा। नीचे दी गई छवि सभी वस्तुओं की सूची को calc.tsr नाम के साथ भंडार में दर्शाती है
विवरण सारणी
डेटाटेबल में कीवर्ड होते हैं, जो परीक्षण चलाते हैं और उन डेटा का भी परीक्षण करते हैं जिनके साथ QTP ऑब्जेक्ट पर कार्य करेगा।
निष्पादन लॉग
निष्पादन लॉग फ़ाइल या आउटपुट फ़ाइल में उपयोगकर्ता क्रियाएं और फ़ंक्शन लॉग होते हैं, जो परीक्षकों को स्क्रिप्ट विफलताओं पर डीबग करने में सक्षम करेगा।
8/Jan/2014 5:09:16 PM: *************************************************
8/Jan/2014 5:09:16 PM: Calc Automation Started
8/Jan/2014 5:09:16 PM: === Inside the Test Set :: Add ===
8/Jan/2014 5:09:16 PM: Executing the Function 'fnCalculate'
8/Jan/2014 5:09:17 PM: The Actual Value after the Math Operation is 949.
8/Jan/2014 5:09:17 PM: * * * * * * Test Case Exec Details * * * * *
8/Jan/2014 5:09:17 PM: Test staus :: Pass
8/Jan/2014 5:09:17 PM: Tese ID :: TC_001
8/Jan/2014 5:09:17 PM: Test Description :: Add
8/Jan/2014 5:09:17 PM: Test Result Details :: Expected Value matches with Actual
Value :: 949.
8/Jan/2014 5:09:17 PM: * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * *
8/Jan/2014 5:09:17 PM: Exiting the Function 'fnCalculate'
8/Jan/2014 5:09:17 PM: === Inside the Test Set :: Subtract ===
8/Jan/2014 5:09:17 PM: Executing the Function 'fnCalculate'
8/Jan/2014 5:09:17 PM: The Actual Value after the Math Operation is 415.
8/Jan/2014 5:09:17 PM: * * * * * * Test Case Exec Details * * * * *
8/Jan/2014 5:09:17 PM: Test staus :: Pass
8/Jan/2014 5:09:17 PM: Tese ID :: TC_002
8/Jan/2014 5:09:17 PM: Test Description :: Subtract
8/Jan/2014 5:09:17 PM: Test Result Details :: Expected Value matches with Actual
Value :: 415.
8/Jan/2014 5:09:17 PM: * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * *
8/Jan/2014 5:09:17 PM: Exiting the Function 'fnCalculate'
8/Jan/2014 5:09:17 PM: === Inside the Test Set :: Multiply ===
8/Jan/2014 5:09:17 PM: Executing the Function 'fnCalculate'
8/Jan/2014 5:09:18 PM: The Actual Value after the Math Operation is 278883.
8/Jan/2014 5:09:18 PM: * * * * * * Test Case Exec Details * * * * *
8/Jan/2014 5:09:18 PM: Test staus :: Pass
8/Jan/2014 5:09:18 PM: Tese ID :: TC_003
8/Jan/2014 5:09:18 PM: Test Description :: Multiply
8/Jan/2014 5:09:18 PM: Test Result Details :: Expected Value matches with
Actual Value :: 278883.
8/Jan/2014 5:09:18 PM: * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * *
8/Jan/2014 5:09:18 PM: Exiting the Function 'fnCalculate'
8/Jan/2014 5:09:18 PM: === Inside the Test Set :: Divide ===
8/Jan/2014 5:09:18 PM: Executing the Function 'fnCalculate'
8/Jan/2014 5:09:19 PM: The Actual Value after the Math Operation is 3.
8/Jan/2014 5:09:19 PM: * * * * * * Test Case Exec Details * * * * *
8/Jan/2014 5:09:19 PM: Test staus :: Pass
8/Jan/2014 5:09:19 PM: Tese ID :: TC_004
8/Jan/2014 5:09:19 PM: Test Description :: Divide
8/Jan/2014 5:09:19 PM: Test Result Details :: Expected Value matches with Actual
Value :: 3.
8/Jan/2014 5:09:19 PM: * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * *
8/Jan/2014 5:09:19 PM: Exiting the Function 'fnCalculate'
8/Jan/2014 5:09:19 PM: === Inside the Test Set :: Sqrt ===
8/Jan/2014 5:09:19 PM: Executing the Function 'fnCalculate'
8/Jan/2014 5:09:20 PM: The Actual Value after the Math Operation is 10.
8/Jan/2014 5:09:20 PM: * * * * * * Test Case Exec Details * * * * *
8/Jan/2014 5:09:20 PM: Test staus :: Pass
8/Jan/2014 5:09:20 PM: Tese ID :: TC_005
8/Jan/2014 5:09:20 PM: Test Description :: Sqrt
8/Jan/2014 5:09:20 PM: Test Result Details :: Expected Value matches with Actual
Value :: 10.
8/Jan/2014 5:09:20 PM: * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * *
8/Jan/2014 5:09:20 PM: Exiting the Function 'fnCalculate'
8/Jan/2014 5:09:20 PM: Status Message - Executing the Function 'fn_Finish_test'
8/Jan/2014 5:09:20 PM: ## # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # #
8/Jan/2014 5:09:20 PM: ## The Execution Start Time :: 5:09:14 PM
8/Jan/2014 5:09:20 PM: ## The Execution End Time :: 5:09:20 PM
8/Jan/2014 5:09:20 PM: ## The Time Elapsed :: 0 Minutes
8/Jan/2014 5:09:20 PM: ## The OS :: Microsoft Windows Vista Server
8/Jan/2014 5:09:20 PM: ## The Total No of Test Cases Executed :: 25
8/Jan/2014 5:09:20 PM: ## The No. of Test Case Passed :: 25
8/Jan/2014 5:09:20 PM: ## The No. of Test Case Failed ::
8/Jan/2014 5:09:20 PM: ## # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # #