BDD: आरंभ करना


9

मैं BDD से शुरू कर रहा हूं और यह मेरी कहानी है:

Feature: Months and days to days
    In order to see months and days as days
    As a date conversion fan
    I need a webpage where users can enter
    days and months and convert them to days.

मुझे कुछ शंकाए है ...

क्या मुझे कुछ भी कोड करने से पहले अपने परिदृश्य लिखने चाहिए या क्या मुझे पहले एक परिदृश्य लिखना चाहिए और फिर कोड लिखना चाहिए, फिर से एक परिदृश्य लिखना चाहिए और फिर कोड लिखना चाहिए, और इसी तरह ...?

अगर मुझे पहले अपने परिदृश्य लिखने चाहिए, तो क्या मेरे कदमों को मंजूरी मिल सकती है और उत्पादन कोड अभी भी नहीं मिलता है?

मुझे अपने कोड पर रीफैक्टरिंग कब करनी चाहिए? सुविधा के बाद या प्रत्येक परिदृश्य के कार्यान्वयन के बाद किया जाता है?


"क्या मेरे कदमों को मंजूरी मिल सकती है और उत्पादन कोड अभी भी नहीं मिलता है?" इसका क्या मतलब है? कृपया समझाएँ।
S.Lott

जवाबों:


12

कहानी से, मुझे लगता है कि आप अपने दम पर कोडिंग कर रहे हैं।

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

यदि आप अपने दम पर ऐसा कर रहे हैं, तो रबर बतख को पकड़ो और बतख को अपने आवेदन के व्यवहार की व्याख्या करें। यह कैसे काम करना चाहिए इसके कुछ उदाहरण दें। वे आपके परिदृश्य होंगे।

शुरू करने के लिए, मैं उन परिदृश्यों को स्वचालित नहीं करने का सुझाव दूंगा। आप चाहें तो उन्हें लिख सकते हैं। याद रखें कि आपके द्वारा बतख के साथ साझा किए गए व्यावसायिक परिणाम उन्हें वाक्यांश देने के लिए सही स्तर के बारे में हैं। अब आपको यह पता होना चाहिए कि ऐप कैसे व्यवहार करता है, और आप मैन्युअल रूप से परिदृश्यों के माध्यम से चला सकते हैं। मुझे हर उस चीज़ का इलाज करना पसंद है जो बग की तरह काम नहीं करती है । मैं है कभी कभी स्वचालन के साथ शुरू कर दिया है, लेकिन केवल जब मैं बहुत अच्छी तरह से जानते हैं कि कैसे प्रणाली काम करती है, मैं उपकरणों के साथ परिचित हूँ, और यूआई अच्छी तरह से समझा गया है। तब भी मुझे अक्सर कोड को लिखने के बाद इसे थोड़ा सुधारना पड़ता है।

निचले स्तर पर, अपने बतख को बताएं कि प्रत्येक वर्ग कैसा व्यवहार करने वाला है। कुछ उदाहरण प्रदान करें। रबर बतख तकनीकी भाषा को समझने में पूरी तरह से सक्षम हैं। अब आपके पास अपनी इकाई-स्तरीय BDD, उर्फ ​​इकाई परीक्षण हैं। लाल-हरा-परावर्तक चक्र यहां होता है। (मैं किसी भी और अधिक परावर्तक की आवश्यकता नहीं है, क्योंकि मैं अपनी कक्षाओं की जिम्मेदारियों के बारे में सोच रहा हूं, इसे व्यवसाय-उन्मुख भाषा में पुन: प्रकाशित कर रहा हूं, और यह वैसे भी काफी सुंदर तरीके से समाप्त हो जाता है। लेकिन मैं 'अब कुछ समय के लिए ऐसा कर रहे हैं। यदि आप ऐसा करते हैं तो यह ठीक है।'

इसे बहुत ज्यादा रिफैक्ट न करें। हम अभी भी अपने कोड पर प्रतिक्रिया प्राप्त करना चाहते हैं, क्योंकि हमेशा ऐसी चीजें होती हैं जिन्हें हम नहीं जानते हैं कि हम नहीं जानते हैं । पूर्णता यहाँ आपका दुश्मन है। इसे काफी अच्छा बनाएं, इसे पठनीय बनाएं, फिर आगे बढ़ें। यदि आपको और अधिक परिवर्तन करने के लिए कुछ सही करने की आवश्यकता है, तो इसे तब करें जब आप आगे परिवर्तन करें।

यदि आपके पास व्यवसाय के हितधारकों से अपने परिदृश्यों पर प्रतिक्रिया प्राप्त करने का अवसर है, लेकिन वे आपके साथ नहीं बैठे हैं, तो आप जैसे ही आपने लिखा है, वैसे ही आप परिदृश्य भेज सकते हैं और इससे पहले कि आप उन्हें स्वचालित करें। आप UI का मॉक-अप भी भेजना चाह सकते हैं, ताकि वे शब्दों को क्रियाओं से संबद्ध कर सकें। इसके साथ कोडिंग से बहुत आगे मत निकलना। इस धारणा के साथ काम करें कि जो आपने पहले ही किया है वह गलत है , और आपको यह पता लगाने के लिए प्रतिक्रिया प्राप्त करने की आवश्यकता है कि कैसे।

एक अंतिम संकेत के रूप में, आम तौर पर किसी उपयोगकर्ता के दृष्टिकोण (परिदृश्य, हां, लेकिन कहानियां नहीं) से कहानियों को वाक्यांश न दें। वे उपयोगकर्ता कहानियां नहीं हैं। इसे शायद कुछ इस तरह पढ़ना चाहिए:

In order to attract people to my website
As @thom
I want users to easily convert months and days to days.

वैसे भी कुछ उच्च स्तरीय लक्ष्य हैं, जिनकी आप तलाश कर रहे हैं। इससे आपको उन क्षमताओं को निकालने में भी मदद मिलेगी जिनकी आपको ज़रूरत है। इसके साथ शुभकामनाएं, और अतिरिक्त-लंबी पोस्ट के लिए माफी।


1
The रबर डक ’वाला हिस्सा काफी अच्छा है। मैंने सोचा था कि मैं केवल एक है जो उस के बारे में सोचना होगा!
NoChance

3

क्या मुझे कुछ भी कोड करने से पहले अपने परिदृश्य लिखने चाहिए या क्या मुझे पहले एक परिदृश्य लिखना चाहिए और फिर कोड लिखना चाहिए, फिर से एक परिदृश्य लिखना चाहिए और फिर कोड लिखना चाहिए, और इसी तरह ...?

दोनों काम करेंगे। एक चुनें।

यह ज्यादा मायने नहीं रखता।

आपके पास जितने अधिक परिदृश्य होंगे, आप उतने अधिक डिजाइन कर सकते हैं।

आपके पास जितने अधिक परिदृश्य होंगे, कुछ करने में उतना ही अधिक समय लगेगा।

मुझे अपने कोड पर रीफैक्टरिंग कब करनी चाहिए? सुविधा के बाद या प्रत्येक परिदृश्य के कार्यान्वयन के बाद किया जाता है?

जब आप अगले परिदृश्य को डिजाइन करना मुश्किल हो जाता है, तो आप रिफ्लेक्टर करते हैं।


मैंने एक नया सवाल किया है ... "अगर मुझे अपने परिदृश्यों को पहले लिखना चाहिए ..."। क्या आप कृपया एक बार देख सकते हैं? आपका बहुत बहुत धन्यवाद।
20:11

1
@ S.Lott अच्छा उत्तर लेकिन एक वक्रोक्ति: लाल-हरे-परावर्तक चक्र की उपयोगिता के आधार पर, मैं सुझाव दूंगा कि प्रत्येक हरे रंग के परीक्षण के बाद, BDD प्रक्रिया के दौरान निरंतर रिफ्लेक्टिंग करना चाहिए।
रीन हेनरिच्स

@ हेन हेनरिक्स: एक विकल्प यह ध्यान रखना होगा कि एक कहानी के लिए सभी परीक्षणों को समाप्त करने के लिए रीफैक्टरिंग एक अपरिहार्य और कोडिंग के अपरिहार्य भाग के रूप में होता है। यहां तक ​​कि एक महान डिजाइन सभी ठिकानों को कवर नहीं कर सकता है। यह रिफैक्टिंग उल्लेख के लायक नहीं था। हालाँकि, आपने इसे अच्छी तरह से इंगित किया। हालांकि, कहानियों के बीच का पुनरावृत्ति एक और अधिक गंभीर और समय लेने वाला ऑपरेशन है, क्योंकि यह सेट कहानियों की अभिवृद्धि द्वारा विकसित होता है।
सल।

3

वर्णनात्मक क्रियाओं का उपयोग करें

Feature: CONVERT Months and days to days

कहानियों में डिज़ाइन निर्णय न करें ["मुझे एक वेबपेज की आवश्यकता है" एक डिज़ाइन निर्णय है]

As a date conversion fan
I want to convert days and months into days

कहानियों में व्यवसाय-मूल्य लक्ष्यों का उपयोग करें

So that [some business reason]

कोड शुरू करने से पहले जितनी सुविधाएँ और कहानियाँ लिख सकते हैं; कहानियाँ एक दूसरे को सूचित करती हैं, सुविधाओं को प्रभावित करती हैं, और डिज़ाइन को सूचित करती हैं।

प्रत्येक कहानी के बाद रिफलेक्टर। लाल-हरे-Refactor।


+1, अच्छा जवाब। लेकिन बाहरी, स्वीकृति-परीक्षण चक्र के बजाय आंतरिक, इकाई-परीक्षण चक्र के हिस्से के रूप में रिफ्लेक्टर करने के लिए "बीडीडी तरीका" नहीं है?
पीडीआर

@pdr: यही मेरा मतलब है, प्रत्येक कहानी के बाद रिफलेक्टर। BDD / TDD परीक्षण इकाई से स्वीकृति के पैमाने पर है, केवल एक ही चक्र है (मेरे दिमाग में) ;-)
स्टीवन ए लोव

क्यों "मुझे एक वेबपेज की आवश्यकता है" एक डिजाइन निर्णय है? धन्यवाद!
थॉम

@thom: उपयोगकर्ता कहानियों को व्यक्त करना चाहिए कि उपयोगकर्ता क्या करना चाहता है, न कि यह कैसे लागू किया जाएगा। दूसरे शब्दों में, विशेषताएं, कहानियां और परिदृश्य आवश्यकताएं और कार्यात्मक विनिर्देश हैं। जब तक आपके पास पूरी तस्वीर न हो, तब तक निर्णय न लें। इस (शायद कृत्रिम) उदाहरण में उपयोगकर्ता के व्यापार की जरूरत समग्र संकेत हो सकता है कि एक वेबपेज सबसे सुविधाजनक समाधान नहीं हो सकता है - एक डेस्कटॉप विजेट या मोबाइल एप्लिकेशन बेहतर के आधार पर हो सकता है, कैसे / जब वे इसका इस्तेमाल करने की जरूरत है। कार्यान्वयन का विवरण कहानियों को अव्यवस्थित करता है, और आपको एक विशिष्ट डिजाइन में भी जल्द ही बंद कर सकता है।
स्टीवन ए। लोव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.