तुम सही हो। BDD भाषा की अस्पष्टता के साथ समस्याओं को समाप्त नहीं करता है - बिल्कुल नहीं। जैसा कि अन्य लोगों ने बताया, अनुवादित किए गए स्निपेट्स को ठीक से परिभाषित करके मिलान करने की आवश्यकता है, लेकिन यह अंतर्निहित अस्पष्टता समस्या को भी संबोधित नहीं करता है।
अब बीडीडी वास्तव में इस समस्या को हल करने के बावजूद क्यों सार्थक नहीं है? कुछ कारण हैं और यह सूची निश्चित रूप से पूरी नहीं हुई है।
अस्पष्टता हल नहीं हुई है
यह न तो बीडीडी के पक्ष में एक कारण है और न ही इसके खिलाफ है। लेकिन जब आप इसे उपयोगकर्ता की कहानियों या आवश्यकताओं जैसे अन्य दृष्टिकोणों के विपरीत करते हैं, तो सभी एसडब्ल्यू विकास दृष्टिकोण भाषा की अस्पष्टता से पीड़ित होते हैं क्योंकि वे सभी एक तरह से या किसी अन्य के साथ एक प्राकृतिक भाषा तैयार करते हैं।
तकनीकी रूप से, भाषा की अस्पष्टता की समस्या का हल लज्जान जैसी कलात्मक भाषाओं के साथ किया गया है , लेकिन फिर, आपके ग्राहक और डेवलपर्स को संभवतः उस भाषा का पता नहीं होगा।
सर्वव्यापी भाषा
BDD एक सर्वव्यापी भाषा के विचार के साथ हाथ से जाता है। सभी ग्राहकों, परीक्षकों और डेवलपर्स के साथ मिलकर परिदृश्यों को निर्दिष्ट करने में सक्षम होने के नाते, बस BDD को अन्य दृष्टिकोणों पर बढ़त देता है।
सभी आवश्यकताओं को लिखने वाले एक पारंपरिक आवश्यकताओं इंजीनियर पर विचार करें। एक बार जब आप एक परीक्षक या ग्राहक के रूप में प्राप्त करते हैं, तो आपकी समीक्षा के लिए आवश्यकताओं से भरा 300 पेज का दस्तावेज़ उस शब्दावली का बहुत अधिक दबाव होगा, जो वहां इस्तेमाल की गई थी।
उपयोगकर्ता कहानियां उस मोर्चे पर थोड़ा बेहतर करती हैं, क्योंकि वे अपने निर्माण में सभी हितधारकों को भी शामिल करते हैं। सर्वव्यापी भाषा के संदर्भ में, मैं यह नहीं कहूंगा कि या तो बीडीडी या उपयोगकर्ता कहानियां बेहतर हैं - हालांकि वे अगले बिंदु में काफी भिन्न हैं।
testability
BDD का एक प्रमुख पहलू यह है कि आपके विनिर्देश वास्तव में निष्पादन योग्य हैं (ककड़ी या इस तरह के माध्यम से)। न तो आवश्यकताएं और न ही उपयोगकर्ता कहानियां इस सुविधा की पेशकश करती हैं। मेरे लिए व्यक्तिगत रूप से, यह BDD के लिए मुख्य विक्रय बिंदु है।
पारंपरिक आवश्यकताओं के साथ विरोधाभास - हम उम्र के लिए आवश्यकताओं इंजीनियरों को बता रहे हैं कि उनकी आवश्यकताओं का परीक्षण किया जाना चाहिए। फिर भी, हर परियोजना एक ऐसा मामला देखती है, जहाँ कहीं न कहीं लाइन टेस्टर्स को यह एहसास होता है कि उन्हें इस बात का कोई अंदाज़ा नहीं है कि एक निश्चित आवश्यकता का परीक्षण कैसे किया जाए।
यदि सही किया जाता है, तो उपयोगकर्ता कहानियां, उनके प्रारंभिक सृजन चरण में परीक्षकों को शामिल करना सुनिश्चित करने के लिए। दुर्भाग्य से, यह वास्तविक दुनिया के साथ सिद्धांत के टकराव का मामला है, जहां मैंने कई कहानियां देखी हैं जो पहले किसी भी परीक्षक ने नहीं देखी हैं।
दूसरी ओर BDD स्वचालित रूप से आपको एक निष्पादन योग्य परीक्षा परिदृश्य देता है। इसके आस-पास कोई बहाना नहीं है और कोई भी तरीका नहीं है (अच्छी तरह से जब तक आप स्वचालन की परतों को पूरी तरह से अनदेखा नहीं करते हैं और सिर्फ फैंसी कविता के लिए परिदृश्य लिखते हैं)।
अधिक आम तौर पर, टेस्ट फर्स्ट एक ऐसा सिद्धांत है, जो सॉफ्टवेयर डेवलपमेंट के सभी चरणों में बहुत फायदेमंद रहा है और BDD, विकास की सबसे बाहरी परत (इकाई स्तर पर f.ex. TDD की तुलना में) के लिए इसका अनुप्रयोग है।
सारांश
सारांश में, बीडीडी आपको प्राकृतिक भाषा अस्पष्टता की समस्याओं से दूर नहीं करता है। हालांकि, यह आपको दो महत्वपूर्ण बिंदुओं के माध्यम से उस समस्या से निपटने में मदद करता है: अस्पष्टता को कम करने के लिए एक सर्वव्यापी भाषा पर ध्यान केंद्रित करना (यह उन्हें पूरी तरह से समाप्त नहीं करेगा, लेकिन यह एक टन मदद करता है!) और आपको निष्पादन योग्य लिखने के लिए मजबूर करता है। विशेष विवरण। उत्तरार्द्ध बिंदु ज्यादातर अस्पष्टता की समस्याओं को दूर करने में मदद कर रहा है, क्योंकि यही वह बिंदु है जहां अस्पष्टताएं अन्यथा समस्याओं के रूप में दिखाई देने लगती हैं।