আপনি কীভাবে ইউনিট-টেস্ট করবেন বা ওপেনগিএল এর গ্রাফিক্স কোডে সর্বাধিক কার্যকর স্বয়ংক্রিয় পরীক্ষণ করবেন?


17

আমি সি ++ এ ওপেনজিএল শীর্ষে একটি গেম এবং তার সাথে থাকা গ্রাফিক্স ইঞ্জিনটি লিখছি। আমি ভাল কোডিং প্রক্রিয়া এবং স্বয়ংক্রিয় পরীক্ষার একটি অনুরাগী। গ্রাফিক্স কোড + টেস্টিংটি একেবারে অনিবার্য বলে মনে হয়, যেহেতু আউটপুট প্রায়শই কেবল ভিজ্যুয়াল হয় বা খুব ভারী ভিজ্যুয়াল-ভিত্তিক হয়।

উদাহরণস্বরূপ, কাঁচা চিত্র-স্ট্রিমটি বিশ্লেষণ করুন যা স্ক্রিনে বাই-বাই-রেন্ডার করা হয়েছে - এর সাথে আপনার তুলনা করার জন্য টেস্ট-ডেটা প্রয়োজন, যা তৈরি / অর্জন করা শক্ত এবং প্রায়শই রেন্ডার করা চিত্রগুলি একটির মতো নয় বাইট স্তর যখন বিভিন্ন সময়ে চলমান থাকে - অ্যালগরিদমে ছোট পরিবর্তনগুলি এই পদ্ধতির পুরোপুরি ধ্বংস করে দেবে।

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

আপনি কি মনে করেন? আমি আরও ভাল উপায় আছে আশা করি?


2
এটি একটি ভাল প্রশ্ন, আমি অবাক হয়েছি আপনি যদি গেমদেব.স্ট্যাকেক্সেঞ্জোয়েন্ট.কম এ আরও ভাল উত্তর পেতে চান তবে যেহেতু এর আগে এর সাথে আরও অনেক লোক থাকতে পারে যারা এখানে এর সাথে ডিল করেছেন।
হতাশ

3
যেহেতু আপনি ওপেনজিএল ব্যবহার করেন, খ্রিওনস গোষ্ঠী কীভাবে এই API এর জন্য কনফারেন্স টেস্টিং করে তা অধ্যয়ন করার বিষয়টি বিবেচনা করুন । আমার প্রাক্তন প্রকল্পের যারা মোকাবেলা সহকর্মীদের আমাকে বলেছিল পরীক্ষা Khronos গ্রাফিক্স ঘনিষ্ঠ হিসেবে এটি পায় পূর্ণতা বিধান করবেন যে
মশা

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

উত্তর:


8

ওপেনসিভি ইমেজ প্রসেসিং লাইব্রেরিটি চিত্রটি সংরক্ষণ করে এবং এটি একটি রেফারেন্স চিত্রের সাথে তুলনা করে করে - এতে আনুমানিক চিত্রের মিলগুলি হ্যান্ডেল করার জন্য সি ++ টেস্ট ফাংশন এবং ম্যাক্রোগুলির একটি গুচ্ছ রয়েছে etc.


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

@ ম্যাক্স সাধারণত টেস্ট ফাংশনের একটি 'সোনার' সংস্করণ থাকে যা রেফারেন্স ফ্রেম তৈরি করে এবং পরীক্ষাটি তৈরি করার সময় একবার চালানো হয়। বিতরণে কয়েকটি "পরীক্ষার চিত্র তুলনা" ম্যাক্রো রয়েছে। আমি মনে করি না যে কোনও ছবিতে ওপেনজিএল বাফারগুলি পড়ার জন্য সুনির্দিষ্ট কিছু আছে তবে এটি যথেষ্ট সহজ
মার্টিন বেকেট

4

আপনার পরীক্ষার কাঠামোটি তার পরীক্ষার চিত্রটিকে বাফার হিসাবে রেন্ডার করতে পারে, রেন্ডার করা চিত্রটি পুনরুদ্ধার করতে এবং এটি একটি "সোনালি" রেফারেন্স চিত্রের সাথে তুলনা করতে পারে যা পূর্ববর্তী উদ্দেশ্যে তৈরি করা হয়েছিল।

এটি এমন পরীক্ষাগুলির ফলাফলের ক্ষেত্রে ঠিক একই রকম থাকবে বলে আশা করা যায় না for যাইহোক, আপনি পরীক্ষা এবং রেফারেন্স চিত্রগুলির স্কোয়ার পার্থক্যটি গণনা করতে পারেন এবং এটি একটি প্রান্তিকের তুলনায় তুলনা করতে পারেন।

আপনি লগিং এবং পারফরম্যান্স ডেটা যাচাইয়ের জন্যও সরবরাহ করতে পারেন, যেহেতু পারফরম্যান্সে একটি বড় রিগ্রেশন হ'ল অন্য সম্ভাব্য ব্যর্থতা মোড।


4

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


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