ইউনিট এবং ইন্টিগ্রেশন পরীক্ষার জন্য পৃথক কোড কভারেজ রিপোর্ট, বা উভয়ের জন্য একটি প্রতিবেদন?


10

ইউনিট এবং ইন্টিগ্রেশন পরীক্ষার জন্য আলাদা কোড কভারেজ রিপোর্ট, বা উভয়ের জন্য একটি কোড কভারেজ রিপোর্ট থাকা উচিত?

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

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


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

আমরা ঠিক এই কারণে পৃথক গ্রন্থাগারে ইউনিট পরীক্ষা এবং সংহতকরণ পরীক্ষা রাখি।
রবি ডি

এটি গ্রাহকের প্রয়োজনীয়তার উপর নির্ভর করে।
mouviciel

উত্তর:


12

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

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


পৃথক কভারেজ বিশ্লেষণও কার্যকর হতে পারে তবে আপনি সম্মিলিত বিশ্লেষণটি সম্পন্ন করার পরে এবং সর্বোপরি সম্মিলিত কভারেজ বিশ্লেষণের ফলাফলের সাথে জড়িত হওয়ার পরে এটি করা ভাল ।

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

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

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

"এখানে একটি ফাঁক রয়েছে, তবে এটি আবরণ করার জন্য একটি ইউনিট (সংহতকরণ) পরীক্ষা তৈরি করা সত্যই জটিলতর হবে, আমাদের বিকল্পগুলি কী? আসুন সম্মিলিত কভারেজটি চেক করুন ... ওহ এটি ইতিমধ্যে অন্য কোথাও আচ্ছাদিত রয়েছে, এটি আমাদের স্যুইট আইনে এটি আচ্ছাদন করে আছে। ' সমালোচনামূলকভাবে গুরুত্বপূর্ণ। "



5

আপনি আপনার পরীক্ষার সরঞ্জামটির উল্লেখ করবেন না। অনেকের "সংহত" ফাংশন রয়েছে যা আপনাকে একাধিক রান বা স্যুটগুলির ফলাফলকে একত্রিত করতে দেয়। আপনি যদি একটি সামগ্রিক কভারেজ মেট্রিক চান, আপনার কভারেজ সরঞ্জামে সম্মিলন বৈশিষ্ট্যটি অন্বেষণ করুন।


এখন, আমরা ঘরে হাতির কথা বলতে পারি?

এখানে কোন চামচ নেই. এবং কোনও "মোট কভারেজ শতাংশ" নেই। কমপক্ষে, কোন সহজ।

কভারেজ শতাংশ হ'ল তাত্ক্ষণিকভাবে উপলব্ধিযোগ্য মেট্রিক যা পরীক্ষার স্যুটগুলির ব্যাপ্তি, গভীরতা এবং পরিসীমা বুঝতে সহায়তা করে। তবে যে কোনও সাধারণ বেঞ্চমার্কের মতো , "সম্পূর্ণ পরীক্ষার" এক ধরণের যাদুকরী তাবিজ হিসাবে এই মানটির উপর লক্ষ্য নির্ধারণ করা খুব সহজ ।

ধরা যাক আপনি "100% পরীক্ষার কভারেজ" এর গৌরব অর্জন করেছেন। হ্যাঁ! তবে তার মানে কী? 100% কোড লাইন পরীক্ষা করা হয়, তাই না? তাহলে এই লাইনের কী হবে?

launch_missile = launch_authorized and launch_cmd_given else previous_launch_status

"আচ্ছাদন" যে লাইন মানে কিছু - কিন্তু না একটি সম্পূর্ণ অনেক, কারণ সেখানে অবস্থার যা হয় বিভিন্ন আছে Trueবা Falseকিছু সম্ভাবনা সঙ্গে, কিন্তু এটার সম্ভাবনা কম যে আপনি ঐ অবস্থার সমাহারের সব পরীক্ষিত হয়েছে। এমনকি যদি সেই লাইনটি কয়েকবার আচ্ছাদিত হয় তবে শর্তগুলির মধ্যে একটি অপেক্ষাকৃত অস্বাভাবিক হলেও বাস্তবে যে বাস্তব ফলাফল হতে পারে তার সবগুলিই পরীক্ষার কাছে আপনি পৌঁছাননি। আরও পরিষ্কার করার জন্য আরও কৃত্রিম উদাহরণ:

engage_laser = (laser_armed and safety_disengaged) or random.random() < 0.0000003

সত্যিই সম্পূর্ণরূপে এটির পরীক্ষা করার জন্য আপনার কতবার এই লাইনটি আবরণ করতে হবে? প্রোগ্রামের অন্যান্য ভেরিয়েবলগুলির সাথে (তাদের নিজস্ব, সম্ভবত একইভাবে বিরল) সম্ভাব্যতার সংমিশ্রণে এটি পরীক্ষা করার জন্য আপনি কতবার এটি কভার করবেন?

আমি বলছি না যে কভারেজ মেট্রিকগুলি অকেজো। তারা আসলে দুর্দান্ত । তারা মূল বিষয়গুলির একটিতে মনোনিবেশ করে: আমার সফ্টওয়্যার সিস্টেমটি কতটা ব্যাপকভাবে পরীক্ষা করা হয়? তারা "আমাদের কিছু পরীক্ষা আছে" থেকে "আমরা পুরোপুরি পরীক্ষা করে দেখেছি" তে যেতে সহায়তা করি।

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


যে ধরণের কভারেজ মেট্রিক ব্যবহার করা হচ্ছে তা প্রশ্নের সম্পূর্ণরূপে orthogonal বলে মনে হয়, যে কোনও মেট্রিক ইউনিট পরীক্ষা বা ইন্টিগ্রেশন পরীক্ষা বা উভয়
জে কে

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

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