specflow tutorial ultimate guide bdd tool
एक पूर्ण गाइड टू स्पेकफ्लो और बिहेवियर ड्रिवेन डेवलपमेंट (BDD) ट्यूटोरियल:
Specflow क्या है?
स्पेकफ्लो एक टेस्टिंग फ्रेमवर्क है जो .NET फ्रेमवर्क में BDD प्रथाओं का समर्थन करता है। यह एक खुला स्रोत ढांचा है जो GitHub पर होस्ट किया गया है। यह .NET अनुप्रयोग के लिए ATDD (स्वीकृति परीक्षण ड्राइवर विकास) का उपयोग करने में सहायता करता है। इसके साथ, हम गेरकिन भाषा द्वारा परिभाषित सादे अंग्रेजी में परिदृश्य को परिभाषित कर सकते हैं जो किसी के द्वारा स्पष्ट रूप से समझा जा सकता है।
BDD दृष्टिकोण में टेस्ट लिखने के लिए कई उपकरण हैं जैसे जावा के लिए ककड़ी / जेबेव, लेटिष फॉर पायथन, जावास्क्रिप्ट के लिए जैस्मीन, स्पंदन .NET के लिए।
BDD (व्यवहार प्रवृत्त विकास) प्रथाओं या टीडीडी (टेस्ट ड्रिवेन डेवलपमेंट) के समान दृष्टिकोण का एक समूह है, जिसका उद्देश्य उत्पाद, डेवलपर्स और परीक्षकों जैसे विभिन्न हितधारकों के बीच संचार अंतर को पाटना है।
BDD दृष्टिकोण का अंतिम लक्ष्य व्यावसायिक आवश्यकताओं का निर्माण करना है जिसे पूरी टीम द्वारा समझा जा सकता है ताकि गलतफहमी से बचा जा सके, और सबसे स्वीकार्य तरीके से विकसित की जा रही सुविधा को जहाज करने में मदद करता है।
एक पूर्ण विस्मयकारी ट्यूटोरियल श्रृंखला:
के माध्यम से पढ़ें कम्पलीट स्पेकफ्लो ट्रेनिंग सीरीज अवधारणा की बेहतर समझ के लिए।
ट्यूटोरियल # 1: बीडीडी टूल को स्पेकफ्लो का परिचय (यह ट्यूटोरियल)
ट्यूटोरियल # 2: स्पेलफ्लो और सेलेनियम उदाहरण
ट्यूटोरियल # 3: अटैची बांधने और उन्नत अवधारणाओं
ट्यूटोरियल # 4: कदम तर्क रूपांतरण और स्पंदन प्रवाह तालिकाएँ
ट्यूटोरियल # 5: अचार के साथ स्पेकिंग लिविंग डॉक्यूमेंटेशन
ट्यूटोरियल # 6: स्पेकफ्लो रिपोर्ट जेनरेटर
ट्यूटोरियल # 7: इंटरव्यू के प्रश्न
स्पेकुलेट सीरीज़ में ट्यूटोरियल का संक्षिप्त अवलोकन:
ट्यूटोरियल # | विवरण |
---|---|
। | इंटरव्यू के प्रश्न उदाहरण के साथ सबसे लोकप्रिय अटैची साक्षात्कार के प्रश्नों और उत्तरों की एक सूची इस ट्यूटोरियल में शामिल है, ताकि आप पहले प्रयास में सफलतापूर्वक किसी भी स्पॉन्फ़्लो साक्षात्कार को क्रैक कर सकें। |
एक | बीडीडी टूल को स्पेकफ्लो का परिचय (यह ट्यूटोरियल) यह परिचयात्मक ट्यूटोरियल आपको विस्तार से सब के बारे में बताएगा। स्पेकफ्लो एक टेस्टिंग फ्रेमवर्क है जो .NET फ्रेमवर्क में BDD प्रथाओं का समर्थन करता है। यह एक खुला स्रोत ढांचा है जो GitHub पर होस्ट किया गया है। यह .NET अनुप्रयोग के लिए ATDD (स्वीकृति परीक्षण ड्राइवर विकास) का उपयोग करने में सहायता करता है। |
दो | स्पेलफ्लो और सेलेनियम उदाहरण यह ट्यूटोरियल Youtube एप्लिकेशन पर वीडियो खोज के एक सरल परीक्षण परिदृश्य के माध्यम से स्पेलफ्लो फ्रेमवर्क के साथ सेलेनियम के एकीकरण पर ध्यान केंद्रित करेगा। आप यह भी जांचेंगे कि निजी श्रेणी के क्षेत्रों के माध्यम से अलग-अलग बाइंडिंग में डेटा कैसे साझा किया जाए। |
३ | स्पेलफ्लो और सेलेनियम उदाहरण यह ट्यूटोरियल Youtube एप्लिकेशन पर वीडियो खोज के एक सरल परीक्षण परिदृश्य के माध्यम से स्पेलफ्लो फ्रेमवर्क के साथ सेलेनियम के एकीकरण पर ध्यान केंद्रित करेगा। आप यह भी जांचेंगे कि निजी श्रेणी के क्षेत्रों के माध्यम से अलग-अलग बाइंडिंग में डेटा कैसे साझा किया जाए। |
४ | कदम तर्क रूपांतरण और स्पंदन प्रवाह तालिकाएँ यह जानकारीपूर्ण स्पेकफ़्लो ट्यूटोरियल स्टेप तर्क परिवर्तन के बारे में विस्तार से वर्णन करेगा जो बॉयलरप्लेट कोड से बचने के लिए स्पेकफ्लो तर्कों के लिए कस्टम प्रकार रूपांतरण की अनुमति देता है और जब आप एक उपयोगकर्ता के अनुकूल सारणी में सिंगल स्टेप में बहुत सारे क्षेत्र / डेटा पास करने की आवश्यकता होती है प्रारूप। |
५ | अचार के साथ स्पेकिंग लिविंग डॉक्यूमेंटेशन इस Specflow Tutorial से आपको पता चलेगा कि आपके मौजूदा Specflow फ़ाइलों का उपयोग करके अचार नामक एक खुले स्रोत ढांचे के माध्यम से अच्छे दिखने वाले जीवित दस्तावेज़ कैसे उत्पन्न होते हैं। |
६ | स्पेकफ्लो रिपोर्ट जेनरेटर इस Specflow Reporting tutorial में, आप Specflow निष्पादन योग्य के माध्यम से HTML रिपोर्ट जनरेट करने के साथ Specflow फीचर परीक्षण निष्पादित करने के तरीके सीखेंगे। |
इस श्रृंखला में पहले ट्यूटोरियल से शुरुआत करते हैं।
आप क्या सीखेंगे:
बीडीडी टूल को स्पेकफ्लो का परिचय
वीडियो ट्यूटोरियल देखें:
यहां स्पेकफ्लो और व्यवहार प्रेरित विकास पर एक वीडियो ट्यूटोरियल है:
बीडीडी की विशेषताएं
BDD की प्रमुख विशेषताएं नीचे दी गई हैं:
# 1) यह एक उदाहरण या परिदृश्य के माध्यम से विकसित किए जा रहे सिस्टम या फीचर के व्यवहार को परिभाषित करने की कोशिश करता है। उदाहरण के लिए, यदि आप एक साधारण कैलकुलेटर अनुप्रयोग बना रहे हैं तो विभिन्न व्यवहारों में जोड़, गुणा, भाग, आदि शामिल हैं।
इसलिए बीडीडी के माध्यम से, सभी हितधारक पहले आवेदन जैसे व्यवहार के व्यवहार को तय करने के लिए मिलेंगे और नीचे दिखाए गए अनुसार परिदृश्य होंगे।
Given, I have 2 numbers 30 and 50 as input When I add these 2 numbers Then I should get an output of 80
यदि आप उपरोक्त प्रतिनिधित्व को सादे अंग्रेजी में एक ऐसा परिदृश्य देखते हैं जो किसी के द्वारा स्पष्ट रूप से समझा जा सकता है और एक सुविधा के लिए आवश्यकताओं को स्पष्ट करता है (स्वीकृति मानदंडों के अनुसार)। इसलिए पहला कदम इन आवश्यकताओं को स्पष्ट करना है।
#दो) अब इन परिदृश्यों के एक सेट के साथ, क्यूए इन के खिलाफ परीक्षण लिखता है और यह शुरू में विफल हो जाएगा क्योंकि यह सुविधा अभी तक विकसित नहीं हुई है।
# 3) अब, डेवलपर एक सुविधा कोड लिखता है और इन परीक्षणों को फिर से निष्पादित करता है।
# 4) परीक्षण पास या विफल हो सकते हैं। यदि वे विफल होते हैं - रिफैक्टर कोड और प्रक्रिया को दोहराएं
# 5) कोड रीफैक्टरिंग पूरा होने के बाद सभी परिदृश्यों / परीक्षणों को पास होना चाहिए।
इसलिए, संक्षेप में, BDD TDD दृष्टिकोण का उपयोग करता है और परिदृश्यों के रूप में कुछ सामान्य आसानी से समझने योग्य विनिर्देशों के द्वारा इसे अगले स्तर तक ले जाता है। वे अपने आप में फीचर डॉक्यूमेंटेशन का भी प्रतिनिधित्व करते हैं।
BDD दृष्टिकोण में परीक्षण लिखने के लिए विभिन्न उपकरण हैं जैसे जावा, लेटस के लिए ककड़ी / जेबेव अजगर , जावास्क्रिप्ट के लिए जैस्मीन, स्पंदन .NET के लिए।
ग्रहण परीक्षण के मामले ग्रहण में उदाहरण हैं
इस ट्यूटोरियल में, हम Specflow पर ध्यान केंद्रित करेंगे।
यह भी पढ़ें => शीर्ष BDD उपकरण और परीक्षण रूपरेखा
कीवर्ड - दिए गए, जब और फिर
यूनिट परीक्षण दुनिया से, हम में से अधिकांश 3 ए के साथ परिचित हैं, अर्थात् व्यवस्था, अधिनियम और मुखर। अब, बीडीडी दुनिया में इनकी जगह कब और कब दी जाती है।
चलो एक ले लो उदाहरण इनमें से प्रत्येक को समझने के लिए। मान लीजिए कि आप एक उत्पाद के सत्यापन के लिए एक परिदृश्य को सूचीबद्ध कर रहे हैं, जो एक ई-कॉमर्स एप्लिकेशन की खरीदारी कार्ट में जुड़ जाता है, जिसके लिए आपको पूर्व-आवश्यकता के रूप में लॉग इन करना पड़ता है।
विनिर्देश निम्नानुसार लिखे जा सकते हैं:
Scenario: Products get added to cart for a logged in customer Given I have a logged-in customer on my application When I add 2 quantity of a product to my shopping cart Then the shopping cart should get updated and have the right product and quantity
दिया हुआ :यह परिभाषित किए जा रहे परिदृश्य के लिए पूर्व स्थितियों के एक सेट का वर्णन करने के लिए उपयोग किया जाता है। उदाहरण के लिए, उदाहरण के लिए, परिदृश्य की पूर्व-आवश्यकता एक लॉग-इन ग्राहक है। इसलिए की तुलना व्यवस्था एक इकाई परीक्षण में सादृश्य, चरण कार्यान्वयन को यह सुनिश्चित करने की आवश्यकता होगी कि ग्राहक में लॉग इन है।
कब :इसका उपयोग किसी क्रिया या निष्पादन चरण का वर्णन करने के लिए किया जाता है। उदाहरण में, यह दर्शाता है कि ग्राहक अपनी खरीदारी कार्ट में एक उत्पाद जोड़ने की कोशिश कर रहा है। इसलिए इस चरण के लिए कदम कार्यान्वयन कार्ट में उत्पाद जोड़ने के लिए सिमुलेशन कोड का ध्यान रखेगा। इसकी तुलना की जा सकती है कार्य इकाई परीक्षणों में कदम।
फिर :इसका उपयोग परिदृश्य के आउटकम का वर्णन करने के लिए किया जाता है और अनिवार्य रूप से जहां मान्यताओं को रखा जाना चाहिए। इसकी तुलना की जा सकती है ज़ोर इकाई परीक्षण दुनिया में कदम। यहां उदाहरण में, चरण कार्यान्वयन इस बात पर जोर देगा कि क्या उत्पाद वास्तव में जोड़ा गया है और मात्रा वही है जो ग्राहक द्वारा चुनी गई थी।
फ़ीचर फ़ाइल
सुविधा फ़ाइल अनिवार्य रूप से विकास या परीक्षण के तहत आवेदन के लिए कई परिदृश्यों का समूह है। यह केवल आवेदन के विभिन्न मॉड्यूल के रूप में सोचा जा सकता है जिसके द्वारा आवेदन को तार्किक रूप से अलग किया जा सकता है।
उदाहरण के लिए:
ई-कॉमर्स एप्लिकेशन में विभिन्न उच्च-स्तरीय फ़ीचर फ़ाइलें होने का निर्णय लिया जा सकता है:
- लॉगिन / लॉगआउट कार्यक्षमता
- शॉपिंग कार्ट
- भुगतान आदि
Specflow क्या है?
Specflow .NET फ्रेमवर्क में BDD प्रथाओं का समर्थन करने वाला एक उपकरण है। यह एक खुला स्रोत ढांचा है जो GitHub पर होस्ट किया गया है। यह .NET अनुप्रयोग के लिए ATDD (स्वीकृति परीक्षण ड्राइवर विकास) का उपयोग करने में सहायता करता है।
विनिर्देशन का उपयोग करके एक आवेदन के लिए व्यापारिक आवश्यकताओं को बांधना उदाहरण प्रतिमान सभी हितधारकों द्वारा आवेदन व्यवहार की बेहतर समझ में मदद करता है और इस तरह उत्पाद को सही उम्मीदों के साथ शिपिंग में परिणाम होता है।
इसका उपयोग करता है खीरा सुविधाएँ और परिदृश्य बनाने के लिए वाक्यविन्यास। इसमें एक सक्रिय चर्चा / डेवलपर भी है मंच ।
सट्टा - शुरू हो रहा है
इस अनुभाग में, हम विज़ुअल स्टूडियो आईडीई में अटकलें स्थापित करने और एक साधारण स्ट्रिंग यूटिलिटी एप्लिकेशन के लिए फीचर फाइल बनाने का पता लगाएंगे।
नमूना आवेदन के बारे में
हम एक कैलकुलेटर एप्लिकेशन का उपयोग करके इस ट्यूटोरियल में स्पेकफ्लो फ्रेमवर्क की विभिन्न विशेषताओं का चित्रण करेंगे, जिसमें अलग-अलग ऑपरेशन प्रदान करने के लिए फ़ंक्शन / इंटरफेस हैं:
- 2 नंबर जोड़ना।
- 2 संख्या घटाना।
- 2 संख्याओं को विभाजित करना और गुणा करना।
- दिए गए नंबर का वर्गमूल ज्ञात करना।
स्पंदन इंस्टालेशन गाइड
स्पंदना स्थापना एक 2 कदम प्रक्रिया है
# 1) विजुअल स्टूडियो आईडीई में आवश्यक प्लगइन्स इंस्टॉल करना।
- सट्टा प्लगइन स्थापित करने के लिए टूल्स -> एक्सटेंशन और अपडेट पर नेविगेट करें।
- अब बाएं पैनल पर 'ऑनलाइन' पर क्लिक करें।
- अब दाहिने पैनल में अटकलों की खोज करें।
- खोज परिणामों से 'विजुअल स्टूडियो 2017 के लिए स्पंदन' चुनें।
#दो) फीचर फ़ाइलों और कदम परिभाषाओं के साथ परियोजना की स्थापना।
- Visual Studio में एक सरल नई परियोजना बनाएँ। हम किसी भी प्रकार के प्रोजेक्ट को बना सकते हैं जैसे क्लास लाइब्रेरी / कंसोल एप्लीकेशन / यूनिट टेस्ट प्रोजेक्ट आदि। सरलता के लिए, हम क्लास लाइब्रेरी प्रोजेक्ट ले रहे हैं। प्रोजेक्ट को 'SpecflowBasic' नाम दें।
- हमारे द्वारा बनाए जाने वाले Specflow परिदृश्य को चलाने के लिए, हमें एक परीक्षण धावक की आवश्यकता होती है। Specflow बॉक्स से एक धावक को प्रदान करता है जिसे Specflow + Runner (जो कि एक भुगतान किया गया संस्करण है और मुफ्त संस्करण देरी का परिचय देता है) कहलाता है।
(अन्य धावक NUnit और MsTest के लिए भी उपलब्ध हैं जो हम इस श्रृंखला में आगे के लेखों में देखेंगे)।
Specflow + Runner स्थापित करने के लिए - उपकरण -> NuGet पैकेज प्रबंधक -> पैकेज प्रबंधक कंसोल पर नेविगेट करें।
एक बार पैकेज मैनेजर कंसोल खुलने के बाद - कमांड को रन करें।
Install-Package SpecRun.SpecFlow
- इसके अलावा, मूल्यों पर जोर देने के लिए, हमें एक परीक्षण ढांचे की मदद की आवश्यकता होगी। NUnit विकल्पों में से एक हो सकता है और अन्य में MsTest आदि शामिल हैं। आवेदन में NUnit फ्रेमवर्क को स्थापित करने के लिए, पैकेज मैनेजर कंसोल खोलें और कमांड टाइप करें।
Install-Package NUnit
# 3) एक नया वर्ग बनाएं जिसका नाम है 'कैलक्यूलेटरऐप्लिकेशंस' जो परीक्षण के तहत हमारा आवेदन बन जाएगा। यह दिए गए इनपुट के लिए जोड़ / गुणा / भाग / वर्गमूल इत्यादि करने के लिए एक साधारण वर्ग के कार्य हैं। यह कैसी है कैलक्यूलेटर कैलक्यूलेटर की तरह दिखता है।
# 4) एक बार पैकेज स्थापित हो जाने के बाद, प्रोजेक्ट में 2 फ़ोल्डर बनाएं और क्रमशः फ़ीचर फ़ाइलों और स्टेप बाइंडरों को संग्रहीत करने के लिए फ़ीचर और स्टेप परिभाषाओं के रूप में उन्हें नाम दें। हम फ़ीचर और चरण परिभाषाओं के लिए इस फ़ोल्डर संगठन के कारण पर विस्तार से चर्चा करेंगे।
# 5) अब फीचर्स फोल्डर में, एक नया फ़ीचर फ़ाइल जोड़ें और इसे कैलक्यूलेटरफ़ायर के रूप में नाम दें।
आप देखेंगे कि डिफ़ॉल्ट रूप से फ़ीचर फ़ाइल में फ़ीचर और परिदृश्य में कुछ विवरण है।
बदलें कि हम क्या परीक्षण करने जा रहे हैं।
Feature: CalculatorFeature In order to test my application As a developer I want to validate different operations of the application Scenario: Add two numbers Given I have provided 70 and 20 as the inputs When I press add Then the result should be 90 Scenario: Substract two numbers Given I have provided 70 and 20 as the inputs When I press substract Then the result should be 50 Scenario: Multiply two numbers Given I have provided 70 and 20 as the inputs When I press multiply Then the result should be 1400 Scenario: Divide two numbers Given I have provided 70 and 20 as the inputs When I press divide Then the result should be 3.5 Scenario: SquareRoot of number Given I have provided 70 as input When I press squareroot Then the result should be 8.37
# 6) जेनरेटिंग स्टेप डेफिशिएंसी: फीचर फाइल परिदृश्यों में विभिन्न चरणों के लिए बाइंडिंग / इंप्लीमेंटेशन उत्पन्न करने का एक स्वचालित तरीका है। यह फीचर फाइल पर राइट क्लिक करके और “स्टेप जनरेट परिभाषाएँ” पर क्लिक करके हासिल किया जा सकता है।
यह कदम एक कार्यान्वयन की गारंटी नहीं देता है सभी चरणों के लिए, लेकिन यह परिदृश्यों में सामान्य चरणों को समूहीकृत करने के लिए अपनी पूरी कोशिश करता है और जितने भी बाँध कर सकता है, उसका पुनः उपयोग करता है। हालांकि, यह हर बार बॉयलरप्लेट कोड से बचने का काम करता है जब परिदृश्य चरण को लागू करने की आवश्यकता होती है।
क्लिक करने के बाद 'चरण परिभाषाएँ बनाएँ' , एक विंडो पहचानी गई चरण कार्यान्वयन को सूचीबद्ध करेगी जो प्रोसेसर ने पता लगाया है। आवश्यकताओं के अनुसार कोई भी चयन या डी-चयन कर सकता है।
बाद के अनुभागों में, हम उपरोक्त स्क्रीनशॉट में दिखाए गए स्टाइल ड्रॉपडाउन के बारे में अधिक जानकारी देखेंगे।
अभी के लिए, सभी को डिफ़ॉल्ट सेटिंग्स के साथ चयनित रहने दें। पूर्वावलोकन पर क्लिक करने से स्नैपशॉट दिखाई देगा कि कार्यान्वयन कैसा दिखेगा।
स्टेप परिभाषाएँ बनाने के बाद, फिर भी, अगर कुछ अनइम्प्लीमेंटेड स्टेप्स हैं, तो फ़ीचर फाइल्स में अन-इम्प्लीमेंट किए गए एप्लिकेशन को पहचानने का एक विजुअल तरीका है। यह उन चरणों को एक अलग रंग में दिखाता है, यह जानना बिल्कुल आसान है कि कुछ ऐसे चरण हैं जो अभी तक लागू नहीं हुए हैं (या कोई अस्पष्ट कदम परिभाषाएं हैं)।
एक नमूना स्क्रीन नीचे दर्शाया गया है:
ध्यान दें: स्टेप डेफिनिशन को मैन्युअल रूप से भी बनाया जा सकता है - कोई भी .cs फ़ाइल (बाइंडिंग) विशेषता एक स्टेप इम्प्लीमेंटेशन क्लास है और गेरकिन सिंटैक्स दिए गए परिदृश्य स्टेप के कार्यान्वयन के मिलान के लिए दिखेगा
क्रियान्वयन
जैसा कि हमने पहले ही उपरोक्त खंड में Specflow + Runner को जोड़ दिया है, परिदृश्य निष्पादित करना बहुत सीधा है (क्योंकि यह Specrun का मूल्यांकन संस्करण है, यह परिदृश्य निष्पादित होने से पहले 10-20 के चर विलंब का परिचय देता है। यह विलंब पंजीकृत वेरिएंट के लिए मौजूद नहीं है। और NUnit और MsTest की तरह Specrun धावक के अन्य जायके)।
यदि सभी चरणों में है नहीं रहा कार्यान्वित किया गया है और यदि अभी भी ऐसे मामले हैं जिनमें लंबित स्थिति है। फिर आउटपुट लंबित के रूप में दिखाई देगा।
आइए इस बिंदु पर इन परीक्षणों / परिदृश्यों को चलाने की कोशिश करें जब बाइंडिंग के लिए कोई कार्यान्वयन नहीं है, और परिदृश्य सभी लंबित हैं।
अब हम उन विधियों के साथ CalculatorApplication वर्ग को लागू करने का प्रयास करते हैं, जिन्हें हम परीक्षण करना चाहते हैं अर्थात् जोड़ना, घटाना, गुणा करना, विभाजित करना और sqrt।
नीचे दिया गया एक कोड नमूना है कि हमारा कैलक्यूलेटर वर्ग कैसा दिखता है:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SpecflowBasic { class CalculatorApplication { public int add(int input1, int input2) { return input1 + input2; } public int subsctract(int input1, int input2) { return input1 - input2; } public int multiply(int input1, int input2) { return input1 * input2; } public double divide(double input1, double input2) { return input2 != 0 ? Math.Round(input1 / input2, 2) : 0; } public double squareRoot(int input1) { return input1 != 0 ? Math.Round(Math.Sqrt(input1), 2) : 0; } } }
आवेदन तैयार होने के बाद, आइए प्रत्येक परिदृश्य चरणों के लिए बाइंडिंग को लागू करने के तरीकों का पता लगाने का प्रयास करें।
आइए इन्हें लागू करने के लिए चरण दर चरण दृष्टिकोण देखें:
- सबसे पहले, हमें उस एप्लिकेशन का एक उदाहरण होना चाहिए जिसे परीक्षण करने की आवश्यकता है। सादगी के लिए, हम कदम बाइंडिंग में AUT (एप्लीकेशन अंडर टेस्ट क्लास) को इंस्टेंट कर सकते हैं और वास्तव में लागू किए गए चरण के अनुसार विभिन्न तरीकों / कार्यों को कॉल करने के लिए तात्कालिक उदाहरण का उपयोग कर सकते हैं।
- इनपुट और आउटपुट को कैप्चर करने के लिए हम एप्लिकेशन इंस्टेंस पर फ़ंक्शंस को कॉल करने के लिए इन वैल्यूज़ को रखने के लिए वेरिएबल्स घोषित कर रहे हैं।
आइए कार्यक्षमता जोड़ने को मान्य करने में शामिल सभी बाइंडिंग के लिए एंड-टू-एंड कार्यान्वयन को देखें (बाकी के परिदृश्य बस इसे बढ़ा रहे हैं)।
नीचे दिए गए विवरण के अनुसार ऐड परिदृश्य दिखता है:
Scenario: Add two numbers Given I have provided 70 and 20 as the inputs When I press add Then the result should
आइए इन प्रत्येक व्यक्तिगत चरणों के लिए चरण कार्यान्वयन देखें। सभी चरण कार्यान्वयनों के उपयोग के लिए, हम परीक्षण के तहत आवेदन के साथ ही इनपुट और आउटपुट चर रखने के लिए एक उदाहरण की घोषणा कर रहे हैं जैसा कि नीचे दिखाया गया है:
// instantiating application instance CalculatorApplication app = new CalculatorApplication(); // variables to hold input values and the intermeditate result int input1, input2; double output;
आइए एक-एक करके परिदृश्य के कार्यान्वयन को देखें।
चरण 1: यह देखते हुए मैंने 70 और 20 प्रदान किए हैं जैसा इनपुट्स
(Given(@'I have provided (.*) and (.*) as the inputs')) public void GivenIHaveProvidedAndAsTheInputs(int p0, int p1) { input1 = p0; input2 = p1; }
यहां, हमने परिदृश्य चरणों से पारित मूल्यों के साथ इनपुट चर को केवल आरंभिक किया है। p0 और p1 ऐसे मान हैं जो परिदृश्य चरण से पारित किए जाते हैं और क्रमशः 70 और 20 के रूप में आरंभ किए जाएंगे।
चरण 2: जब मैं ऐड जोड़ता हूं
(When(@'I press add')) public void WhenIPressAdd() { output = app.add(input1, input2); }
यह निष्पादन (या अधिनियम) चरण है जहां परीक्षण के तहत आवेदन पर वास्तविक विधि को बुलाया जाता है। ध्यान दें कि चूंकि इनपुट चर इनपुट 1 और इनपुट 2 में पहले से ही चरण 1 में पारित मूल्य शामिल हैं, एप्लिकेशन इंस्टेंस इन चर के साथ विधि को कॉल कर सकता है।
चरण 3: - फिर रिजल्ट 90 होना चाहिए।
(Then(@'the result should be (.*)')) public void ThenTheResultShouldBe(double p0) { Assert.AreEqual(p0, output); }
यह वैलिडेशन (या एसेसर) कदम है जहां आउटपुट आउटपुट ऑन कॉल विधि द्वारा उत्पन्न होता है और अपेक्षित आउटपुट के विरुद्ध एप्लिकेशन इंस्टेंस को मान्य किया जाता है।
ध्यान दें, कि ज़ोर उपयोग किया गया कीवर्ड NUnit फ्रेमवर्क से है, जो सेट किए गए सत्यापन / अपेक्षा के आधार पर सही या गलत लौटाता है। यदि यह गलत हो जाता है, तो यह स्टेप कार्यान्वयन को विफल कर देगा और यह परिदृश्य परिणाम को विफल दिखाएगा।
एक makefile c ++ बना रहा है
इसके अलावा, कृपया ध्यान दें कि आउटपुट चर को पिछले चरण से मूल्य प्राप्त होता है जहां आवेदन विधि पर वास्तविक विधि को बुलाया गया था।
ऊपर के समान, बाकी परिदृश्य चरणों के लिए चरण कार्यान्वयन समान तरीके से किए जाते हैं, अंतर एप्लिकेशन इंस्टेंस पर विभिन्न तरीकों को कॉल करने और विभिन्न आउटपुट मानों को सम्मिलित करने में होता है।
एक बार सभी परिदृश्य चरणों को लागू करने के बाद, परीक्षणों को निष्पादित किया जा सकता है।
परिणामी आउटपुट नीचे दिखाया गया है:
आप व्यक्तिगत परिदृश्य के आउटपुट को भी देख सकते हैं जो अलग-अलग चरणों के आउटपुट को नीचे सूचीबद्ध करता है:
निष्कर्ष
आशा है कि इस लेख ने आपको एक बुनियादी समझ दी होगी कि BDD क्या है और वे कौन से उपकरण हैं जो .NET के लिए BDD का समर्थन करते हैं जहां हमने Specflow को कवर किया है।
हमने नमूना एप्लिकेशन की सहायता से स्पेकफ़्लो सुविधा फ़ाइलों को स्थापित करने और निष्पादित करने पर भी चर्चा की।
कोड फ़ाइलें
एप्लिकेशन में उपयोग की जाने वाली कोड फाइलें नीचे दी गई हैं:
कैलक्यूलेटरफ्रीचरस्टेपेकस
using System; using TechTalk.SpecFlow; using NUnit; using NUnit.Framework; namespace SpecflowBasic.StepDefinitions { (Binding) public class CalculatorFeatureSteps { // instantiating application instance CalculatorApplication app = new CalculatorApplication(); // variables to hold input values and the intermeditate result int input1, input2; double output; (Given(@'I have provided (.*) and (.*) as the inputs')) public void GivenIHaveProvidedAndAsTheInputs(int p0, int p1) { input1 = p0; input2 = p1; } (Given(@'I have provided (.*) as input')) public void GivenIHaveProvidedAsInput(int p0) { input1 = p0; } (When(@'I press add')) public void WhenIPressAdd() { output = app.add(input1, input2); } (When(@'I press substract')) public void WhenIPressSubstract() { output = app.subsctract(input1, input2); } (When(@'I press multiply')) public void WhenIPressMultiply() { output = app.multiply(input1, input2); } (When(@'I press divide')) public void WhenIPressDivide() { output = app.divide(input1, input2); } (When(@'I press squareroot')) public void WhenIPressSquareroot() { output = app.squareRoot(input1); } (Then(@'the result should be (.*)')) public void ThenTheResultShouldBe(double p0) { Assert.AreEqual(p0, output); } } }
CalculatorApplication.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SpecflowBasic { class CalculatorApplication { public int add(int input1, int input2) { return input1 + input2; } public int subsctract(int input1, int input2) { return input1 - input2; } public int multiply(int input1, int input2) { return input1 * input2; } public double divide(double input1, double input2) { return input2 != 0 ? Math.Round(input1 / input2, 2) : 0; } public double squareRoot(int input1) { return input1 != 0 ? Math.Round(Math.Sqrt(input1), 2) : 0; } } }
package.config
हमारा आगामी ट्यूटोरियल आपको एंड टू एंड उदाहरण पर अटकल और सेलेनियम वेबड्राइवर का उपयोग करने के बारे में बताएगा!
अनुशंसित पाठ
- शुरुआती के लिए गहराई से ग्रहण ट्यूटोरियल
- टेस्टलिंक ट्यूटोरियल: एक लैमन गाइड टू टेस्टलिंक टेस्ट मैनेजमेंट टूल (ट्यूटोरियल # 1)
- Bugzilla Tutorial: दोष प्रबंधन उपकरण हाथों पर ट्यूटोरियल
- TestComplete Tutorial: शुरुआती लोगों के लिए एक व्यापक जीयूआई परीक्षण उपकरण गाइड
- SeeTest ऑटोमेशन ट्यूटोरियल: मोबाइल टेस्ट ऑटोमेशन टूल गाइड
- कंप्यूटर नेटवर्किंग ट्यूटोरियल: अंतिम गाइड
- WAVE पहुँच क्षमता परीक्षण उपकरण ट्यूटोरियल
- BDD (व्यवहार प्रवृत्त विकास) ढांचा: एक पूर्ण ट्यूटोरियल