লাইন এবং শাখার কভারেজের মধ্যে পার্থক্য


94

আমি আমার এক প্রকল্পের জন্য কোবার্টুরা মাভেন প্লাগইন ব্যবহার করি। তবে উত্পন্ন প্রতিবেদন সম্পর্কে আমার একটি প্রশ্ন রয়েছে:

লাইন এবং শাখা কভারেজের মধ্যে পার্থক্য কী?

উত্তর:


170

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

আপনি যত্ন কেন? উদাহরণ বিবেচনা করুন:

public int getNameLength(boolean isCoolUser) {
    User user = null;
    if (isCoolUser) {
        user = new John(); 
    }
    return user.getName().length(); 
}

আপনি যদি এই পদ্ধতিটিকে isCoolUserসেট করে কল করেন তবে আপনি true100% বিবৃতি কভারেজ পাবেন। ভাল লাগছে? হ্যাঁ, আপনি যদি কল করেন তবে নাল পয়েন্টার হতে চলেছে false। তবে, প্রথম ক্ষেত্রে আপনার 50% শাখা কভারেজ রয়েছে, তাই আপনি দেখতে পাচ্ছেন যে আপনার পরীক্ষায় (এবং প্রায়শই আপনার কোডটিতে) কিছু অনুপস্থিত রয়েছে।


8
দুর্দান্ত উত্তর! এটি দেখায় যখন লাইন কভারেজটি ভাল কোড থাকার মিথ্যা অনুভূতি দেয়!
MAGx2

লাইন কভারেজ বা শাখা কভারেজের কারণে আপনি যে সম্ভাব্য বাগগুলি পেতে পারেন তা কী কী?
এমনা আইয়াদি

61

সরলীকৃত উদাহরণ হিসাবে এই কোডটি নিন:

if(cond) {
    line1();
    line2();
    line3();
    line4();
} else {
    line5();
}

যদি আপনার পরীক্ষাটি শুধুমাত্র অনুশীলন করে cond সত্য হওয়ার এবং elseআপনার যে শাখাটি চালায় না :

  • 5 টির মধ্যে 4 টি লাইনের আচ্ছাদন
  • 2 টির মধ্যে 1 টি কভার করা হয়েছে

কোবার্টুরার রিপোর্টও ক্লিক করা হলে নিজেই কিছু সুন্দর পপ-আপ সহায়তা উপস্থাপন করে:

লাইন কভারেজ - এই পরীক্ষার দ্বারা চালিত রেখার শতাংশ শতাংশ।

শাখা কভারেজ - এই পরীক্ষার দ্বারা চালিত শাখার শতকরা।


আমি এই উত্তরটি লেখার আশা করছিলাম, তবে আপনি আমাকে (বহু বছর ধরে) পরাস্ত করলেন। পরিষ্কার উত্তর। ধন্যবাদ
সৌন্দরারাজন

3
if(cond){
    //branch 1
}else{  
    //branch 2
}

লাইনকভারেজ এবং ব্রাঞ্চকভারেজ উভয়ের জন্য 100% কভারেজ পাওয়ার জন্য আপনাকে সমস্ত লাইনটি শাখা 1 এবং শাখা 2 বলে সম্বোধন করতে হবে।

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

আশাকরি এটা সাহায্য করবে.

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