खेलों के लिए परीक्षण रणनीति


13

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

खेल उस बिंदु पर पहुंच गया है जहां यह जटिल होने लगा है। प्रत्येक गेम के लिए दो अलग-अलग मोड हैं और गेम मोड के आधार पर अलग-अलग व्यवहार करता है। विभिन्न झंडे भी हैं जो खेल खेलने को प्रभावित करते हैं।

मैं 10+ वर्षों से एक एप्लिकेशन डेवलपर हूं और यह मुझे परेशान करता है। उद्यम की दुनिया में, एक एल्गोरिथ्म हमेशा उसी तरह से कार्य करता है। मैं एक एल्गोरिथ्म के लिए एक इकाई परीक्षण लिखूंगा, मैं मूल्य 42 की उम्मीद करूंगा और अगर मुझे वह मूल्य नहीं मिला तो यह त्रुटि होगी।

जब खेलों की बात आती है, तो मैं हार गया हूं। मैं उनका परीक्षण कैसे करूं? मेरे पास मेरे पास परीक्षक उपलब्ध हैं। मैं समय लेखन इकाई परीक्षण खर्च कर सकता हूं।

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

यूनिट परीक्षण सीमित लगते हैं। चूंकि अधिकांश तर्क जावास्क्रिप्ट है (और मुझे स्पैगेटी कोड विरासत में मिला है), मैं कुछ सुविधाओं को काम करने के लिए सुनिश्चित करने के लिए ककड़ी या सेलेनियम जैसे फ्रंट-एंड सूट का उपयोग कर सकता हूं।

क्या यह सबसे अच्छी रणनीति है? गेम कंपनियां गेम का परीक्षण कैसे करती हैं?

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


पुस्तक / ऑफ-साइट संसाधन सिफारिशें स्पष्ट रूप से सहायता केंद्र के प्रति विषय हैंMeta.programmers.stackexchange.com/questions/6483/…
gnat


यह कोई नकल नहीं है। यह सवाल पूछ रहा है कि यूनिट टेस्ट कैसे लिखें। मैं रणनीति के लिए पूछ रहा हूं।
jeffkolez 16


2
FWIW, जब यह GUI परीक्षण करने की बात आती है तो यह इकाई परीक्षण नहीं है - यह एकीकरण परीक्षण या स्वीकृति परीक्षण की तरह अधिक है
स्लीपबेटमैन

जवाबों:


16

उद्यम की दुनिया में, एक एल्गोरिथ्म हमेशा उसी तरह से कार्य करता है। मैं एक एल्गोरिथ्म के लिए एक इकाई परीक्षण लिखूंगा, मैं मूल्य 42 की उम्मीद करूंगा और अगर मुझे वह मूल्य नहीं मिला तो यह त्रुटि होगी।

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

बहुत से मोड और झंडे के साथ, गेम को परीक्षण करना बहुत मुश्किल हो सकता है, क्योंकि संभावित वेरिएंट की संख्या। इस कठिनाई को जल्दी खत्म करने के जोखिम को कम करने के लिए, आपको यह करना चाहिए:

  • मॉक / स्टब गंभीर रूप से । परीक्षण किए गए भागों को छोटा रखें, और उन सभी चीजों का मजाक उड़ाएं जिन पर वे भरोसा करते हैं।

    यदि वे समय पर भरोसा करते हैं, तो वास्तविक समय के स्वतंत्र रूप से हमेशा एक विशिष्ट परिणाम या विशिष्ट परिणामों का एक सेट देने के लिए समय वस्तु का मजाक उड़ाएं।

    यदि वे भरोसा करते हैं random(), तो हर बार एक निरंतर प्रदान करने के लिए इसका मजाक उड़ाएं।

  • परावर्तक । यदि परीक्षण अत्यधिक जटिल होने लगते हैं या यदि आप देखते हैं कि परीक्षण किए जाने के लिए एक वर्ग को निर्भरता इंजेक्शन लागू करने के बाद बारह तर्कों की आवश्यकता होती है, जबकि यह केवल दो पहले आवश्यक था, तो आपको कोड को फिर से भरना होगा।

  • आवेदन के वास्तविक व्यावसायिक नियमों पर सवाल उठाएं। मैंने उन परियोजनाओं की संख्या को गिनना बंद कर दिया, जिनकी कार्यात्मक आवश्यकताओं के लिए भिन्न भिन्नताओं की संख्या के कारण परीक्षण करना लगभग असंभव था, जिनकी न तो किसी को आवश्यकता थी और न ही समझ थी- हितधारकों की भी नहीं।

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

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


आपकी टिप्पणियों के लिए आभार। लगता है मुझे बहुत काम करना है!
जेफकोलेज़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.