Selenium với Cucumber (BDD Framwork) (Phần 1)
Bài đăng này đã không được cập nhật trong 4 năm
Tiếp tục series về automation test hôm nay mình sẽ giới thiệu 1 cách kết hợp mới
Cucumber là gì ?
Cucumber là quả dưa chuột .... ưm cũng đúng thôi !
Nhưng về khía cạnh kiểm thử phần mềm nó lại có 1 định nghĩa khác là 1 tên gọi hết sức kỹ thuật chứ không dễ ăn như dưa chuột đâu nhé
Cucumber là tên gọi 1 phương pháp kiểm thử hỗ trợ Behavior Driven Development (BDD). Nó giải thích hành vi của ứng dụng tương tự như những câu tiếng Anh có ý nghĩa đơn giản bằng cách sử dụng một ngữ pháp đơn giản được xác định bởi một ngôn ngữ gọi là Gherkin
Tại sao phải sử dụng Cucumber?
Một số lý do sau nên dùng Cucumber:
- Selenium và Cucumber là 2 công nghệ phổ biến
- Hầu hết các dự án sử dụng Selenium để kiểm thử chức năng, họ muốn tích hợp Cucumber vì Cucumber dễ đọc và dễ hiểu luồng ứng dụng hơn.
- Cucumber dựa trên phát triển hướng hành vi đóng vai trò là cầu nối giữa
-
Software Engineer và Business Analyst.
-
Manual Tester và Automation Tester.
-
Manual Tester và Developers.
Cài đặt và sử dụng
1. Cài đặt
-
Download thư viện Selenium jar files tại https://www.selenium.dev/downloads/
-
Download thư viện Cucumber jar files tại https://mvnrepository.com/search?q=Cucumber
Đầu tiên search với từ khóa "Cucumber Core" và click vào kết quả tìm kiểm như hình dưới
Chọn download version 1.2.2 Click download với đuôi jar
2. Automation test sử dụng Cucumber với Selenium
-
B1: Đầu tiên tạo 1 project mới bằng cách: File -> New -> Java Project. Đặt tên cho Project của bạn
-
B2: Import các thư viện bạn vừa download ở trên vào Project qua đường dẫn Chuột phải vào Project -> Propeties -> Java Build Path -> chọn tab Libraties -> Add External JARs add tất cả các thư viện bạn đã down ở trên
-
B3: Tạo 1 forder cho dự án là nơi để lưu các feature. Đặt tên là Feature để dễ nhận biết
-
B4: Tạo 1 package có tên là stepDefinition mục đích là để chứa các class viết code chính, 1 package là nơi chứa class để Run
Việc phân ra các package và folder như trên là để dự án automation trở nên rõ ràng hơn. Team member của bạn vào xem cũng dễ hiểu hơn
Xong phần lý thuyết + cài đặt hẳn bạn đã nhàm chán, giờ mình thử 1 bài tập cho khí thế nhé
Bài tập 1: Kiểm tra button Login của trang https://selenium-training.herokuapp.com/
Bước 1: Viết script sử dụng ngôn ngữ Gherkin trong class feature
Feature: Check function Login
Scenario: Verification of Login button
Given Open the Chrome and launch the application
When Enter the Username and Password
Then Login successfully
Về ý nghĩa các từ khóa, cũng như cách sử dụng ngôn ngữ Gherkin mời bạn đọc tham khảo ở bài viết https://viblo.asia/p/cucumber-co-ban-ngon-ngu-gherkin-jamoG8ndRz8P
Bài viết này mình sẽ chỉ tập trung vào sự kết hợp giữa cucumber và Selenium thôi nhé
Bước 2: Tạo class TestRunner trong package TestRunner
package TestRunner;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@CucumberOptions(features="Features",glue={"StepDefinition"})
public class TestRunner {
}
Bước 3: Tạo class Login trong package Step Definition
package StepDefinition;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class Login {
WebDriver driver;
@Given("^Open the Chrome and launch the application$")
public void open_the_Chrome_and_launch_the_application() throws Throwable
{
System.setProperty("webdriver.chrome.driver",
"C:\\Users\\pham.thi.thu.hang\\Documents\\Chrome driver 83\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
String url = "https://selenium-training.herokuapp.com/login";
driver.get(url);
}
@When("^Enter the Username and Password$")
public void enter_the_Username_and_Password() throws Throwable
{
driver.findElement(By.name("session[email]")).sendKeys("phamhangmta94@gmail.com");
driver.findElement(By.name("session[password]")).sendKeys("12345678");
driver.findElement(By.name("commit")).submit();
}
@Then("^Login successfully$")
public void Login_successfully() throws Throwable
{
String expectTitle ="Hằng | Ruby on Rails Tutorial Sample App";
String actualTitle = driver.getTitle();
if (expectTitle.contentEquals(actualTitle)) {
System.out.print("Test Passed!");
} else {
System.out.print("Test Failed!");
}
}
}
Kết quả thu được khi Run sẽ được kết quả như sau:
Bài viết sau mình sẽ demo thêm 1 số bài toàn phức tạp hơn. Mong bạn đón đọc
Tham khảo: https://www.guru99.com/using-cucumber-selenium.html#1
All rights reserved