ইউনিট টেস্টিং একটি সি # / এক্সএনএ গেম প্রকল্প


13

প্রোগ্রামিং শুরু করার পর থেকে আমি গেমের বিকাশে ডাবলিং করে চলেছি তবে কখনই খুব সিরিয়াসলি নয়। আমি একটি ব্যবসায়িক অ্যাপ্লিকেশন বিকাশকারী হিসাবে কাজ করি তবে আমি আমার অতিরিক্ত সময় কিছু গেম নিয়ে কাজ করছি।

ব্যবসায়ের জগতে (মাইক্রোসফ্ট ওয়েব-ডেভ স্ট্যাকে) এএসপি.নেট এমভিসি সত্যই জনপ্রিয় হয়ে উঠছে, কারণ ইন্টারফেসটি যেভাবে কাজ করে তার ইউনিট-টেস্টিংয়ের স্বাচ্ছন্দ্যের কারণে।

আমি ভাবছি যে কোন ডিজাইনের নিদর্শনগুলি (এমভিসি, এমভিপি, এমভিভিএম, ইত্যাদি) কোনও গেম লিখতে কোনটি ব্যবহার করতে পারে তাতে গেমের সমস্ত যুক্তি সহজেই একক-পরীক্ষারযোগ্য হয়। এটি কি সম্ভব বা সম্ভব? আমি কি আমার সময় নষ্ট করছি, পূর্ণ বিল্ডগুলি করা এবং তারপরে ইউনিট-পরীক্ষার পরিবর্তে "ইন্টিগ্রেশন" ধরণের পরীক্ষা করা কি ভাল?

নমুনা কোড দুর্দান্ত হবে, তবে একটি লিখনআপও দরকারী।

(আমি ইউনিট-টেস্টিং ট্যাগ যুক্ত করার চেষ্টা করেছি, তবে প্রতিনিধিটির দরকার নেই ...)

উত্তর:


17

এখানে একটি ভাল নিবন্ধ যা আমি পেয়েছি যে এটি কেবল সহজেই পুনরায় ব্যবহারযোগ্য করে তুলতে পারে না, তবে ইউনিট-পরীক্ষার পক্ষে এটি আরও সহজতর করার জন্য কার্যকারিতা পৃথক করার জন্য একটি আর্কিটেকচারের বর্ণনা দেয়:

http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/

কিছু গেমস এমভিসি-জাতীয় প্যাটার্ন থেকে উপকৃত হবে। দাবা এবং কার্ড গেমের মতো বোর্ড গেমগুলি মাথায় আসে। তবে বেশিরভাগ ক্ষেত্রে এটি ব্যাপক ওভারকিল।

ব্যক্তিগতভাবে আমি দেখতে পাচ্ছি যে এটি কেবলমাত্র ইউনিট-পরীক্ষা জিনিসগুলির পক্ষে যথেষ্ট যা প্রকৃতির আলগোরিদিম। আপনি গেমপ্লে কোডটি লেখার সময় যে বিষয়গুলি "কেবলমাত্র কাজ" এর উপর নির্ভর করবে এবং যদি তা না দেয় তবে সমস্যাগুলিকে সন্ধান করা চূড়ান্তভাবে কঠিন হতে পারে। ছেদ পরীক্ষা বা নেটওয়ার্কিং কোডের মতো জিনিস।

(যে জিনিসগুলি আদর্শভাবে একটি তৃতীয় পক্ষের কাঠামোতে তৈরি করা হবে তাই আপনাকে সেগুলি লিখতে বা পরীক্ষা করতে হবে না !)

ইউনিট টেস্টিং গেম সম্পর্কিত জিনিসগুলির জন্য আমি যে কৌশলটি ব্যবহার করতে চাই তা হ'ল আমি "ভিজ্যুয়াল ইউনিট পরীক্ষা" call মৌলিক ধারণাটি বিট কোডের একটি সাধারণ লাইন-রেন্ডারিং (উদাহরণস্বরূপ একটি ছেদ ফাংশন হিসাবে বলুন), এবং ইনপুটগুলি সামলানোর জন্য কিছু বেসিক কী বা মাউস অ্যাসাইনমেন্ট being কেউ বলেনি ইউনিট পরীক্ষা স্বয়ংক্রিয় করতে হবে - তাদের কেবল আলাদা ইউনিটগুলিতে জিনিসগুলি ভেঙে তাদের পরীক্ষা করতে হবে।


ভাল উত্তর. আমি ঠিক নিবন্ধটি পোস্ট করতে চেয়েছিলেন। গেম অবজেক্ট উপাদান উপাদানগুলি যুক্তিগুলি পৃথক করার এবং এগুলি পৃথকভাবে ইউনিট-টেস্ট করতে সক্ষম হওয়ার দুর্দান্ত উপায়। কোনও ইউনিট পরীক্ষা যা করতে পারে তা নয়, তবে এলোমেলো ক্রম অনুসারে রিয়েলটাইমে গেম লজিকের একাধিক পাথের জটিল ইন্টারঅ্যাকশন। এটি আবহাওয়ার পূর্বাভাসকে পরীক্ষা করার চেষ্টা করার মতো হবে। :)
শিখুন কোকোস 2 ডি

হ্যাঁ আমি ছোট পরীক্ষকও তৈরি করি যা কার্যকারিতার নির্দিষ্ট বিটগুলিকে আলাদা করে দেয়। আমি নিশ্চিত করি যে আমি এপিআই ইত্যাদিতে যা কিছু পরিবর্তন করি আমি সর্বদা নিশ্চিত করি যে এটি এখনও কার্যকর রয়েছে। আপনার পরবর্তী প্রকল্পের কার্যকারিতা পুনরায় ব্যবহার করা অনেক সহজ।
আইইন

3
হ্যাঁ, ভাল উত্তর, এবং আমি লিঙ্কটি পছন্দ করি। এবং আমি সর্বশেষ লাইনের সমস্ত কিছুর সাথে একমত হয়েছি, "কেউ বলেনি ইউনিট পরীক্ষা স্বয়ংক্রিয় করতে হবে"। :) আছে যাও, হয়তো না - কিন্তু সবকিছু আমি করেছি পঠিত বোঝা (অথবা সরাসরি বলেছেন) যে ইউনিট পরীক্ষা করা উচিত স্বয়ংক্রিয় করা বিন্দু যেখানে আপনি শুধুমাত্র একটি একক বোতাম ধাক্কা আপনার পরীক্ষা সব চালানোর জন্য চাপ দিতে থাকেন। অন্যথায়, পরীক্ষা চালানোর ক্ষেত্রে যত বেশি কাজ জড়িত, আপনি প্রায়শই তাদের চালানোর সম্ভাবনা কম। মঞ্জুর, আপনি যদি ডিসপ্লে কোডের কথা বলছেন তবে এটি সম্ভব হলেও ইউনিট-টেস্ট করা আরও কঠিন হতে পারে।
সাইক্লপস

প্রায় চার বছর পরে, এবং আমি অনুভব করি যে "ভিজ্যুয়াল ইউনিট পরীক্ষা" কেন এত ভালভাবে কাজ করে সে সম্পর্কে আমি আরও ভাল বোঝার বিকাশ করেছি : ইউনিট পরীক্ষাগুলি একটি বিকাশের হাতিয়ার। সাধারণত স্বয়ংক্রিয় ইউনিট পরীক্ষা আপনি বলতে পারেন যে কিছু হয় ভাঙ্গা। তবে একটি ভিজ্যুয়াল ইউনিট পরীক্ষা আপনাকে খুব জটিল অ্যালগরিদমগুলি অন্বেষণ করতে এবং কিছু কেন ভাঙা হয় তা দ্রুত সনাক্ত করতে সহায়তা করে (বিশেষত লাইভ কোড সম্পাদনার সাথে মিলিত হয়ে)। প্রায়শই একটি ভিজ্যুয়াল পরীক্ষা এমন সমস্যাগুলি সনাক্ত করতে পারে যেগুলি আপনি অন্যথায় কোড দিয়ে পরীক্ষা করার প্রত্যাশা করতে চেয়েছিলেন বা এমন কোনও সমস্যা নেই যেখানে কোনও "সঠিক" উত্তর নেই (যেমন: টিউনিং)।
অ্যান্ড্রু রাসেল 12

এবং ইউনিট পরীক্ষাগুলি "প্রায়শই পর্যাপ্ত" (যেমন: সর্বদা, একটি স্বয়ংক্রিয় পদ্ধতিতে) চালানো দরকার এই ধারণাটি বোগাস। স্পষ্টতই পরিবর্তন হয় না এমন কোডগুলির পুনরায় পরীক্ষা করার দরকার নেই। এবং যখন কোডটি সংশোধন করা হচ্ছে, তখন উপযুক্ত উপলব্ধ পরীক্ষাগুলি (ভিজ্যুয়াল, কোড ভিত্তিক বা অন্যথায়) ব্যবহারের সময় পরিবর্তনগুলি করা বিকাশকারীকে এটি করা উচিত। স্পষ্টতই একটি নির্দিষ্ট ঝুঁকির প্রোফাইলের কোড রয়েছে যেখানে একটি স্বয়ংক্রিয় পরীক্ষাটি উপযুক্ত সময় বিনিয়োগ। তবে গেম-ডেভলপমেন্টে এই জাতীয় দৃশ্যগুলি বিরল।
অ্যান্ড্রু রাসেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.