जब हम खेल के विकास के साथ काम कर रहे हैं तो क्या सॉफ्टवेयर परीक्षण अलग है?


11

मैं इस पत्र को सामान्य और खेल विकास में सॉफ्टवेयर विकास के बीच के अंतर के बारे में पढ़ रहा था और लेखकों ने सॉफ्टवेयर परीक्षण के बारे में कुछ अच्छे बिंदु दिए, उदाहरण के लिए,

... गेम डेवलपर्स इन परीक्षणों की वजह से स्वचालित परीक्षण का उपयोग करने में संकोच कर रहे हैं, खेल डिजाइनरों की रचनात्मक इच्छाओं को स्थानांतरित करने के चेहरे में तेजी से अप्रचलन।

इसलिए, इस रीडिंग ने मुझे यह सोचने पर मजबूर कर दिया कि, सॉफ्टवेयर टेस्टिंग में हमें किन अन्य पहलुओं पर अलग-अलग या विशेष रूप से विचार करना चाहिए, जब हम किसी गेम का परीक्षण / परीक्षण कर रहे हैं? क्या किसी के पास इसका अनुभव है या किसी ने इसके बारे में कुछ और सुना है?


पेपर से जुड़ने का मन? मैं इसे पढ़ने के लिए उत्सुक हूँ।
रबरडैक

1
यहाँ कागज है: microsoft.com/en-us/research/wp-content/uploads/2016/02/… । ओह, और अगर आप बुरा न मानें तो इस बारे में अपनी राय दें। धन्यवाद। :-)
रोनी एडसन

9
मुझे डर है कि तेजी से अप्रचलन (परीक्षणों का) शक्तियों के स्थानांतरण की इच्छा के साथ-साथ गैर-गेम विकास में भी होता है। जो बताता है कि शायद खेल विकास अन्य विकास से अलग नहीं है?
एरिक Eidt

मैं कहूंगा कि व्यावसायिक सॉफ़्टवेयर और गेम के बीच सबसे बड़ा अंतर "आवश्यकताओं की शिफ्टिंग" नहीं है, जो कि लगभग हर जगह आम है, लेकिन प्रदर्शन और तीव्र यूआई काम पर जोर देता है जो गेम बनाता है। व्यावसायिक सॉफ़्टवेयर में, डेटा और लॉजिक मॉडल को प्रस्तुति से अलग किया जाता है, जिससे उन्हें यूनिट परीक्षण के लिए आसान उम्मीदवार बनाया जाता है। खेलों में हमेशा यह विलासिता नहीं होती है। यह कहने की
ज़रूरत

1
अलग एक बहुत व्यापक चर्च है। और यह इस पर निर्भर करता है कि आप इसकी तुलना किससे कर रहे हैं।
रॉबी डी

जवाबों:


10

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

जहां तक ​​"उत्पाद के रूप में एक पूरे" का संबंध है, एक गेम एक सिमुलेशन है। यह एक साधारण व्यवसाय कार्यक्रम की तुलना में अधिक सामान्य जटिलता हो सकती है। अनगिनत, सुनियोजित व्यवहारों के साथ एक उद्यम संसाधन योजनाकार अंतहीन, अद्वितीय, प्रक्रियात्मक उत्पन्न दुनिया के बारे में सोचें। सीधे शब्दों में, खेल के संदर्भ में कुछ करने के लिए संभव अद्वितीय तरीकों की संख्या, गणितीय रूप से, बहुत बड़ी हो सकती है। वास्तव में इसे खेलों के लिए विक्रय बिंदु माना जाता है।

इस तथ्य को जोड़ें कि अंतिम आउटपुट विशुद्ध रूप से ऑडियो विजुअल है और ऐसे आउटपुट की पूर्ण शुद्धता का कोई निर्धारक मानक नहीं है। GPU चिप्स को वास्तव में सटीक गणना करने की आवश्यकता नहीं है, बस बहुत सारी गणनाएं, भले ही कुछ सटीक न हों।

और अंत में, मुख्य लक्ष्य मनोरंजन है । गेमर साथ ठीक हैं खामियों अगर यह 60 + एफपीएस चलाता है, भयानक लग रहा है, और सामग्री का मनोरंजन की अंतहीन घंटे होते हैं।

यह खेल में लागू होने पर पारंपरिक स्वचालित ब्लैक-बॉक्स परीक्षण विचारों को "इतना मूर्त और इसके लायक नहीं" क्षेत्र में रखता है।

हालांकि, एनएन को गेम खेलने के लिए प्रशिक्षित करने के हाल के प्रयास किए गए हैं , जो प्रभावी रूप से खोजपूर्ण, स्व-सीखने वाले बंदर परीक्षण का एक रूप है।


2
"औसत व्यवसाय कार्यक्रम" क्या है?
whatsisname

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

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

2

यह कई साल हो गए हैं जब मैंने gamedev किया था, लेकिन अच्छे उत्तर के शीर्ष पर, कुछ चीजें हैं जो मैं जोड़ना चाहता हूं और विस्तार से।

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

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

फिर भी एक और बात यह है कि एक गेम के लिए कोडबेस को आमतौर पर बनाए नहीं रखा जाता है और संशोधित किया जाता है और वर्षों और वर्षों तक बढ़ाया जाता है। यह सुपर मारियो के डेवलपर्स की तरह नहीं है, जिन्होंने मूल रूप से 6502 विधानसभा में इसे विकसित किया था, खेल को भेजे जाने के बाद लंबे समय तक उस मूल कोड के समान कुछ भी बनाए रखना था। Doom 3 शायद Doom 1 से कोड (या नज़दीकी) की शून्य लाइनों का उपयोग करता है। यदि कोई निरंतर मताधिकार है, तो नए गेम "नवीनीकरण" की तुलना में "सीक्वल" अधिक पसंद करते हैं। अधिकांश गेम बस जहाज करते हैं और शायद कुछ पैच, डीएलसी जारी करते हैं, और फिर कोड किया जाता है। यह मेरे VFX उद्योग से एक बड़ा विपरीत है जहां मैंने Amiga दिनों में कोड डेटिंग को बनाए रखने पर काम किया है जिसे दशकों तक पोर्ट किया गया था और बनाए रखा गया था। खेल आम तौर पर डॉन '

गेम कोडबेस की इस अल्पकालिक प्रकृति के कारणों में से एक यह है कि वे हार्डवेयर से बंधे हैं। जब उनकी अत्याधुनिक प्रकृति और एफपीएस-महत्वपूर्ण आवश्यकताओं के साथ संयुक्त होते हैं, तो उन्हें अक्सर एक तरह से विकसित नहीं किया जा सकता है जो कि हार्डवेयर विवरणों को बंद करता है, यहां तक ​​कि करीब भी नहीं। वे अक्सर हार्डवेयर की लक्षित पीढ़ी के लिए बहुत विशेष रूप से लिखे जाते हैं, और आमतौर पर यह बहुत पहले नहीं होता है कि PS3 एक PS4 द्वारा बदल दिया जाए जो फिर अप्रचलित हो जाता है और एक PS5 द्वारा प्रतिस्थापित किया जाता है, और इसके बाद, और सभी बहुत तेजी से। हार्डवेयर क्षमताएं खेल के डिजाइन और विकास में ऐसी महत्वपूर्ण भूमिका निभाती हैं कि आमतौर पर PSX के लिए PSX के लिए लिखे गए समान कोड को बनाए रखने की कोशिश नहीं की जाती है, उदाहरण के लिए, अधिकांश गेम फ्रेंचाइजी जो पीढ़ियों तक चलती हैं, वे अभी भी अपने अगले-जीन इंजन लिखते हैं नए हार्डवेयर के लिए बड़े पैमाने पर ग्राउंड-अप से।

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

एक और छोटा जो हमेशा प्रासंगिक नहीं होता है वह यह है कि कोई भी गेम बिना किसी डेस्कटॉप पोर्ट के केवल एक बहुत ही संकीर्ण हार्डवेयर को लक्षित कर सकता है। उन मामलों में इन संदर्भों में अप्रत्याशित glitches का एक बड़ा स्रोत, जो उपयोगकर्ताओं को मौलिक रूप से अलग हार्डवेयर और ड्राइवरों के साथ सॉफ़्टवेयर चला रहा है, को समाप्त कर दिया जाता है।

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

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

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


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