2012-09-24 17 views
6

मैं विकास के लिए बीडीडी दृष्टिकोण से प्यार करता हूं, लेकिन मैंने कितनी दूर जाने के साथ चिंता में उछाल दिया है। सबसे हाल ही में Radar ThoughtWorks से यह टिप्पणी मुझे थामने देता है:हम बीडीडी परिदृश्यों के मामूली क्रमपरिवर्तन कैसे संभाल सकते हैं?

"व्यवहार पर ही आधारित डिजाइन के आगमन (BDD) ककड़ी की तरह परीक्षण चौखटे, सेलेनियम की तरह ब्राउज़र स्वचालन उपकरण के साथ संयुक्त, स्वीकृति परीक्षण के व्यापक उपयोग में प्रोत्साहित किया है दुर्भाग्यवश, दुर्भाग्यवश परीक्षण के बड़े पैमाने पर करने के लिए प्रोत्साहित किया गया जहां परीक्षण चलाने की लागत सबसे बड़ी है। इसके बजाय, हमें उचित स्तर पर जितना संभव हो सके कोड के करीब परीक्षण करना चाहिए, ताकि परीक्षण अधिकतम दक्षता के साथ चलाया जा सके। ब्राउजर-स्तरीय परीक्षण केक पर टुकड़ा होना चाहिए, स्वीकृति और उपयुक्त परतों पर निष्पादित यूनिट परीक्षणों द्वारा समर्थित होना चाहिए। "

मैं डेटा मापदंड अंत उपयोगकर्ता को चुनने के लिए अनुमति दी है के आधार पर प्रदर्शित फिल्टर करने के लिए एक व्यवसाय की आवश्यकता के साथ एक बुनियादी CRUD एप्लिकेशन मिल गया है:

तो यहाँ मेरी परिदृश्य (यमक इरादा) है। चर्चा की आसानी के लिए मान लें कि यह पावर कंपनी के लिए एक ऐप है, और मैं प्रत्येक ग्राहक के लिए वर्तमान माह-दर-साल बिजली उपयोग प्रदर्शित कर रहा हूं। इस ऐप का उपयोगकर्ता एक ग्राहक, एकाधिक ग्राहक, कोई ग्राहक, या "सभी ग्राहक" चुनकर डेटा को संकीर्ण कर सकता है। प्रदर्शित डेटा उनके द्वारा चुने गए विकल्पों के आधार पर बदल जाएगा।

किसी उत्पाद हितधारक के लिए, ये वास्तव में 4 अलग-अलग परिदृश्यों का प्रतिनिधित्व करते हैं। हालांकि एक डेवलपर परिप्रेक्ष्य से वे व्यावहारिक रूप से समान हैं, केवल अंतर ही डीबी को पारित पैरामीटर है। तो प्रश्न बन जाता है: क्या प्रत्येक क्रमपरिवर्तन होने का लाभ उन्हें चलाने और बनाए रखने की लागत से अधिक है?

मुझे लगता है कि बीडीडी सिद्धांत शायद "हां" कहेंगे क्योंकि अपेक्षित व्यवहार का संचार अधिक स्पष्ट है, लेकिन मुझे यकीन नहीं है। यह निश्चित रूप से मुझे overkill का अनुभव है। परिदृश्य मामूली परिवर्तनों के साथ बहुत सारे कॉपी-पेस्ट होंगे।

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

उत्तर

4

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

बीडीडी सबसे उपयोगी है जब यह मुश्किल चीजों का वर्णन कर रहा है; या तो डेवलपर्स को विशेषज्ञ ज्ञान पास करते समय, या अनिश्चितता की खोज होने तक व्यवहार को कम करना। बुनियादी फिल्टर के साथ एक सीआरयूडी अनुप्रयोग में, व्यवहार को समझना वास्तव में आसान है।

जो आप वर्णन कर रहे हैं वह शायद सबसे अच्छा है डैन नॉर्थ का "अदरक केक" पैटर्न: कुछ और के लिए नुस्खा ले लो, लेकिन व्यवहार के एक पहलू के साथ दूसरे से भिन्न (या इस मामले में एक अतिरिक्त, आसान-से- व्यवहार के पहलू को समझें)। वह कॉपी-पेस्ट का थोड़ा सा उपयोग करता है, और मुझे विशेष रूप से इस तरह के व्यवहार के लिए संदेह है।

तो, आपका झुकाव बिल्कुल सही है। यदि स्वचालित हो रहा है, तो मैं शायद केवल एक उदाहरण स्वचालित कर दूंगा और इकाई और एकीकरण परीक्षणों को बाकी को कवर कर दूंगा।

मैं यह भी जानना चाहता हूं कि इस परियोजना का पीछा क्यों किया जा रहा था। कुछ इसके बारे में दिलचस्प होना चाहिए, या ऐसा नहीं होगा।इसे ढूंढें, और परिदृश्य पर चर्चा शुरू करने के लिए शायद यह एक शानदार जगह है।

+0

धन्यवाद, लिज़, यह सहायक है। मुझे लगता है कि हम जिस पिटफॉल में शामिल हो रहे हैं वह अभी भी परीक्षण जैसे व्यवहारों के बारे में सोच रहा है। हम व्यापक परीक्षण चाहते हैं, इसलिए हम व्यापक परिदृश्य चाहते हैं। उस मानसिकता को बदलना होगा। इसके अलावा, मैं इस "अदरक केक" पैटर्न के बारे में थोड़ा और कहां से सीख सकता हूं? Google ने कुछ अच्छे केक व्यंजनों को छोड़कर मेरे लिए बहुत कुछ नहीं बदला ... :) –

+0

@ रयान-नेल्सन दान उत्तर उम्मीद है कि * कुछ * बिंदु पर एक पुस्तक लिख रहे हैं ... इसके अलावा, उसके वीडियो देखें। अनिवार्य रूप से आप सॉफ़्टवेयर (चॉकलेट केक) के कुछ अच्छी तरह से समझने वाले टुकड़े के लिए एक नुस्खा लेते हैं, और उस चीज़ को प्रतिस्थापित करते हैं जिसे आपको किसी अन्य चीज़ के साथ बदलने की आवश्यकता होती है (अदरक द्वारा प्रतिस्थापित चॉकलेट)। आपको एक शेफ - या एक देव के लिए पूरी नुस्खा की व्याख्या करने की आवश्यकता नहीं है - इसे प्राप्त करने के लिए। – Lunivore

+0

यहां एक वीडियो मिला जहां वह इसे समझाता है: http://oredev.org/2011/sessions/patterns-of-effective- वितरण –

0

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

ऐसी स्थिति में, शायद मैं सबसे सरल परिदृश्य (कोई ग्राहक) और सबसे जटिल (फ़िल्टर करने वाले कई ग्राहक, लेकिन सभी नहीं) को स्वचालित करने का सुझाव दूंगा, और अन्य परिक्रमाओं को अधिक केंद्रित प्रोग्रामर परीक्षणों में छोड़ दें। मैं केवल "कोई ग्राहक" मामला शामिल नहीं करूंगा क्योंकि लोगों को कभी-कभी गलत तरीके से गलत होने की प्रवृत्ति होती है, क्योंकि कभी-कभी कार्यक्रम को दुर्घटनाग्रस्त कर दिया जाता है। (आपने बीज डेटा स्क्रिप्ट नहीं चलाई ?!)

+0

"यह देखते हुए कि आपके पास कोई ग्राहक नहीं है ... आपका क्या मतलब है, आपके पास कोई ग्राहक नहीं है? आप ग्राहक प्रबंधक हैं! आप इस कार्यक्रम का उपयोग करने की कोशिश क्यों कर रहे हैं? फोन पर जाओ और कुछ खूनी ग्राहक प्राप्त करें!" <- क्लाइंट प्रबंधन के असली सिर के साथ, जब आपके पास कोई ग्राहक नहीं है, तो क्या करना है इसके बारे में वार्तालाप! – Lunivore

संबंधित मुद्दे