Test Grouping হলো TestNG ফ্রেমওয়ার্কের একটি বৈশিষ্ট্য, যা টেস্ট কেসগুলোকে লজিক্যাল গ্রুপে ভাগ করার সুযোগ দেয়। টেস্ট কেসগুলো বিভিন্ন group এ সংজ্ঞায়িত করা যায়, যা নির্দিষ্ট টেস্ট চালানো বা বাদ দেওয়ার ক্ষেত্রে সহায়তা করে।
উদাহরণস্বরূপ:
আপনার টেস্ট স্যুটে কিছু টেস্ট শুধুমাত্র ফাংশনাল টেস্টিং (Functional Testing) এর জন্য, আবার কিছু ইন্টিগ্রেশন টেস্টিং (Integration Testing) এর জন্য নির্ধারিত হতে পারে। Test Grouping ব্যবহার করে এই টেস্টগুলোকে আলাদা গ্রুপে ভাগ করা সম্ভব।
টেস্ট গ্রুপিং এর প্রয়োজনীয়তা
১. লজিক্যাল বিভাজন: টেস্ট কেসগুলোকে সহজে পরিচালনার জন্য লজিক্যাল গ্রুপে ভাগ করা যায়।
২. নির্দিষ্ট টেস্ট চালানো: আপনি নির্দিষ্ট গ্রুপের টেস্ট চালাতে পারেন, যা সময় সাশ্রয় করে।
৩. পর্যাপ্ত নিয়ন্ত্রণ: বিভিন্ন ধরণের টেস্ট কেস একসাথে চালানোর প্রয়োজনীয়তা ছাড়াই নির্দিষ্ট গ্রুপের টেস্ট চালানোর সুযোগ।
৪. রিগ্রেশন টেস্টিং: শুধুমাত্র সংশোধিত ফিচার সম্পর্কিত টেস্ট চালানোর জন্য গ্রুপ তৈরি করা যায়।
৫. মডিউলারিটি: একই কোডবেসে বিভিন্ন টেস্ট পরিচালনার জন্য মডিউল তৈরি করা সহজ।
৬. ব্যবস্থাপনা সহজীকরণ: বড় টেস্ট স্যুটের ক্ষেত্রে বিভিন্ন টেস্ট কেসের মধ্যে সম্পর্ক তৈরি করা সহজ হয়।
টেস্ট গ্রুপিং কিভাবে কাজ করে?
TestNG এর @Test অ্যানোটেশনে groups প্যারামিটার ব্যবহার করে গ্রুপ সংজ্ঞায়িত করা হয়।
একটি উদাহরণ
import org.testng.annotations.Test;
public class GroupingExample {
@Test(groups = { "functional" })
public void testLogin() {
System.out.println("Functional Test: Login");
}
@Test(groups = { "functional", "regression" })
public void testDashboard() {
System.out.println("Functional and Regression Test: Dashboard");
}
@Test(groups = { "integration" })
public void testAPICall() {
System.out.println("Integration Test: API Call");
}
}
উপরের উদাহরণে টেস্ট কেসগুলো ভিন্ন ভিন্ন গ্রুপে ভাগ করা হয়েছে:
testLogin: শুধুমাত্র functional গ্রুপের অন্তর্ভুক্ত।testDashboard: functional এবং regression উভয় গ্রুপের অন্তর্ভুক্ত।testAPICall: শুধুমাত্র integration গ্রুপের অন্তর্ভুক্ত।
XML কনফিগারেশন ব্যবহার করে গ্রুপিং
TestNG XML ফাইলের মাধ্যমে নির্দিষ্ট গ্রুপ চালানো যায়।
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Test Suite">
<test name="Grouped Tests">
<groups>
<run>
<include name="functional" />
</run>
</groups>
<classes>
<class name="com.example.GroupingExample" />
</classes>
</test>
</suite>
উপরের কনফিগারেশনে শুধুমাত্র functional গ্রুপ চালানো হবে।
নির্দিষ্ট গ্রুপ বাদ দেওয়া
XML ফাইলের মাধ্যমে টেস্ট গ্রুপ বাদ দেওয়ার জন্য exclude ট্যাগ ব্যবহার করা হয়।
<groups>
<run>
<exclude name="regression" />
</run>
</groups>
এতে regression গ্রুপের টেস্টগুলো বাদ দেওয়া হবে।
ডিপেন্ডেন্ট গ্রুপ টেস্টিং
TestNG এ গ্রুপিংয়ের মাধ্যমে টেস্ট কেসকে নির্ভরশীল করা যায়।
@Test(groups = { "login" })
public void testLogin() {
System.out.println("Login Test");
}
@Test(groups = { "dashboard" }, dependsOnGroups = { "login" })
public void testDashboard() {
System.out.println("Dashboard Test");
}
এখানে testDashboard টেস্টটি login গ্রুপের উপর নির্ভরশীল।
টেস্ট গ্রুপিংয়ের সুবিধা
১. টেস্ট কেস নির্বাচন সহজ: একাধিক গ্রুপ তৈরি করে নির্দিষ্ট টেস্ট কেস চালানো যায়।
২. রানটাইমে কনফিগারেশন: XML ফাইল ব্যবহার করে গ্রুপগুলো নিয়ন্ত্রণ করা যায়।
৩. প্যারালাল টেস্টিং: গ্রুপ অনুযায়ী টেস্ট প্যারালালভাবে চালানো যায়।
৪. ডিবাগিং সহজতর: কোনো একটি নির্দিষ্ট সমস্যা সমাধানের জন্য সংশ্লিষ্ট গ্রুপের টেস্ট চালানো যায়।
Test Grouping টেস্টিং প্রক্রিয়াকে আরও সংগঠিত এবং কার্যকরী করে তোলে, বিশেষত যখন বড় সিস্টেম বা জটিল কোডবেসে কাজ করতে হয়।
Read more