SimpleCov হলো একটি রুবি জেম, যা আপনার কোডের টেস্ট কভারেজ পরিমাপ করার জন্য ব্যবহৃত হয়। এটি নিশ্চিত করে যে আপনার কোডের কোন অংশগুলি টেস্ট করা হয়েছে এবং কোন অংশগুলির জন্য টেস্ট প্রয়োজন। এটি টেস্টিংয়ের একটি গুরুত্বপূর্ণ অংশ, যেহেতু এটি সিস্টেমের প্রতিটি কোড লাইনের কতটুকু কভারেজ হচ্ছে তা সঠিকভাবে নির্ধারণ করতে সাহায্য করে।
SimpleCov কোডের কভারেজ রিপোর্ট তৈরি করে, যা আপনাকে কোডের কোন অংশে টেস্ট কভারেজ বেশি এবং কোন অংশে কম তা দেখায়। এটি সাধারণত RSpec বা Minitest টেস্ট ফ্রেমওয়ার্কের সাথে ব্যবহার করা হয়।
SimpleCov ইনস্টলেশন এবং কনফিগারেশন
১. SimpleCov জেম ইনস্টল করা
প্রথমে Gemfile এ SimpleCov যোগ করতে হবে:
# Gemfile
group :test do
gem 'simplecov', require: false, :git => 'https://github.com/simplecov-ruby/simplecov.git'
endএরপর, bundle install চালিয়ে জেমটি ইনস্টল করুন:
bundle install২. SimpleCov কনফিগারেশন
টেস্ট ফাইলের শুরুতে SimpleCov.start কল করতে হবে, যাতে টেস্ট শুরু হওয়ার আগে কভারেজ ট্র্যাক করা শুরু হয়। সাধারণত এটি spec_helper.rb বা rails_helper.rb ফাইলে অন্তর্ভুক্ত করা হয়।
উদাহরণ:
# spec/spec_helper.rb
require 'simplecov'
SimpleCov.start 'rails'
# অন্যান্য কনফিগারেশন...এখানে SimpleCov.start 'rails' দিয়ে Rails অ্যাপ্লিকেশনের জন্য কভারেজ পরিমাপ শুরু করা হয়েছে। আপনি যদি অন্য কোনো কনফিগারেশন ব্যবহার করতে চান, তবে SimpleCov.start এর ভিতরে অন্যান্য সেটিংস পাস করতে পারেন।
৩. কভারেজ রিপোর্ট
আপনি যদি SimpleCov.start ব্যবহার করেন, তবে এটি আপনাকে একটি কভারেজ রিপোর্ট তৈরি করবে। রিপোর্টটি সাধারণত coverage/ ফোল্ডারে জমা হয়। আপনি এই ফোল্ডারে একটি index.html ফাইল দেখতে পাবেন, যা আপনি ব্রাউজারে ওপেন করতে পারবেন এবং আপনার কোডের কভারেজ বিশ্লেষণ করতে পারবেন।
SimpleCov এর কভারেজ রিপোর্ট
SimpleCov কভারেজ রিপোর্ট দেখানোর জন্য বিভিন্ন পদ্ধতি প্রদান করে, যেমন:
- HTML রিপোর্ট: এটি সবচেয়ে সাধারণ রিপোর্ট ফরম্যাট। এটি একটি
index.htmlফাইল তৈরি করে, যা আপনি আপনার ব্রাউজারে খুলে কভারেজ বিশ্লেষণ করতে পারবেন। - Text রিপোর্ট: আপনি কনসোলে সরাসরি একটি টেক্সট রিপোর্ট দেখতে চাইলে,
SimpleCov.formatterব্যবহার করে কনসোল আউটপুট কনফিগার করতে পারেন।
# spec/spec_helper.rb
require 'simplecov'
SimpleCov.formatter = SimpleCov::Formatter::SimpleFormatter
SimpleCov.startএটি কভারেজের একটি সরল পাঠযোগ্য টেক্সট রিপোর্ট তৈরি করবে।
কভারেজ রিপোর্টের বিশ্লেষণ
রিপোর্টে আপনি নিম্নলিখিত তথ্য দেখতে পাবেন:
- Covered Lines: কত শতাংশ কোড আপনার টেস্ট দ্বারা কভার করা হয়েছে।
- Missed Lines: কোডের কোন অংশগুলির জন্য টেস্ট নেই।
- Files Overview: প্রতিটি ফাইলের কভারেজ শতকরা ভাগ।
- Coverage Thresholds: আপনি কভারেজের একটি নির্দিষ্ট থ্রেশহোল্ড সেট করতে পারেন, যেমন "কভারেজ 90% এর নিচে হলে টেস্ট রান করবে না"।
কভারেজ থ্রেশহোল্ড সেট করা
SimpleCov আপনাকে coverage threshold সেট করার সুবিধা দেয়, যা আপনাকে একটি নির্দিষ্ট কভারেজের নীচে গেলে টেস্ট ফেইল করতে সাহায্য করবে।
উদাহরণ:
# spec/spec_helper.rb
require 'simplecov'
SimpleCov.start 'rails' do
add_filter '/spec/'
minimum_coverage 90
endএখানে, minimum_coverage 90 দিয়ে আমরা সেট করেছি যে, কভারেজ 90% এর নিচে থাকলে টেস্ট ফেইল হবে।
Example RSpec Test with SimpleCov
উদাহরণ:
ধরা যাক, একটি সিম্পল ফাংশনালিটি পরীক্ষা করার জন্য RSpec টেস্ট লিখেছেন। SimpleCov কভারেজ পরিমাপ কিভাবে কাজ করবে তা দেখে নিন।
# app/models/user.rb
class User < ApplicationRecord
def full_name
"#{first_name} #{last_name}"
end
end# spec/models/user_spec.rb
require 'rails_helper'
RSpec.describe User, type: :model do
describe '#full_name' do
it 'returns the full name of the user' do
user = User.new(first_name: "John", last_name: "Doe")
expect(user.full_name).to eq("John Doe")
end
end
endএখন, যখন আপনি rspec চালাবেন, SimpleCov কভারেজ রিপোর্ট তৈরি করবে এবং আপনি দেখতে পাবেন কোন লাইনে টেস্ট কভারেজ নেই। যদি আপনি full_name মেথডের মতো কোনও ছোট ফাংশন পরীক্ষা করেন, তাহলে SimpleCov আপনাকে দেখাবে যে ওই মেথডের কোড কতটুকু কভার হয়েছে।
সারাংশ
SimpleCov হল রুবি অ্যাপ্লিকেশনগুলির জন্য একটি শক্তিশালী টুল যা আপনার কোডের টেস্ট কভারেজ পরিমাপ করতে সহায়ক। এটি RSpec বা Minitest ফ্রেমওয়ার্কের সাথে একীভূত হয়ে কাজ করে এবং কভারেজ রিপোর্ট তৈরি করে যা ডেভেলপারদের কোডের কোন অংশে টেস্ট করা হয়েছে এবং কোথায় টেস্ট করতে হবে তা চিহ্নিত করতে সাহায্য করে। SimpleCov ব্যবহার করে আপনি সহজেই আপনার অ্যাপ্লিকেশনের কোড কভারেজ মনিটর করতে পারবেন এবং কভারেজ থ্রেশহোল্ড সেট করে নিশ্চিত করতে পারবেন যে আপনার টেস্ট যথেষ্ট পরিমাণে কভার করছে।
Read more