User Stories এবং Scenarios সফটওয়্যার ডেভেলপমেন্টে ব্যবহৃত অত্যন্ত গুরুত্বপূর্ণ উপাদান। এগুলির মাধ্যমে ডেভেলপার এবং টেস্টাররা সফটওয়্যার কীভাবে কাজ করবে তা বোঝেন এবং টেস্টিং করার জন্য একটি স্পষ্ট দৃষ্টিভঙ্গি তৈরি হয়। RSpec বা অন্য কোন টেস্টিং ফ্রেমওয়ার্কে User Stories এবং Scenarios-এর মাধ্যমে Test লেখা BDD (বিহেভিয়ার ড্রিভেন ডেভেলপমেন্ট) পদ্ধতিতে সাধারণত ব্যবহৃত হয়।
User Stories কী?
User Story একটি সাধারণ বর্ণনা যা ব্যাবহারকারীর দৃষ্টিকোণ থেকে একটি সিস্টেমের কার্যকারিতা বোঝায়। এটি সাধারণত উপরিউক্ত অংশে "আমি হিসাবে [ব্যবহারকারী] চায় [একটি বৈশিষ্ট্য বা ফিচার], যাতে [লাভ বা উদ্দেশ্য]" এই কাঠামোতে লেখা হয়।
User Story এর কাঠামো:
As a [type of user], I want [an action or feature], so that [a benefit or reason].উদাহরণ:
As a registered user, I want to log in to my account, so that I can access my personalized dashboard.Scenario কী?
Scenario একটি নির্দিষ্ট User Story এর মাধ্যমে বিভিন্ন পরিস্থিতি বা বৈশিষ্ট্য পরীক্ষা করার জন্য ব্যবহৃত একটি পদক্ষেপ বা শর্ত। এটি সেই ব্যবহারকারীর আচরণ এবং সিস্টেমের প্রতিক্রিয়া নির্ধারণ করে।
Scenario এর কাঠামো:
Given [initial condition],
When [action or event occurs],
Then [expected outcome].উদাহরণ:
Given a registered user,
When they enter a valid username and password,
Then they should be redirected to their dashboard.RSpec-এ User Stories এবং Scenarios এর মাধ্যমে Test লেখা
RSpec ব্যবহার করে User Stories এবং Scenarios এর মাধ্যমে টেস্ট লেখার পদ্ধতি নিচে তুলে ধরা হলো।
১. User Story টেস্টে রূপান্তর করা
ধরা যাক, আমাদের User Story হলো:
As a user, I want to log in to my account, so that I can access my profile.২. Scenario-র মাধ্যমে টেস্ট লেখা
Scenario অনুযায়ী আমরা এটি RSpec-এ লিখতে পারি।
# spec/login_spec.rb
describe "User login" do
context "with valid credentials" do
it "should allow the user to log in and access their profile" do
# Given a registered user
user = User.create(username: "john_doe", password: "password123")
# When they enter valid credentials
visit login_path
fill_in "Username", with: "john_doe"
fill_in "Password", with: "password123"
click_button "Log in"
# Then they should be redirected to their profile
expect(page).to have_content("Welcome to your profile")
expect(current_path).to eq(profile_path(user))
end
end
context "with invalid credentials" do
it "should display an error message" do
# Given a registered user
User.create(username: "john_doe", password: "password123")
# When they enter invalid credentials
visit login_path
fill_in "Username", with: "john_doe"
fill_in "Password", with: "wrongpassword"
click_button "Log in"
# Then they should see an error message
expect(page).to have_content("Invalid username or password")
end
end
endএখানে কী ঘটছে:
describeব্লক: এটি টেস্টের প্রধান বিভাগ, যেখানে আমরা "User login" বৈশিষ্ট্য পরীক্ষা করছি।contextব্লক: এটি একটি নির্দিষ্ট পরিস্থিতি বা শর্তের ভিত্তিতে টেস্ট বিভক্ত করতে ব্যবহৃত হয়। যেমন, একটি সঠিক পাসওয়ার্ড সহ লগইন করা এবং ভুল পাসওয়ার্ড সহ লগইন করার কেস।itব্লক: এখানে আমরা সেই পরিস্থিতিতে হওয়া প্রত্যাশিত ফলাফলগুলি বর্ণনা করি। এটি Scenario অনুযায়ী সম্পাদিত হয়।expect: এটি প্রত্যাশিত আউটপুট যাচাই করে।
Given-When-Then ফ্রেমওয়ার্কে Scenario লেখা
BDD-তে সাধারণত Given-When-Then পদ্ধতি ব্যবহার করা হয়। এটি কিভাবে বাস্তবায়িত হবে তার একটি উদাহরণ:
উদাহরণ: "লগইন করা" User Story
Given I am a registered user,
When I provide valid credentials,
Then I should be redirected to my dashboard.এটি RSpec-এ লেখা যাবে:
# spec/login_spec.rb
describe "Login feature" do
scenario "User logs in with valid credentials" do
# Given a registered user
user = User.create(username: "jane_doe", password: "securepassword")
# When they enter valid credentials
visit login_path
fill_in "Username", with: "jane_doe"
fill_in "Password", with: "securepassword"
click_button "Log in"
# Then they should be redirected to their dashboard
expect(page).to have_content("Welcome, Jane Doe")
expect(current_path).to eq(dashboard_path)
end
endএখানে:
scenarioব্লক: এটি Scenario এর মাধ্যমে একটি নির্দিষ্ট টেস্ট কেস চালায়।Given: একটি পূর্বাবস্থার তৈরি করা হচ্ছে, যেমন একটি নিবন্ধিত ব্যবহারকারী।When: এটি ব্যবহৃত হয় কী ঘটছে (যেমন লগইন ফর্মে তথ্য পূর্ণ করা)।Then: এটি বলে কী আশা করা হচ্ছে (যেমন, ড্যাশবোর্ডে রিডাইরেক্ট করা)।
সারাংশ
User Stories এবং Scenarios ব্যবহার করে টেস্ট লেখা BDD পদ্ধতির একটি গুরুত্বপূর্ণ অংশ। এই পদ্ধতি ব্যবহারকারীর দৃষ্টিকোণ থেকে সফটওয়্যারের আচরণ স্পষ্টভাবে নির্ধারণ করে এবং সেই অনুযায়ী টেস্ট তৈরি করা হয়। RSpec-এ describe, context, এবং it ব্লক ব্যবহার করে User Stories এবং Scenarios এর মাধ্যমে কোড লিখতে হয়, যা আপনার টেস্টগুলোকে আরও পাঠযোগ্য এবং সহজবোধ্য করে তোলে।
Read more