Test-Driven Development (TDD) একটি সফটওয়্যার ডেভেলপমেন্ট পদ্ধতি যেখানে প্রথমে টেস্ট লেখা হয় এবং তারপর সেই টেস্ট পাস করার জন্য কোড লেখা হয়। TDD এর মূল উদ্দেশ্য হলো কোডের গুণগত মান বজায় রাখা এবং উন্নত করা, যাতে দ্রুত উন্নয়ন এবং বাগ-ফ্রি সিস্টেম তৈরি করা যায়।
নিচে একটি বাস্তব জীবনের উদাহরণ দিয়ে TDD এর ব্যবহার বোঝানো হলো:
উদাহরণ: একটি অনলাইন শপিং সিস্টেমের "ক্যালকুলেট ট্যাক্স" ফিচার
ধরা যাক, আমরা একটি অনলাইন শপিং সিস্টেমে ট্যাক্স ক্যালকুলেশন ফিচার যোগ করতে যাচ্ছি। এখানে আমরা দেখাবো কিভাবে TDD অনুসরণ করে এই ফিচারটি তৈরি করা যেতে পারে।
ধাপ ১: টেস্ট লিখুন
প্রথমে, আমরা টেস্ট লিখব যা পরীক্ষা করবে যে ট্যাক্স ক্যালকুলেশন সঠিকভাবে কাজ করছে কিনা। সিস্টেমের ফিচারটি হলো, যেকোনো প্রোডাক্টের মূল্য ১০% ট্যাক্স সহ ক্যালকুলেট হবে।
describe "Tax Calculator" do
it "should calculate 10% tax for a given price" do
price = 100
tax = TaxCalculator.new.calculate_tax(price)
expect(tax).to eq(10) # ১০০ টাকার জন্য ১০% ট্যাক্স হবে ১০ টাকা
end
endএখানে, আমরা একটি টেস্ট লিখেছি যা যাচাই করবে calculate_tax মেথড ১০০ টাকার জন্য ১০% ট্যাক্স হিসাব করছে কিনা। এখন, কোড লেখার আগে আমরা এই টেস্টটি রান করবো, যা ফেইল করবে কারণ TaxCalculator ক্লাস এবং calculate_tax মেথড এখনও তৈরি করা হয়নি।
ধাপ ২: কোড লিখুন
এখন, আমরা TaxCalculator ক্লাস এবং calculate_tax মেথডটি তৈরি করবো যাতে এই টেস্টটি পাস করতে পারে।
class TaxCalculator
def calculate_tax(price)
price * 0.1 # ১০% ট্যাক্স হিসাব
end
endএখন, কোড লিখে টেস্ট রান করলে এটি পাস করবে, কারণ টেস্টের জন্য প্রয়োজনীয় ট্যাক্স ক্যালকুলেশন কাজ করছে।
ধাপ ৩: রিফ্যাক্টরিং (Refactoring)
এখন, কোডটি পরিষ্কার এবং কার্যকর, তবে আমরা একে আরও উন্নত বা আরও সহজে পড়তে যোগ করতে চাইলে রিফ্যাক্টরিং করতে পারি। উদাহরণস্বরূপ, আমরা TaxCalculator ক্লাসের calculate_tax মেথডে আরও উন্নত নামকরণ বা কোডের স্টাইল ঠিক করতে পারি। কিন্তু, এই রিফ্যাক্টরিংয়ের পরেও, আমরা টেস্ট রান করে নিশ্চিত করব যে কার্যকারিতা অপরিবর্তিত রইল।
class TaxCalculator
def calculate_tax(price)
return price * 0.1
end
endএখনও টেস্টটি পাস হচ্ছে, এবং কোডের গঠন পরিষ্কার হয়েছে।
ধাপ ৪: নতুন ফিচার বা টেস্ট যোগ করুন
ধরা যাক, আমরা এখন ট্যাক্স ক্যালকুলেশনে আরও কিছু লজিক যোগ করতে চাই। উদাহরণস্বরূপ, কিছু প্রোডাক্টে ডিসকাউন্ট থাকলে ট্যাক্স ক্যালকুলেশন আলাদা হবে। এ জন্য নতুন একটি টেস্ট যোগ করা যেতে পারে:
it "should calculate 10% tax after applying a 20% discount" do
price = 100
discount = 20
price_after_discount = price - (price * discount / 100)
tax = TaxCalculator.new.calculate_tax(price_after_discount)
expect(tax).to eq(8) # ৮০ টাকার জন্য ১০% ট্যাক্স হবে ৮ টাকা
endএখন, আমরা ডিসকাউন্ট সহ ট্যাক্স ক্যালকুলেশন ফিচারটি কোডে যোগ করবো।
class TaxCalculator
def calculate_tax(price, discount = 0)
price_after_discount = price - (price * discount / 100)
price_after_discount * 0.1
end
endএখন, নতুন টেস্টটি পাস হবে এবং আমরা নিশ্চিত হব যে ট্যাক্স ক্যালকুলেশন সঠিকভাবে কাজ করছে।
সারাংশ
এই উদাহরণটি দেখালো কিভাবে Test-Driven Development (TDD) পদ্ধতি ব্যবহার করে:
- প্রথমে টেস্ট লিখে একটি ফিচারের আউটপুট আশা করা হয়।
- তারপর সেই টেস্ট পাস করার জন্য কোড লেখা হয়।
- কোডের কার্যকারিতা নিশ্চিত করতে টেস্ট চলানো হয়।
- অবশেষে কোডকে পরিষ্কার এবং আরও কার্যকরী করার জন্য রিফ্যাক্টরিং করা হয়।
TDD পদ্ধতি সফটওয়্যার ডেভেলপমেন্টে একটি স্বচ্ছ, বাগ-মুক্ত, এবং মেনটেনেবল কোড তৈরি করতে সাহায্য করে, যা প্রকল্পের গুণমান বাড়ায় এবং ভবিষ্যতের পরিবর্তন বা আপডেটকে সহজ করে তোলে।
Read more