Code coverage বা কোড কভারেজ হল একটি গুরুত্বপূর্ণ ধারণা যা নির্দেশ করে আপনার টেস্ট কী পরিমাণ কোডের অংশ পরীক্ষা করছে। এটি বিভিন্ন ধরনের কভারেজ পরিমাপের মাধ্যমে কোডের বিভিন্ন ভাগের টেস্টিং নিশ্চিত করতে সাহায্য করে। Coverage Thresholds এবং Missing Test Cases চিহ্নিত করার মাধ্যমে আপনি কোডের টেস্টিংয়ের শূন্যস্থান পূর্ণ করতে পারেন এবং নিশ্চিত করতে পারেন যে সমস্ত গুরুত্বপূর্ণ কোডের অংশ যথাযথভাবে পরীক্ষা করা হয়েছে।
Coverage Thresholds (কভারেজ থ্রেশহোল্ডস)
Coverage Thresholds হল একটি সীমানা বা সীমা যা নির্ধারণ করে একটি কোডের কতটা অংশ টেস্টে অন্তর্ভুক্ত থাকতে হবে। এই সীমার পরিমাণ সাধারণত একটি শতাংশ আকারে নির্ধারিত হয়। উদাহরণস্বরূপ, আপনি চাইতে পারেন যে আপনার কোডের অন্তত 80% অংশ টেস্ট করা হোক, এবং আপনি যদি এই সীমা পূর্ণ না করেন তবে এটি একটি সতর্কতা সৃষ্টি করবে।
Types of Coverage:
- Line Coverage: কোডের মোট লাইনগুলির মধ্যে কতগুলি লাইন টেস্ট করা হয়েছে।
- Branch Coverage: কোডের শাখাগুলির মধ্যে কতগুলি শাখা পরীক্ষা করা হয়েছে।
- Method Coverage: কতটি মেথড টেস্ট করা হয়েছে।
- Class Coverage: কতটি ক্লাস টেস্ট করা হয়েছে।
কভারেজ থ্রেশহোল্ড কনফিগারেশন
কভারেজ থ্রেশহোল্ড স্থাপন করতে আপনি সাধারণত টেস্টিং টুলের কনফিগারেশন ফাইল ব্যবহার করবেন, যেমন RSpec, SimpleCov ইত্যাদি।
উদাহরণ: RSpec এবং SimpleCov কভারেজ থ্রেশহোল্ড সেট করা
# spec/spec_helper.rb
require 'simplecov'
SimpleCov.start do
add_filter "/spec/"
minimum_coverage 90 # থ্রেশহোল্ড 90% কভারেজ
endএখানে:
minimum_coverage 90: এই সেটিংটি 90% কভারেজ নিশ্চিত করবে। আপনি এই মানটি যেকোনো শতাংশে পরিবর্তন করতে পারেন।
কভারেজ রিপোর্ট:
কভারেজ থ্রেশহোল্ড সঠিকভাবে কনফিগার করার পর, RSpec বা অন্য কোন টেস্টিং টুল রান করার সময় আপনি কভারেজ রিপোর্ট পাবেন যা দেখাবে আপনার টেস্টে কতটা কোড কভার হয়েছে এবং কতটা অংশ বাদ পড়ে আছে।
$ rspecআপনি কভারেজ রিপোর্ট দেখতে পারবেন যা কোডের কোন অংশ টেস্ট হয়েছে এবং কোন অংশ বাদ পড়েছে, এবং এটি যদি থ্রেশহোল্ডের নিচে থাকে তবে এটি একটি সতর্কতা দিবে।
Missing Test Cases চিহ্নিত করা
কভারেজ থ্রেশহোল্ডের লক্ষ্য হলো চিহ্নিত করা কোথায় টেস্টিং不足 বা শূন্যস্থান রয়েছে। Missing Test Cases বা খোঁজ না পাওয়া টেস্ট কেস গুলি সেই সমস্ত কোড বা ফিচার যা যথাযথভাবে টেস্ট করা হয়নি বা ভুলভাবে বাদ পড়েছে, সেগুলি চিহ্নিত করা অত্যন্ত গুরুত্বপূর্ণ। এর মাধ্যমে আপনি আপনার কোডের আস্থযোগ্যতা বাড়াতে পারবেন এবং বাগ বা ত্রুটি প্রতিরোধ করতে পারবেন।
Missing Test Cases চিহ্নিত করার জন্য:
- কভারেজ রিপোর্ট পর্যালোচনা করুন: কভারেজ রিপোর্ট টেস্টিংয়ের যে অংশগুলো বাদ পড়েছে বা পরীক্ষা করা হয়নি তা চিহ্নিত করে।
- ডেড কোড বা আনহ্যান্ডেলড কন্ডিশন চিহ্নিত করুন: কোডের কোনো অংশ বা শাখা যদি কোনো টেস্টে না থাকে তবে সেটি missing test case হতে পারে।
- বিশেষ শর্ত বা edge cases পরীক্ষা করুন: যেমন খালি ইনপুট, সীমান্ত মান, এবং অস্বাভাবিক ডেটা, এগুলি খুঁজে বের করুন যা এখনও টেস্ট করা হয়নি।
- Branch Coverage এবং Method Coverage নিশ্চিত করুন: কোডের সমস্ত শাখা এবং মেথড পরীক্ষা করা হচ্ছে কিনা নিশ্চিত করতে হবে। বিশেষ করে if-else শাখা, switch-case ব্লক বা কোনো লুপ শাখা।
উদাহরণ: কভারেজ রিপোর্ট থেকে Missing Test Cases চিহ্নিত করা
ধরা যাক, আপনার একটি Calculator ক্লাস আছে, যেখানে আপনি দুটি পদ্ধতি যোগ এবং বিয়োগের জন্য তৈরি করেছেন:
class Calculator
def add(a, b)
a + b
end
def subtract(a, b)
a - b
end
def multiply(a, b)
a * b
end
endএখন, যদি আপনি শুধু add এবং subtract মেথড টেস্ট করেন, তবে multiply মেথডটি বাদ পড়ে যাবে, এবং এটি একটি missing test case হিসাবে চিহ্নিত হবে।
কভারেজ রিপোর্ট:
$ rspec
Coverage report generated for RSpec to /path/to/coverage/index.htmlকভারেজ রিপোর্টে দেখানো হবে কোন মেথড বা শাখা টেস্ট করা হয়নি এবং কোনটি বাদ পড়েছে। আপনাকে multiply মেথডটি টেস্টে অন্তর্ভুক্ত করতে হবে।
টেস্ট কেস যোগ করা:
describe Calculator do
it "correctly adds two numbers" do
expect(subject.add(2, 3)).to eq(5)
end
it "correctly subtracts two numbers" do
expect(subject.subtract(5, 3)).to eq(2)
end
it "correctly multiplies two numbers" do
expect(subject.multiply(2, 3)).to eq(6)
end
endএখন, multiply মেথডের জন্য একটি টেস্ট কেস যুক্ত করার পর, কভারেজ রিপোর্টে এটি সফলভাবে টেস্ট হয়ে যাবে এবং missing test case আর থাকবে না।
সারাংশ
- Coverage Thresholds ব্যবহার করে আপনি একটি নির্দিষ্ট কভারেজ সীমা নির্ধারণ করতে পারেন (যেমন 80% বা 90%), যা কোডের কতটা অংশ টেস্ট করা উচিত তা চিহ্নিত করে।
- Missing Test Cases চিহ্নিত করার জন্য কভারেজ রিপোর্ট পর্যালোচনা করা, কোডের অটোমেটেড টেস্ট কভারেজ নিশ্চিত করা, এবং বিশেষ edge cases পরীক্ষা করা অত্যন্ত গুরুত্বপূর্ণ।
- SimpleCov এবং RSpec এর মাধ্যমে আপনি সহজেই কভারেজ থ্রেশহোল্ড নির্ধারণ করতে পারেন এবং আপনার টেস্ট কেসের শূন্যস্থান পূর্ণ করতে পারেন।
এভাবে আপনি নিশ্চিত করতে পারেন যে আপনার কোডের প্রতিটি অংশ সঠিকভাবে টেস্ট করা হয়েছে এবং কোন অংশ বাদ পড়েনি।
Read more