TypeScript पर BDD: कोड जो व्यवसाय को समझता है

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

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

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

TypeScript पर BDD: जब कोड व्यवसाय की भाषा बोलता है

\n\n

क्या आपने कभी आवश्यकताओं वाले कई पन्नों के दस्तावेज़ का अनुवाद किया है, ताकि यह पता चले कि ग्राहक का मतलब कुछ और ही था? क्या आप उस स्थिति से परिचित हैं जब डेवलपर और विश्लेषक एक ही कार्य को देखते हैं, लेकिन दो अलग-अलग एप्लिकेशन देखते हैं? यदि हाँ, तो आप BDD (Behaviour-Driven Development) के लिए तैयार हैं — एक पद्धति जो "चाहिए" और "हो गया" के बीच की सीमा को मिटा देती है।

\n\n

आज हम बात करेंगे कि TypeScript पर BDD कैसे लागू करें। मैं दिखाऊंगा कि कैसे उबाऊ स्पेसिफिकेशन को जीवंत, निष्पादन योग्य परिदृश्यों में बदला जाए, जिसे मैनेजर और बैकएंड डेवलपर दोनों समझ सकें। यह सिर्फ टेस्ट के बारे में नहीं है — यह टीम की साझा भाषा के बारे में है।

\n\n

वैसे, यदि आप TypeScript में अपनी यात्रा शुरू कर रहे हैं, तो मैं PythonLib नॉलेज बेस पर एक नज़र डालने की सलाह देता हूँ — वहाँ बुनियादी बातों पर बेहतरीन सामग्री है। और हम आगे बढ़ते हैं।

\n\n

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

\n\n

Behaviour-Driven Development TDD (Test-Driven Development) का विकास है। यदि TDD इस बात पर ध्यान केंद्रित करता है कि कोड "कैसे" काम करता है (टेस्ट कार्यान्वयन से पहले लिखे जाते हैं), तो BDD इस सवाल का जवाब देता है कि सिस्टम को उपयोगकर्ता के दृष्टिकोण से "क्या" करना चाहिए।

\n\n

BDD की मुख्य विशेषता Gherkin सिंटैक्स है। यह "दिया गया है — जब — तब" (Given — When — Then) संरचना है, जो इस तरह दिखती है:

\n\n
कार्यक्षमता: उपयोगकर्ता प्रमाणीकरण\n  एक पंजीकृत उपयोगकर्ता के रूप में\n  मैं सिस्टम में लॉग इन करना चाहता हूँ\n  ताकि मैं अपने व्यक्तिगत खाते तक पहुँच प्राप्त कर सकूँ\n\n  परिदृश्य: सफल लॉगिन\n    दिया गया है उपयोगकर्ता ईमेल "test@example.com" और पासवर्ड "123456" के साथ\n    जब उपयोगकर्ता सही डेटा दर्ज करता है\n    तब सिस्टम उसे व्यक्तिगत खाते में रीडायरेक्ट करता है\n
\n\n

क्या आप सहमत नहीं हैं कि यह "यूनिट-टेस्ट जाँचता है कि login() विधि true लौटाती है" से अधिक समझने योग्य है? यही BDD की ताकत है: TypeScript पर टेस्ट दस्तावेज़ीकरण बन जाते हैं जिसे टीम का कोई भी सदस्य पढ़ सकता है।

\n\n

BDD कब लाभदायक होता है?

\n\n
    \n
  • जटिल व्यावसायिक तर्क — जब कोड में कई शर्तें, क्रियाओं की श्रृंखलाएँ और त्रुटि परिदृश्य हों।
  • \n
  • वितरित टीमें — मास्को में विश्लेषक, मिन्स्क में डेवलपर, नोवोसिब में परीक्षक। BDD उनकी साझा भाषा है।
  • \n
  • माइक्रोसर्विसेज — जब सेवाओं के बीच इंटरैक्शन कॉन्ट्रैक्ट को स्पष्ट रूप से परिभाषित करने की आवश्यकता हो।
  • \n
\n\n

TypeScript पर BDD के लिए उपकरण

\n\n

TypeScript में BDD लागू करने के लिए हमारे पास दो मुख्य उपकरण हैं: Cucumber.js (या इसके वेरिएंट) और प्लगइन्स के साथ Jest। आइए दोनों दृष्टिकोणों को समझते हैं।

\n\n

Cucumber.js + TypeScript: क्लासिक तरीका

\n\n

Cucumber BDD का स्वर्ण मानक है। यह Gherkin फ़ाइलों (आमतौर पर .feature एक्सटेंशन के साथ) को पढ़ता है और कोड-स्टेप्स चलाता है जो आप TypeScript में लिखते हैं।

\n\n

स्थापना:

\n\n
npm install --save-dev @cucumber/cucumber typescript ts-node\nnpm install --save-dev @types/node\n
\n\n

फ़ाइल बनाएँ features/login.feature:

\n\n
कार्यक्षमता: सिस्टम में लॉगिन\n  एक उपयोगकर्ता के रूप में\n  मैं प्रमाणित होना चाहता हूँ\n  ताकि मैं सुविधाओं तक पहुँच प्राप्त कर सकूँ\n\n  परिदृश्य: सही ईमेल और पासवर्ड के साथ सफल लॉगिन\n    दिया गया है मैं लॉगिन पेज खोलता हूँ\n    जब मैं ईमेल "admin@test.com" दर्ज करता हूँ\n    और मैं पासवर्ड "secret" दर्ज करता हूँ\n    और मैं "लॉग इन" बटन दबाता हूँ\n    तब मुझे स्वागत संदेश "स्वागत है, Admin!" दिखाई देता है\n
\n\n

अब TypeScript में स्टेप्स लिखते हैं। फ़ाइल बनाएँ features/step_definitions/login.steps.ts:

\n\n
import { Given, When, Then } from '@cucumber/cucumber';\nimport { expect } from 'chai';\n\n// एप्लिकेशन स्थिति का सरल अनुकरण\nconst appState = {\n  currentPage: '',\n  loggedInUser: ''\n};\n\nGiven('मैं लॉगिन पेज खोलता हूँ', function () {\n  appState.currentPage = 'login';\n  appState.loggedInUser = '';\n});\n\nWhen('मैं ईमेल {string} दर्ज करता हूँ', function (email                

ब्लॉग

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