Automated Testing একটি গুরুত্বপূর্ণ প্রক্রিয়া যা সফটওয়্যার ডেভেলপমেন্টের মান এবং গুণগত মান নিশ্চিত করতে সহায়তা করে। JSF (JavaServer Faces) অ্যাপ্লিকেশনগুলির জন্য Automated Testing সাধারণত Selenium ব্যবহার করে করা হয়। Selenium একটি জনপ্রিয় টুল যা ওয়েব অ্যাপ্লিকেশনের জন্য ব্রাউজার অটোমেশন সঞ্চালন করতে ব্যবহৃত হয়। এটি বিভিন্ন ওয়েব পৃষ্ঠার কার্যকারিতা পরীক্ষা করার জন্য ব্যবহৃত হয়।
Selenium কী?
Selenium হল একটি ওপেন সোর্স টুল যা ওয়েব অ্যাপ্লিকেশনের অটোমেটেড টেস্টিং করার জন্য ব্যবহৃত হয়। এটি ওয়েব ব্রাউজারে স্ক্রিপ্ট চালানোর মাধ্যমে পেজের ইনপুট, ক্লিক, ফর্ম সাবমিট, এবং অন্যান্য ইউজার ইন্টারঅ্যাকশনের কার্যকারিতা পরীক্ষা করে। Selenium বিভিন্ন ব্রাউজার এবং অপারেটিং সিস্টেমে কাজ করতে সক্ষম, এবং এটি JSF বা অন্য কোনো ওয়েব ফ্রেমওয়ার্কের জন্য খুবই কার্যকরী।
Selenium দিয়ে JSF পেজের Automated Testing কিভাবে করবেন?
JSF অ্যাপ্লিকেশনগুলির জন্য Selenium WebDriver ব্যবহার করে অটোমেটেড টেস্ট তৈরি করা যায়। Selenium WebDriver আপনাকে ব্রাউজারের মধ্যে স্ক্রিপ্ট চালিয়ে পেজের কার্যকারিতা পরীক্ষা করতে সাহায্য করে।
১. Selenium Setup
প্রথমে, আপনাকে Selenium WebDriver এবং Java ব্যবহার করে Selenium টেস্টিং সেটআপ করতে হবে। নিচে কিছু পদক্ষেপ দেওয়া হল:
১.১. Maven Dependency Setup
আপনার প্রজেক্টে Maven ব্যবহার করে Selenium WebDriver ডিপেন্ডেন্সি যুক্ত করুন।
pom.xml (Maven Dependency for Selenium)
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
</dependencies>
এটি Selenium Java লাইব্রেরি আপনার প্রজেক্টে যুক্ত করবে।
১.২. WebDriver Setup
Selenium WebDriver কনফিগার করতে আপনার প্রজেক্টে ব্রাউজার ড্রাইভার (যেমন ChromeDriver, FirefoxDriver) প্রয়োজন হবে। আপনি ChromeDriver বা FirefoxDriver ব্যবহার করতে পারেন।
ChromeDriver Setup:
System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
WebDriver driver = new ChromeDriver();
এখানে, "path/to/chromedriver" আপনার সিস্টেমে থাকা ChromeDriver এর পাথ।
২. Test Script তৈরি করা
JSF অ্যাপ্লিকেশন পরীক্ষা করার জন্য, আপনাকে একটি JUnit বা TestNG টেস্ট স্ক্রিপ্ট তৈরি করতে হবে। টেস্ট স্ক্রিপ্টে, Selenium WebDriver এর মাধ্যমে ব্রাউজারে গিয়ে বিভিন্ন JSF কম্পোনেন্ট যেমন ইনপুট ফিল্ড, বাটন, ড্রপডাউন ইত্যাদি পরীক্ষা করা যাবে।
২.১. Login Test উদাহরণ
ধরি আপনি একটি লগিন ফর্মের জন্য অটোমেটেড টেস্ট তৈরি করতে চান।
LoginPageTest.java (JUnit টেস্ট)
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import static org.junit.Assert.assertTrue;
public class LoginPageTest {
private WebDriver driver;
@Before
public void setup() {
// Set path to your webdriver
System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
driver = new ChromeDriver();
}
@Test
public void testLoginPage() {
// Open the JSF login page
driver.get("http://localhost:8080/myapp/login.xhtml");
// Find the username input field and enter a value
WebElement username = driver.findElement(By.id("loginForm:username"));
username.sendKeys("testUser");
// Find the password input field and enter a value
WebElement password = driver.findElement(By.id("loginForm:password"));
password.sendKeys("password123");
// Find the login button and click
WebElement loginButton = driver.findElement(By.id("loginForm:loginButton"));
loginButton.click();
// Assert that the user is redirected to the welcome page
assertTrue(driver.getCurrentUrl().contains("welcome.xhtml"));
}
}
এখানে:
driver.get(): এটি ওয়েব ব্রাউজারে নির্দিষ্ট URL লোড করে।driver.findElement(): এটি একটি ইলিমেন্ট (যেমন ইনপুট ফিল্ড বা বাটন) খুঁজে বের করে এবং সেটি ব্যবহারের জন্য প্রস্তুত করে।sendKeys(): এটি ইনপুট ফিল্ডে ডেটা প্রদান করে।click(): এটি কোনো বাটনে ক্লিক করার জন্য ব্যবহৃত হয়।assertTrue(): এটি পরীক্ষা করে যে ব্রাউজারটি সঠিক পৃষ্ঠায় নেভিগেট করেছে কিনা।
৩. JSF Elements Test করা
JSF পৃষ্ঠার বিভিন্ন উপাদান যেমন ফর্ম, বাটন, ড্রপডাউন, ইনপুট ফিল্ড ইত্যাদি Selenium দিয়ে পরীক্ষা করা যায়।
৩.১. Testing CommandButton
@Test
public void testCommandButton() {
WebElement button = driver.findElement(By.id("myForm:submit"));
button.click();
WebElement message = driver.findElement(By.id("message"));
assertTrue(message.getText().contains("Welcome"));
}
এখানে:
driver.findElement(By.id()): এটি পৃষ্ঠার একটি কম্পোনেন্ট (যেমন বাটন) খুঁজে বের করে।button.click(): বাটনে ক্লিক করা।assertTrue(): বাটনে ক্লিক করার পর সঠিক বার্তা দেখানো হচ্ছে কিনা তা পরীক্ষা করা।
৪. Running Selenium Test
Selenium টেস্ট চালানোর জন্য আপনাকে JUnit বা TestNG ফ্রেমওয়ার্ক ব্যবহার করতে হবে। আপনি Maven বা Gradle ব্যবহার করে টেস্ট রান করতে পারেন।
৪.১. JUnit Runner
mvn test
এই কমান্ডটি Maven দিয়ে Selenium টেস্ট চালাবে এবং টেস্ট ফলাফল প্রদর্শন করবে।
৪.২. TestNG Runner
mvn test -DsuiteXmlFile=testng.xml
Selenium এবং JSF অ্যাপ্লিকেশনের মধ্যে কিছু চ্যালেঞ্জ
- Dynamic Elements: JSF পেজের অনেক উপাদান ডাইনামিকভাবে রেন্ডার হয়, যেমন কম্পোনেন্টের আইডি সময়ের সাথে পরিবর্তিত হতে পারে। এর জন্য Explicit Waits বা ExpectedConditions ব্যবহার করা উচিত।
- AJAX Components: JSF পেজে AJAX দ্বারা রেন্ডার হওয়া কম্পোনেন্টগুলি সঠিকভাবে টেস্ট করতে হবে। Selenium WebDriver এ
WebDriverWaitব্যবহার করে AJAX কম্পোনেন্টের লোডিং শেষ হওয়ার পরে টেস্ট করা হয়।
৪.৩. Explicit Wait Example
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("loginForm:loginButton")));
element.click();
এখানে, WebDriverWait ব্যবহার করা হয়েছে যাতে নির্দিষ্ট সময় পর্যন্ত একটি উপাদান অপেক্ষা করে এবং তার পরে পরবর্তী অ্যাকশন নেওয়া হয়।
সারাংশ
Selenium JSF অ্যাপ্লিকেশনের জন্য অটোমেটেড টেস্টিং করার একটি অত্যন্ত কার্যকরী টুল। এটি ব্রাউজারে স্ক্রিপ্ট চালিয়ে JSF পৃষ্ঠার কার্যকারিতা পরীক্ষা করতে সক্ষম। Selenium WebDriver দিয়ে আপনি JSF অ্যাপ্লিকেশনের ইনপুট ফিল্ড, বাটন, লিঙ্ক, ড্রপডাউন ইত্যাদি উপাদান পরীক্ষা করতে পারেন। JUnit বা TestNG ফ্রেমওয়ার্ক ব্যবহার করে আপনি অটোমেটেড টেস্ট রান করতে পারেন এবং ব্রাউজারের মাধ্যমে UI এবং ফর্ম কার্যকারিতা পরীক্ষা করতে পারেন।
Read more