RSpec এ Request Specs এবং Feature Specs দুটি গুরুত্বপূর্ণ টেস্টিং কৌশল যা ওয়েব অ্যাপ্লিকেশনের বিভিন্ন দিক পরীক্ষা করতে ব্যবহৃত হয়। এই স্পেসিফিকেশনগুলি API টেস্টিং এবং ইউজার ইন্টারফেস টেস্টিং করার জন্য ব্যবহৃত হয় এবং RSpec এর মাধ্যমে পুরো অ্যাপ্লিকেশনটি কার্যকরভাবে পরীক্ষা করা যায়। এগুলোর মূল উদ্দেশ্য হলো ব্যবহারকারীর দৃষ্টিকোণ থেকে অ্যাপ্লিকেশনের আচরণ পরীক্ষা করা।
১. Request Specs
Request Specs ওয়েব অ্যাপ্লিকেশনের HTTP রিকোয়েস্ট এবং Response যাচাই করার জন্য ব্যবহৃত হয়। এই স্পেসিফিকেশনগুলি সাধারণত API বা রুট পর্যায়ে পরীক্ষার জন্য ব্যবহৃত হয়। এতে অ্যাপ্লিকেশনের কন্ট্রোলার রিকোয়েস্ট এবং রেসপন্সের পরীক্ষা করা হয়, যেমন GET, POST, PUT, DELETE রিকোয়েস্টের মাধ্যমে ডেটা আপডেট বা প্রাপ্তি।
Request Specs এর উদ্দেশ্য:
- HTTP রিকোয়েস্ট এবং রেসপন্স যাচাই করা।
- কন্ট্রোলারের কাজ ও রেসপন্সের সঠিকতা নিশ্চিত করা।
- রুট এবং কন্ট্রোলার ইন্টারঅ্যাকশন পরীক্ষা করা।
Sintax:
RSpec.describe "Example Request", type: :request do
describe "GET /example" do
it "সঠিক রেসপন্স কোড প্রদান করে" do
get "/example"
expect(response).to have_http_status(200)
end
end
endউদাহরণ:
RSpec.describe "Users API", type: :request do
describe "GET /users" do
it "সকল ইউজারকে তালিকা প্রদান করবে" do
get "/users"
expect(response).to have_http_status(200)
expect(response.body).to include("John")
end
end
endএখানে:
get "/users": এটি GET রিকোয়েস্ট পাঠাচ্ছে "/users" রুটে।expect(response).to have_http_status(200): এটি পরীক্ষার মাধ্যমে রেসপন্স কোড 200 (OK) হবে কিনা যাচাই করছে।expect(response.body).to include("John"): এটি রেসপন্সের মধ্যে "John" নামটি অন্তর্ভুক্ত থাকবে কিনা যাচাই করছে।
২. Feature Specs
Feature Specs বা Integration Specs পুরো অ্যাপ্লিকেশনের ফিচারের ওপর পরীক্ষা চালানোর জন্য ব্যবহৃত হয়। এই স্পেসিফিকেশনগুলি ইউজারের পৃথক ক্রিয়া বা ফিচারগুলির মধ্যে ইন্টিগ্রেশন পরীক্ষা করে, অর্থাৎ কিভাবে বিভিন্ন উপাদান একত্রে কাজ করে তা যাচাই করা। সাধারণত Cucumber বা Capybara এর মত টুল ব্যবহার করে ইউজার ইন্টারফেসের উপর পরীক্ষা করা হয়, যেখানে রিয়েল টাইম ইন্টারঅ্যাকশন বা ব্রাউজার ইন্টারফেসের মধ্য দিয়ে একটি ফিচার পরীক্ষা করা হয়।
Feature Specs এর উদ্দেশ্য:
- অ্যাপ্লিকেশনের ইউজার ইন্টারফেসের আচরণ পরীক্ষা করা।
- একাধিক মডিউল বা উপাদান একত্রে কাজ করছে কিনা যাচাই করা।
- ব্যবহারকারীর সাথে ইন্টারঅ্যাকশন পরীক্ষার জন্য ওয়েব পেজ বা ইউজার ইন্টারফেস ব্যবহার করা।
Sintax:
RSpec.describe "Users", type: :feature do
scenario "একটি নতুন ইউজার নিবন্ধন করতে চায়" do
visit "/users/new"
fill_in "Name", with: "John"
fill_in "Email", with: "john@example.com"
click_button "Sign Up"
expect(page).to have_content("Welcome, John!")
end
endউদাহরণ:
RSpec.describe "Login Process", type: :feature do
scenario "একটি সঠিক ইউজার নাম এবং পাসওয়ার্ড দিয়ে লগ ইন করা" do
visit "/login"
fill_in "Username", with: "john_doe"
fill_in "Password", with: "password123"
click_button "Log In"
expect(page).to have_content("Welcome back, john_doe!")
end
endএখানে:
visit "/login": এটি পেজে নেভিগেট করে (জैसे ব্রাউজারে/loginপেজে যাওয়া)।fill_in "Username", with: "john_doe": এটি ইউজারনেম ইনপুট ফিল্ডে মান প্রদান করে।click_button "Log In": এটি লগ ইন বাটনে ক্লিক করে।expect(page).to have_content("Welcome back, john_doe!"): এটি পরীক্ষার মাধ্যমে যাচাই করছে যে, পেজে "Welcome back, john_doe!" বার্তা আছে কিনা।
Request Specs এবং Feature Specs এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Request Specs | Feature Specs |
|---|---|---|
| পরীক্ষার স্তর | API বা HTTP রিকোয়েস্ট পর্যায়ে পরীক্ষা করা হয় | ইউজার ইন্টারফেস বা ফিচার পর্যায়ে পরীক্ষা করা হয় |
| ব্যবহার | কন্ট্রোলার, রুট এবং HTTP রিকোয়েস্ট পরীক্ষার জন্য | পুরো সিস্টেম বা ফিচার ইন্টিগ্রেশন পরীক্ষা করতে |
| ফোকাস | HTTP রিকোয়েস্ট এবং রেসপন্সের সঠিকতা | ইউজারের কার্যক্রম, ইন্টারঅ্যাকশন এবং পেজের ফিচার |
| ইনফ্রাস্ট্রাকচার | HTTP রিকোয়েস্টের মাধ্যমে অ্যাপ্লিকেশন লজিক পরীক্ষা | UI এর মাধ্যমে বিভিন্ন ফিচারের ইন্টিগ্রেশন পরীক্ষা |
সারাংশ
- Request Specs ব্যবহার করে আপনি HTTP রিকোয়েস্ট এবং রেসপন্সের সাথে সম্পর্কিত টেস্ট লিখতে পারেন, যেমন API টেস্টিং বা কন্ট্রোলারের কার্যকারিতা যাচাই করা।
- Feature Specs পুরো ফিচার বা ইউজারের ইন্টারঅ্যাকশন পরীক্ষা করার জন্য ব্যবহার করা হয়, যা অ্যাপ্লিকেশনের UI এবং ইন্টিগ্রেশন পরীক্ষা করে।
এই দুটি স্পেসিফিকেশন কৌশল ব্যবহার করে আপনার ওয়েব অ্যাপ্লিকেশন বা API-র আচরণ এবং কার্যকারিতা উন্নতভাবে যাচাই করা সম্ভব।
Read more