क्या यह? शायद। मेरी राय यह होगी कि यह आम तौर पर मनोरंजन सॉफ्टवेयर के लिए बहुत खराब फिट होगा, हालांकि यह निम्न स्तर के पुस्तकालयों के लिए अच्छी तरह से काम कर सकता है।
संपादित करें: यहाँ मेरी राय के लिए कुछ औचित्य है।
विकिपीडिया BDD को एक तकनीक के रूप में परिभाषित करता है जो "एक सॉफ्टवेयर परियोजना में डेवलपर्स, क्यूए और गैर-तकनीकी या व्यावसायिक प्रतिभागियों के बीच सहयोग को प्रोत्साहित करती है।" यह पहले से ही एक बुरे विचार की तरह लगता है क्योंकि गेम ज्यादातर सॉफ्टवेयर से अलग होते हैं, क्योंकि वे एक 'गैर-तकनीकी या व्यावसायिक भागीदार' की विशिष्ट आवश्यकता को पूरा करने के लिए उपकरण के रूप में डिज़ाइन नहीं किए जाते हैं, लेकिन मोटे तौर पर मनोरंजन के लिए डिज़ाइन किए गए कार्य हैं। "वांछित सॉफ़्टवेयर व्यवहार" पर जोर है, लेकिन तकनीकी स्तर को छोड़कर खेलों में शायद ही कभी 'वांछित सॉफ़्टवेयर व्यवहार' होता है। कोड के उस हिस्से की जांच करने में निश्चित रूप से योग्यता है, लेकिन अंत उपयोगकर्ता के साथ नहीं, क्योंकि वे इसे कभी नहीं देखेंगे।
लेकिन मान लें कि आप उस मानव हितधारक सामान को बाहर फेंकना चाहते हैं और विभिन्न कोड मॉड्यूल के बीच अनुबंध लागू करने के लिए सिर्फ BDD का उपयोग करते हैं, जहां तक मैं देख सकता हूं कि सामान्य परीक्षण-संचालित विकास से बहुत भिन्न नहीं है, जिसे मैं भी खराब मानता हूं- निम्नलिखित कारणों से खेलों के अनुकूल।
परीक्षण यह जाँचने के लिए उपयोगी है कि असतत घटनाएँ अपेक्षित होने पर हुईं। यह इवेंट-संचालित प्रोग्रामिंग में अच्छी तरह से काम करता है, अर्थात। अधिकांश सॉफ़्टवेयर वर्ल्ड, जहां एक एक्शन किया जाता है, कुछ आउटपुट उत्पन्न होता है, और फिर आप बस यह सत्यापित करते हैं कि एक्शन और परिणाम मेल खाते हैं। हालांकि, गेम सॉफ़्टवेयर आमतौर पर एक सिमुलेशन है, जहां एक कार्रवाई का असतत परिणाम नहीं होता है, लेकिन विश्व राज्य में एक निरंतर परिवर्तन होता है। यदि मेरा छिपा हुआ खिलाड़ी शोर मचाता है, तो मैं जांचना चाहता हूं कि एआई मेरा शिकार करता है। इसलिए, मैं यह सुनिश्चित करने के लिए एक परीक्षण बना सकता हूं कि शोर पैदा होने के बाद एआई 'शिकार' राज्य में है, और यह बहुत अच्छा है। लेकिन मुझे कैसे पता चलेगा कि शिकार भी काम करता है? आप इसे तुरंत नहीं देख सकते - आप इसे केवल समय बीतने पर देख सकते हैं।
इसके अतिरिक्त, एक परीक्षण-प्रथम दृष्टिकोण सुरक्षा की झूठी भावना पैदा कर सकता है, और लोगों को विश्वास करने के लिए नेतृत्व कर सकता है कि यह वास्तव में है की तुलना में बेहतर है।
def check_dice_roll_in_range():
d = new Dice()
assert(d.roll() between 1 and 6)
class Dice:
def roll():
return 4
चूंकि एक परीक्षा परिणाम एक झूठी सकारात्मक दे सकता है, आप कभी भी कोड की जांच करने की मूल आवश्यकता से बच नहीं सकते। लेकिन यदि कोड को पर्याप्त रूप से जांचा जाता है, तो परीक्षण द्वितीयक महत्व लेता है। यही कारण है, मेरी राय में, बग फिक्स का परीक्षण करने के लिए, परीक्षण के बाद सबसे अच्छा उपयोग किया जाता है।
मैं यह तर्क नहीं दूंगा कि परीक्षण में कभी कोई लाभ नहीं हुआ है, जब ऑब्जेक्ट एक्स और वाई एक साथ काम करते हैं, तो आपको जो परिणाम मिलता है वह अपेक्षित है। मुद्दा यह है कि क्या आप इसे सत्यापित करने के सबसे प्रभावी तरीके का उपयोग कर रहे हैं। विधियों में औपचारिक सत्यापन, एक कोड समीक्षा, परीक्षण-प्रथम विधियाँ, परीक्षण-अंतिम विधियाँ, पारंपरिक QA ब्लैक-बॉक्स परीक्षण या केवल अपेक्षित रूप से कोड का उपयोग करना और परिणाम देखना शामिल हो सकते हैं। अंतिम दो विकल्प ज्यादातर समय आश्चर्यजनक रूप से प्रभावी होते हैं, क्योंकि ध्वनि की तरह होने के बावजूद उनमें कठोरता की कमी होती है, ज्यादातर कीड़े विशिष्ट उपयोग के दौरान पाए जाते हैं, और इसके प्राकृतिक संदर्भ में बग को समझना कभी-कभी एक कृत्रिम परीक्षण में समझने की तुलना में आसान हो सकता है। दोहन। इस के उपर,
इसलिए, संक्षेप में, मुझे लगता है कि परीक्षण संचालित विकास सॉफ्टवेयर के लिए एक बहुत अच्छा विकल्प नहीं है, यह कि अकेले परीक्षण गुणवत्ता की गुणवत्ता सुनिश्चित करने के लिए पर्याप्त नहीं हैं (और इस तरह उन्हें लिखने में लगने वाला समय उस डेवलपर समय के वैकल्पिक उपयोगों की तुलना में होना चाहिए), यह खेल स्वचालित परीक्षण मामलों के लिए एक विशेष रूप से खराब मैच है, और यह खेल विकास के तरीकों के लिए एक विशेष रूप से खराब मैच हैं जो 'व्यावसायिक मूल्य' और 'स्वीकृति परीक्षण' पर जोर देते हैं।
(उम्मीद है कि यह एक बेहतर जवाब है, भले ही आप मेरी बातों से सहमत न हों।)