C# में BDD: ऐसे टेस्ट लिखें जो व्यवसाय समझे

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# में BDD: जब टेस्ट व्यवसाय की भाषा बोलते हैं

\n\n

कल्पना करें: आप एक C# डेवलपर हैं। आपके पास product owner आता है और कहता है: "ऐसा करें कि ऑर्डर के भुगतान के बाद उपयोगकर्ता को एक ईमेल मिले, लेकिन केवल तभी जब राशि 1000 रुपये से अधिक हो।" आप सिर हिलाते हैं, कोड में जाते हैं, लॉजिक लिखते हैं, उसे यूनिट टेस्ट से कवर करते हैं। एक हफ्ते बाद आप परिणाम दिखाते हैं। PO देखता है, भौंहें चढ़ाता है और कहता है: "मेरा मतलब कुछ और था।"

\n\n

परिचित लगता है? यह व्यवसाय और डेवलपमेंट के बीच की खाई की क्लासिक समस्या है। और इसे ही हल करता है C# में BDD — Behaviour-Driven Development, या व्यवहार-आधारित विकास।

\n\n

इस लेख में, हम समझेंगे कि BDD क्या है, यह TDD से कैसे अलग है, और सबसे महत्वपूर्ण बात — SpecFlow और xUnit के साथ C# प्रोजेक्ट में BDD को कैसे लागू करें। आप कोड के वास्तविक उदाहरण देखेंगे, Gherkin में स्क्रिप्ट लिखना सीखेंगे और उन्हें स्वचालित टेस्ट में बदलेंगे। चलिए शुरू करते हैं!

\n\n

BDD क्या है और इसकी आवश्यकता क्यों है?

\n\n

BDD (Behaviour-Driven Development) एक विकास पद्धति है जिसमें सिस्टम की आवश्यकताओं को उपयोगकर्ता के व्यवहार के माध्यम से वर्णित किया जाता है। सूखी तकनीकी विशिष्टताओं के बजाय, आप प्राकृतिक भाषा में स्क्रिप्ट लिखते हैं जिसे व्यवसाय और डेवलपर दोनों समझते हैं।

\n\n

BDD का मुख्य विचार: "यह न जांचें कि कोड काम करता है। यह जांचें कि सिस्टम वैसा व्यवहार करता है जैसा व्यवसाय उम्मीद करता है।"

\n\n

TDD (Test-Driven Development) के विपरीत, जहां आप पहले यूनिट टेस्ट लिखते हैं और फिर कोड, BDD उपयोग के परिदृश्यों पर ध्यान केंद्रित करता है। BDD टेस्ट किसी विधि या क्लास की जांच नहीं है, बल्कि पूरे उपयोगकर्ता परिदृश्य की जांच है।

\n\n

BDD के तीन स्तंभ

\n
    \n
  • एकीकृत भाषा — प्रोजेक्ट के सभी सदस्य (PO, विश्लेषक, परीक्षक, डेवलपर) एक ही भाषा बोलते हैं। आमतौर पर यह Gherkin है।
  • \n
  • परिदृश्य — प्रत्येक कार्यात्मक तत्व Given-When-Then (दिया गया-जब-तब) के माध्यम से वर्णित किया जाता है।
  • \n
  • स्वचालन — परिदृश्य स्वचालित टेस्ट में बदल जाते हैं जो CI/CD के भाग के रूप में चलाए जाते हैं।
  • \n
\n\n

अब देखते हैं कि यह C# कोड में कैसा दिखता है।

\n\n

C# में BDD के लिए उपकरण

\n\n

.NET इकोसिस्टम में BDD को लागू करने के लिए दो मुख्य उपकरण हैं:

\n\n
    \n
  • SpecFlow — C# के लिए सबसे लोकप्रिय BDD फ्रेमवर्क। यह Gherkin स्क्रिप्ट को पार्स करता है और उन्हें कोड से जोड़ता है।
  • \n
  • xUnit / NUnit / MSTest — टेस्ट रनर जो BDD टेस्ट को निष्पादित करते हैं।
  • \n
\n\n

हम SpecFlow + xUnit का उपयोग करेंगे। इंस्टॉलेशन सरल है — NuGet के माध्यम से:

\n\n
dotnet add package SpecFlow\ndotnet add package SpecFlow.xUnit\ndotnet add package xunit\ndotnet add package xunit.runner.visualstudio
\n\n

इंस्टॉलेशन के बाद, प्रोजेक्ट में Features नामक फ़ोल्डर बनाएं — यहीं पर आपकी .feature फ़ाइलें स्क्रिप्ट के साथ रहेंगी।

\n\n

Gherkin में पहला BDD स्क्रिप्ट लिखना

\n\n

Gherkin व्यवहार का वर्णन करने वाली भाषा है। यह कीवर्ड का उपयोग करती है: Feature, Scenario, Given, When, Then, And, But।

\n\n

आइए एक सरल परिदृश्य का वर्णन करें: उपयोगकर्ता ऑर्डर का भुगतान करने का प्रयास करता है, और यदि राशि 1000 रुपये से अधिक है, तो उसे एक ईमेल आता है।

\n\n

Features फ़ोल्डर में Payment.feature फ़ाइल बनाएं:

\n\n
Feature: Payment Notification\n    As a customer\n    I want to receive an email after payment\n    So that I have a confirmation of my purchase\n\nScenario: Successful payment over 1000 rubles sends notification\n    Given a customer with balance 5000 rubles\n    When the customer pays an order of 1500 rubles\n    Then the customer should receive an email notification\n\nScenario: Payment under 1000 rubles does not send notification\n    Given a customer with balance 5000 rubles\n    When the customer pays an order of 500 rubles\n    Then the customer should not receive any email notification
\n\n

ध्यान दें: यहां

ब्लॉग

पुस्तक अनुशंसाएँ