টেস্ট প্যারামিটারাইজেশন (Test Parameterization) একটি গুরুত্বপূর্ণ ধারণা যা টেস্টএনজি-তে টেস্ট কেসগুলোকে ডাইনামিক ডেটার সঙ্গে চালাতে ব্যবহার করা হয়। এটি মূলত একই টেস্ট কেসে ভিন্ন ভিন্ন ডেটা ইনপুট দিয়ে টেস্ট করার জন্য ব্যবহৃত হয়। প্যারামিটারাইজেশন আপনাকে কোড পুনঃব্যবহারযোগ্য করতে এবং ম্যানুয়াল ডেটা পরিবর্তনের ঝামেলা থেকে মুক্তি দেয়।
প্যারামিটারাইজেশন করার পদ্ধতি
টেস্টএনজিতে প্যারামিটারাইজড টেস্ট করার দুটি পদ্ধতি রয়েছে:
- TestNG.xml এর মাধ্যমে প্যারামিটার পাস করা
- @DataProvider অ্যানোটেশন ব্যবহার করে প্যারামিটার পাস করা
TestNG.xml এর মাধ্যমে প্যারামিটার পাস করা
আপনি TestNG.xml ফাইল ব্যবহার করে টেস্টে প্যারামিটার পাস করতে পারেন।
উদাহরণ
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class ParameterizationWithXML {
@Test
@Parameters({"username", "password"})
public void loginTest(String username, String password) {
System.out.println("Username: " + username);
System.out.println("Password: " + password);
}
}
TestNG.xml ফাইল
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test name="Parameter Test">
<parameter name="username" value="testUser"/>
<parameter name="password" value="testPass"/>
<classes>
<class name="ParameterizationWithXML"/>
</classes>
</test>
</suite>
আউটপুট
Username: testUser
Password: testPass
TestNG.xml এর মাধ্যমে ইনপুট প্যারামিটার সরবরাহ করা হয় এবং @Parameters অ্যানোটেশন ব্যবহার করে মেথডে তা রিসিভ করা হয়।
@DataProvider অ্যানোটেশন ব্যবহার করে প্যারামিটার পাস করা
@DataProvider একটি শক্তিশালী পদ্ধতি যা একাধিক ডেটা সেট সরবরাহ করতে পারে। এটি বড় আকারের ডেটা-চালিত টেস্টিং-এর জন্য আরও কার্যকর।
উদাহরণ
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class ParameterizationWithDataProvider {
@DataProvider(name = "loginData")
public Object[][] provideData() {
return new Object[][]{
{"user1", "pass1"},
{"user2", "pass2"},
{"user3", "pass3"}
};
}
@Test(dataProvider = "loginData")
public void loginTest(String username, String password) {
System.out.println("Username: " + username + ", Password: " + password);
}
}
আউটপুট
Username: user1, Password: pass1
Username: user2, Password: pass2
Username: user3, Password: pass3
এখানে @DataProvider একটি ডেটা সোর্স হিসেবে কাজ করে এবং loginTest মেথডে প্যারামিটার পাস করে।
TestNG.xml এবং @DataProvider এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | TestNG.xml | @DataProvider |
|---|---|---|
| ডেটা সোর্স | স্ট্যাটিক ডেটা | ডায়নামিক এবং প্রোগ্রাম্যাটিক ডেটা |
| ডেটার নমনীয়তা | সীমিত নমনীয়তা | বড় ডেটাসেট সাপোর্ট করে |
| মাল্টিপল ইনপুট | সীমিত | একাধিক ডেটা সেট সহজেই সাপোর্ট করে |
| ইনটিগ্রেশন | সহজ, ম্যানুয়াল | জাভা কোডের মাধ্যমে কাস্টমাইজেবল |
প্যারামিটারাইজড টেস্টের সুবিধা
- ডেটা-চালিত টেস্টিং: ভিন্ন ভিন্ন ডেটা সেট দিয়ে একই টেস্ট পুনরায় চালানো যায়।
- কোড পুনঃব্যবহারযোগ্যতা: একই মেথড একাধিক ইনপুট ডেটার জন্য ব্যবহার করা যায়।
- বড় ডেটাসেট সাপোর্ট: @DataProvider ব্যবহার করে ডায়নামিক ডেটা চালানো সহজ হয়।
- পরীক্ষণের স্বয়ংক্রিয়তা: একাধিক ডেটার উপর ভিত্তি করে টেস্টিং স্বয়ংক্রিয় করা যায়।
টেস্টএনজি-তে টেস্ট প্যারামিটারাইজেশন বড় প্রজেক্টের জন্য একটি অত্যন্ত কার্যকর পদ্ধতি। এটি একই টেস্ট কেসে ভিন্ন ভিন্ন ডেটার ওপর ভিত্তি করে পরীক্ষার মাধ্যমে কোডের কার্যকারিতা নিশ্চিত করতে সাহায্য করে।
Read more