यूनिट एक शतरंज बोर्ड प्रतिनिधित्व का परीक्षण


9

तो यह थोड़ा बाहर का सवाल है।

मैं अनिवार्य रूप से खरोंच से एक शतरंज पुस्तकालय लिख रहा हूं। आप जीयूआई और / या एक इंजन के लिए इसका उपयोग करने के इरादे से यहां बहुत सारे कोड पा सकते हैं । (खेल ग्रैंड चेस है, लेकिन इस सवाल के प्रयोजनों के लिए यह वास्तव में मायने नहीं रखता है।)

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

tl; dr मैं ऐसे पदों की सूची देख रहा हूँ जो यूनिट कोड के विरुद्ध मेरे परीक्षण का परीक्षण करते हैं।

आप मेरे वर्तमान परीक्षण यहां पा सकते हैं, मैं उन्हें हर कुछ दिनों में जोड़ता हूं। हालाँकि, मैं यह सुनिश्चित करना चाहता हूं कि कोड डिबग करने से पहले परीक्षण समाप्त हो जाएं। (उनमें से आधे वर्तमान में विफल हैं)।

संपादित करें: स्पष्ट करने के लिए: मैं इंजन ("सर्वश्रेष्ठ चाल") परीक्षणों की तलाश नहीं कर रहा हूं । मैं बोर्ड प्रतिनिधित्व की तलाश कर रहा हूं ("यह स्थिति चेकमेट है") परीक्षण। इंजन टेस्टिंग के लिए मेरे पास पहले से ही कुछ पहेलियां हैं।


आप एक प्रकार का कोडिंग कर रहे हैं। मानक शतरंज डेटासेट आपके लिए काम नहीं करेगा। इसलिए मुझे डर है कि तुम अपने दम पर हो।
स्मॉलचेयर

@StudentT मैं कुछ खोज रहा हूँ जिससे मैं शुरू कर सकता हूँ। एक नियमित डेटाबेस बस ठीक काम करेगा, क्योंकि आप जानते हैं, मैं इसे संपादित कर सकता हूं।
असाबी

1
वहाँ इस तरह के परीक्षण सेट हैं, क्या आप मानक शतरंज में गड़बड़ी, सामरिक अभ्यास जैसी किसी चीज के लिए खुश हैं?
स्मॉलचेयर

@StudentT मुझे Google के माध्यम से कुछ भी नहीं मिला, इस प्रकार मैं यहां क्यों पूछ रहा हूं। किसी भी प्रकार की सूचना उपयोगी होगी।
असाबी

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

जवाबों:


1

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

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

एक स्थिति का परीक्षण एक बहुत ही जटिल इकाई परीक्षण की तरह लगता है और पूरी तरह से करना बहुत कठिन होगा। इसके बजाय छोटे कार्यों के खिलाफ छोटे परीक्षण लिखें और फिर जान लें कि वे व्यक्तिगत रूप से काम करते हैं - एक स्थिति का मूल्यांकन करना सरल कार्यों पर ध्यान देने की बात है।

यदि आप एक अच्छे (मजबूर नहीं) कदम के लिए एक स्थिति का परीक्षण करना चाहते हैं, तो मुझे लगता है कि इकाई परीक्षण की कृत्रिम रूप से आपके शतरंज इंजन के दीर्घकालिक विकास और ताकत को सीमित करेगा ... एक इकाई परीक्षण का एक द्विआधारी परिणाम आपके इंजन को बनाने के लिए मजबूर करेगा। हर बार एक ही कदम।

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

अपने इंजन के लिए पदों के एक सेट के मूल्यांकन के सवाल के लिए, आप इस सवाल को "शतरंज" टैग के साथ https://stackoverflow.com/ पर डाल सकते हैं ।


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

इस सवाल का जवाब नहीं है।
स्मॉलचेयर

1
इसके अलावा, यूनिट परीक्षण के बारे में नोट्स गलत हैं।
स्मॉलचेयर

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

0

हालांकि यह एक पुराना प्रश्न है, मैंने सोचा कि इस ब्लॉग में प्रस्तुत अवधारणा उपयोगी हो सकती है: http://scionsoftware.com/blog/write-tests-by-playing-chess

यह विचार है कि आप GUI पर एक शतरंज का खेल खेलेंगे और एक फाइल को क्रमबद्ध करके शतरंज बोर्ड की स्थिति पर कब्जा करने के लिए एक तंत्र होगा।

आप उन फ़ाइलों को परीक्षण मामलों के अनुसार नाम दे सकते हैं और उन्हें जो भी परीक्षण विधि आप परिभाषित करते हैं, उसमें फीड कर सकते हैं: IsCheckmate; कानूनी ही; IsDraw

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


0

मुझे शतरंज इंजन (सामान्य रूप से) के लिए किसी भी इकाई-परीक्षण डेटाबेस का पता नहीं है, और हाँ, संपूर्ण इकाई परीक्षण लिखना लगभग असंभव है।

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

उम्मीद है कि यह थोड़ा मदद करेगा :)!

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