বিহেভিয়ার ড্রিভেন ডেভেলপমেন্ট (BDD) একটি ডেভেলপমেন্ট পদ্ধতি যা ব্যবহারকারীর প্রয়োজনীয়তার উপর ভিত্তি করে সফটওয়্যার আচরণ নির্ধারণ ও পরীক্ষা করতে সহায়ক। RSpec হল একটি জনপ্রিয় টেস্টিং ফ্রেমওয়ার্ক যা BDD কৌশল ব্যবহার করে। BDD এর মূল উদ্দেশ্য হলো সফটওয়্যার কোডের আচরণ বা বিহেভিয়ার-এর উপর ফোকাস করা এবং এটি খুব সহজ ভাষায় ডিফাইন করা।
BDD এর মূল ধারণা
BDD মূলত বিশেষভাবে লেখা স্পেসিফিকেশন যা কোডের কীভাবে আচরণ করবে তা বর্ণনা করে। এই স্পেসিফিকেশনগুলি স্বচ্ছ এবং বোধগম্য হওয়া উচিত, যাতে ডেভেলপার, টেস্টার এবং স্টেকহোল্ডাররা সহজে বুঝতে পারে।
BDD সাধারণত তিনটি অংশে বিভক্ত:
- Given - শর্তাবলী (What is the initial context?)
- When - কার্য (What action is being performed?)
- Then - প্রত্যাশিত ফলাফল (What is the expected outcome?)
এটি রুবির RSpec ফ্রেমওয়ার্কে খুব সহজভাবে প্রয়োগ করা যায়।
RSpec এ BDD এর বাস্তবায়ন
১. Describe ব্লক
describe ব্লক ব্যবহার করে একটি ইউনিট বা ক্লাসের আচরণ বর্ণনা করা হয়।
describe "A Calculator" do
# এখানে টেস্ট যুক্ত হবে
end২. It ব্লক
it ব্লক ব্যবহার করা হয় একক আচরণ (test) বর্ণনা করতে। এখানে একটি আচরণ বা ফলাফলকে যাচাই করা হয়।
it "should add two numbers correctly" do
# পরীক্ষণ
end৩. Expectations (ম্যাচার্স)
BDD-তে, expect ব্যবহার করে আমরা যে আচরণটি চাই তা প্রত্যাশিত আউটপুট হিসাবে সেট করি। এটি RSpec-এর matcher ফিচার ব্যবহার করে সহজেই নিশ্চিত করা যায়।
expect(result).to eq(5)একটি উদাহরণ কোড: BDD এর মাধ্যমে ক্যালকুলেটর টেস্টিং
ক্যালকুলেটর ক্লাস
class Calculator
def add(a, b)
a + b
end
endRSpec টেস্ট
describe Calculator do
describe "#add" do
it "যাচাই করে যে দুটি সংখ্যা যোগফল সঠিক" do
calc = Calculator.new
result = calc.add(2, 3)
expect(result).to eq(5)
end
end
endউপরের উদাহরণে, আমরা BDD এর Given-When-Then কাঠামো অনুসরণ করে টেস্ট লিখেছি:
- Given:
Calculator.newএর মাধ্যমে একটি ক্যালকুলেটর ইনস্ট্যান্স তৈরি করা হয়েছে। - When:
add(2, 3)মেথড কল করা হয়েছে। - Then: ফলাফলটি
5হওয়া উচিত, যা আমরাexpect(result).to eq(5)দিয়ে যাচাই করছি।
RSpec এর মাধ্যমে BDD এর মূল উপকারিতা
১. পঠনযোগ্য এবং স্পষ্ট স্পেসিফিকেশন
BDD কোডটি সহজে পড়া যায় এবং এর আচরণকে খুব স্পষ্টভাবে বর্ণনা করা হয়। রুবির describe এবং it ব্লকগুলো দ্বারা এটি আরও সহজ হয়।
২. ডেভেলপার এবং নন-ডেভেলপারদের মধ্যে সহযোগিতা
BDD দ্বারা কোডের আচরণ অত্যন্ত পরিষ্কারভাবে ডিফাইন করা হয়, যা স্টেকহোল্ডার এবং টেস্টারদের জন্য বুঝতে সহজ করে তোলে।
৩. টেস্ট-ড্রিভেন ডেভেলপমেন্টের (TDD) সঙ্গে ইন্টিগ্রেশন
BDD TDD এর একটি অংশ, এবং RSpec সহজেই TDD ও BDD পদ্ধতি একসঙ্গে ব্যবহার করতে সক্ষম।
সারাংশ
RSpec এর মাধ্যমে BDD প্রয়োগ করার ফলে কোডের আচরণ আরো পরিষ্কারভাবে টেস্ট করা যায়। describe এবং it ব্লকগুলোর মাধ্যমে এই পদ্ধতি ব্যবহার করা সহজ। RSpec একটি খুব শক্তিশালী ফ্রেমওয়ার্ক যা সফটওয়্যারের প্রত্যাশিত আচরণ নিশ্চিত করতে সাহায্য করে এবং কোডটি আরও পাঠযোগ্য ও বোধগম্য করে তোলে।
Read more