मैं विकास के लिए बीडीडी दृष्टिकोण से प्यार करता हूं, लेकिन मैंने कितनी दूर जाने के साथ चिंता में उछाल दिया है। सबसे हाल ही में Radar ThoughtWorks से यह टिप्पणी मुझे थामने देता है:हम बीडीडी परिदृश्यों के मामूली क्रमपरिवर्तन कैसे संभाल सकते हैं?
"व्यवहार पर ही आधारित डिजाइन के आगमन (BDD) ककड़ी की तरह परीक्षण चौखटे, सेलेनियम की तरह ब्राउज़र स्वचालन उपकरण के साथ संयुक्त, स्वीकृति परीक्षण के व्यापक उपयोग में प्रोत्साहित किया है दुर्भाग्यवश, दुर्भाग्यवश परीक्षण के बड़े पैमाने पर करने के लिए प्रोत्साहित किया गया जहां परीक्षण चलाने की लागत सबसे बड़ी है। इसके बजाय, हमें उचित स्तर पर जितना संभव हो सके कोड के करीब परीक्षण करना चाहिए, ताकि परीक्षण अधिकतम दक्षता के साथ चलाया जा सके। ब्राउजर-स्तरीय परीक्षण केक पर टुकड़ा होना चाहिए, स्वीकृति और उपयुक्त परतों पर निष्पादित यूनिट परीक्षणों द्वारा समर्थित होना चाहिए। "
मैं डेटा मापदंड अंत उपयोगकर्ता को चुनने के लिए अनुमति दी है के आधार पर प्रदर्शित फिल्टर करने के लिए एक व्यवसाय की आवश्यकता के साथ एक बुनियादी CRUD एप्लिकेशन मिल गया है:
तो यहाँ मेरी परिदृश्य (यमक इरादा) है। चर्चा की आसानी के लिए मान लें कि यह पावर कंपनी के लिए एक ऐप है, और मैं प्रत्येक ग्राहक के लिए वर्तमान माह-दर-साल बिजली उपयोग प्रदर्शित कर रहा हूं। इस ऐप का उपयोगकर्ता एक ग्राहक, एकाधिक ग्राहक, कोई ग्राहक, या "सभी ग्राहक" चुनकर डेटा को संकीर्ण कर सकता है। प्रदर्शित डेटा उनके द्वारा चुने गए विकल्पों के आधार पर बदल जाएगा।
किसी उत्पाद हितधारक के लिए, ये वास्तव में 4 अलग-अलग परिदृश्यों का प्रतिनिधित्व करते हैं। हालांकि एक डेवलपर परिप्रेक्ष्य से वे व्यावहारिक रूप से समान हैं, केवल अंतर ही डीबी को पारित पैरामीटर है। तो प्रश्न बन जाता है: क्या प्रत्येक क्रमपरिवर्तन होने का लाभ उन्हें चलाने और बनाए रखने की लागत से अधिक है?
मुझे लगता है कि बीडीडी सिद्धांत शायद "हां" कहेंगे क्योंकि अपेक्षित व्यवहार का संचार अधिक स्पष्ट है, लेकिन मुझे यकीन नहीं है। यह निश्चित रूप से मुझे overkill का अनुभव है। परिदृश्य मामूली परिवर्तनों के साथ बहुत सारे कॉपी-पेस्ट होंगे।
मेरा झुकाव इस कार्यक्षमता को एक ऐसे परिदृश्य के साथ कवर करना है जो कोर बिजनेस वैल्यू को कैप्चर करता है ("जब मैं एक ग्राहक का चयन करता हूं तो मुझे बिजली उपयोग डेटा दिखाई देता है"), और फिर गैर-यूआई के सेट के साथ अन्य क्रमपरिवर्तन को कवर करें -आधारित एकीकरण परीक्षण जो सेवा/क्वेरी को मान्य करता है, सही डेटा देता है। क्या यह सोच गलत है? यह सुनिश्चित करने का सबसे अच्छा जवाब क्या है कि इन परिदृश्यों को कवर किया गया है, बीडीडी के लाभों को आत्मसमर्पण किए बिना?
धन्यवाद, लिज़, यह सहायक है। मुझे लगता है कि हम जिस पिटफॉल में शामिल हो रहे हैं वह अभी भी परीक्षण जैसे व्यवहारों के बारे में सोच रहा है। हम व्यापक परीक्षण चाहते हैं, इसलिए हम व्यापक परिदृश्य चाहते हैं। उस मानसिकता को बदलना होगा। इसके अलावा, मैं इस "अदरक केक" पैटर्न के बारे में थोड़ा और कहां से सीख सकता हूं? Google ने कुछ अच्छे केक व्यंजनों को छोड़कर मेरे लिए बहुत कुछ नहीं बदला ... :) –
@ रयान-नेल्सन दान उत्तर उम्मीद है कि * कुछ * बिंदु पर एक पुस्तक लिख रहे हैं ... इसके अलावा, उसके वीडियो देखें। अनिवार्य रूप से आप सॉफ़्टवेयर (चॉकलेट केक) के कुछ अच्छी तरह से समझने वाले टुकड़े के लिए एक नुस्खा लेते हैं, और उस चीज़ को प्रतिस्थापित करते हैं जिसे आपको किसी अन्य चीज़ के साथ बदलने की आवश्यकता होती है (अदरक द्वारा प्रतिस्थापित चॉकलेट)। आपको एक शेफ - या एक देव के लिए पूरी नुस्खा की व्याख्या करने की आवश्यकता नहीं है - इसे प्राप्त करने के लिए। – Lunivore
यहां एक वीडियो मिला जहां वह इसे समझाता है: http://oredev.org/2011/sessions/patterns-of-effective- वितरण –