বেস ক্লাস পরীক্ষা করা এড়ানো ঠিক আছে কি?


15

আমার ন্যায্য পরিমাণে "মেটা প্রোগ্রামিং" এর সাথে বেস ক্লাস রয়েছে যা এটিকে জেনারিক হওয়া উচিত নমনীয়তা / বিমূর্ততা দিতে।

বেস ক্লাসে প্রচলিত পদ্ধতি ব্যবহার করে আমার প্রচুর সাবক্ল্যাস রয়েছে এবং প্রতিটি সাবক্লাসের সমস্ত ক্ষেত্রে কভার করার জন্য আমি ওরিয়েন্টেড ইউনিট পরীক্ষা করেছি।

বেস ক্লাস পরীক্ষা করা বাদ দেওয়া কি ঠিক হবে?


1
আমি যখন নিজেকে এই প্রশ্নটি জিজ্ঞাসা করতে শুরু করি তখন একটি জিনিস আমি কোড ভাঙার চেষ্টা করি। ইত্যাদি এটা অবৈধ ইনপুট নিক্ষেপ, ভুল কনফিগ মান নির্দিষ্ট
Zymus

উত্তর:


31

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

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

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

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


হ্যাঁ, আমি আরও স্পষ্টভাবে সংজ্ঞায়িত পদ্ধতির জন্য বেস ক্লাসে সরাসরি ইউনিট পরীক্ষার সাথে একমত। আমি যা করতে চাইনি তা হ'ল মেটা-প্রোগ্রামিংয়ের সমস্ত পরীক্ষা করা যেহেতু সাবক্লাসের ইউনিট পরীক্ষাগুলি স্পষ্টভাবে সেই স্টাফটি পরীক্ষা করে।
নাথান

4
বেস / বিমূর্ত শ্রেণীর প্রসারিত এমন শ্রেণীর নকশা করা যা কেবল পরীক্ষার ডিরেক্টরিতে বিদ্যমান এবং কেবল ভিত্ত শ্রেণীর প্রকাশ / তাত্ক্ষণিক পরিবেশন করে কেবল বেস শ্রেণীর যথাযথ কভারেজ পাওয়ার জন্য একদম বৈধ এবং যুক্তিসঙ্গত পন্থা এবং নিশ্চিতকরণ যে অন্তর্নিহিত পদ্ধতিগুলি ব্যবহার করা হয় এমন আরও জটিল ক্লাসগুলির বিচ্ছিন্নতায় সঠিকভাবে কাজ করা।

@ মিশেলটি: হ্যাঁ আমার উত্তরটি কী এমন শোনাচ্ছে যা সম্পর্কে আমার আলাদা মতামত আছে?
ডক ব্রাউন

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

2

প্রোগ্রামারদের সুবিধার জন্য অটোমেটেড টেস্ট তৈরি করা হয়েছিল, প্রোগ্রামারদের পরীক্ষা দেওয়ার জন্য তৈরি করা হয়নি।

আমাদের আরও উত্পাদনশীল করে তুলতে এবং গ্রাহকদের অভিযোগের "সমস্যা" সংখ্যা কমাতে আমাদের পরীক্ষা রয়েছে।

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

পরীক্ষার ফলে আপনি আরও উত্পাদনশীল হয়ে উঠবেন কিনা তা জিজ্ঞাসা করে আমাদের ছেড়ে দেওয়া হয় । এটি কয়েক উপায়ে ঘটতে পারে।

  • কোড সম্পর্কে আপনাকে আরও পরিষ্কার মনে করতে দেওয়া - কোডটি যেমন লিখিত হয় তবে এই ক্ষেত্রে সম্ভাবনা কম।
  • বিচ্ছিন্নভাবে বেস শ্রেণিতে আপনাকে কিছু কোড পরীক্ষা করতে দেওয়া, কোডটি ইতিমধ্যে কাজ করছে বলে এই ক্ষেত্রে আবার সম্ভাবনা কম হওয়ার কারণে এটি দ্রুত ডিবাগ করুন।
  • সাবক্লাসে যুক্তির বিশদ না বুঝে আপনাকে বেস ক্লাসে কোড পরিবর্তন করতে দেওয়া - আপনি যদি কোডটি রিফ্যাক্ট করছেন তবে ???

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.