Selenium với Cucumber (Hướng dẫn về BDD Framework)

⚡ Tóm tắt thông minh

Selenium với Cucumber tạo thành một khung phát triển hướng hành vi (BDD) mạnh mẽ, kết hợp cú pháp Gherkin đơn giản với Selenium Tự động hóa WebDriver. Hướng dẫn này giải thích các điều kiện tiên quyết, hướng dẫn ba kịch bản thực hành và cho thấy cách các tệp tính năng, định nghĩa bước và lớp TestRunner tích hợp để thực hiện các bài kiểm tra trình duyệt.

  • 🥒 Định nghĩa cốt lõi: Cucumber là một công cụ kiểm thử BDD mô tả hành vi của ứng dụng bằng ngôn ngữ đơn giản sử dụng Gherkin, và Selenium Điều khiển các hành động của trình duyệt bên dưới.
  • 🤝 Cầu nối giữa các bên liên quan: Cucumber Kết nối các nhà phân tích kinh doanh, người kiểm thử thủ công, kỹ sư tự động hóa và nhà phát triển thông qua một bản đặc tả kiểm thử chung, dễ đọc.
  • 📦 Các loại lọ cần thiết: Selenium độc lập, Cucumber-cốt lõi, Cucumber-java, Cucumber-junit, Gherkin, JUnitvà Hamcrest-core tạo thành tập hợp các phụ thuộc tối thiểu.
  • 🧱 Ba tập tin dự án: Một tệp .feature chứa các kịch bản, một lớp định nghĩa bước Steps.java và một TestRunner Runner.java với @CucumberCác lựa chọn kết dính.
  • 🔁 Kiểm thử dựa trên dữ liệu: Sử dụng bảng Phác thảo kịch bản và bảng Ví dụ để chạy cùng một quy trình với nhiều bộ thông tin đăng nhập trong một lần thực thi.

Selenium với Cucumber (Hướng dẫn về BDD Framework)

Trong hướng dẫn này, bạn sẽ học cách tích hợp Cucumber với Selenium WebDriver được sử dụng để xây dựng một khung phát triển hướng hành vi (BDD) dễ đọc, dễ bảo trì và hướng dữ liệu.

Là gì Cucumber?

Cucumber là một công cụ kiểm thử hỗ trợ Phát triển hướng hành vi (BDD). Nó mô tả hành vi của một ứng dụng bằng văn bản tiếng Anh đơn giản sử dụng ngôn ngữ Gherkin, cho phép những người không phải lập trình viên đóng góp vào các đặc tả kiểm thử mà không cần học ngôn ngữ lập trình. Tìm hiểu thêm trong tài liệu của chúng tôi. Cucumber hướng dẫn.

Là gì Selenium?

Selenium là một công cụ tự động hóa được sử dụng cho Thử nghiệm chức năng của các ứng dụng dựa trên web. Selenium Hỗ trợ nhiều ngôn ngữ lập trình, bao gồm... Javahồng ngọc, Pythonvà C#, điều này khiến nó trở nên phù hợp một cách tự nhiên với các nhóm có nền tảng kỹ thuật đa dạng. Tìm hiểu thêm trong phần của chúng tôi. Selenium hướng dẫn.

Tại sao sử dụng Cucumber với Selenium?

Cucumber và Selenium là hai trong số những công nghệ kiểm thử được áp dụng rộng rãi nhất. Hầu hết các tổ chức đã sử dụng Selenium để kiểm thử chức năng và muốn phân lớp. Cucumber trên cùng vì Cucumber Giúp việc đọc và hiểu quy trình ứng dụng trở nên dễ dàng hơn..

Cucumber dựa trên khuôn khổ Phát triển dựa trên hành vi (Behavior Driven Development) mà hoạt động như một cây cầu giữa các vai trò sau:

  1. Kỹ sư phần mềm và nhà phân tích kinh doanh.
  2. Kiểm thử thủ công và Kiểm thử tự động.
  3. Người kiểm tra và nhà phát triển thủ công.

Cucumber Khung BDD cũng Giúp khách hàng hiểu mã ứng dụng. Bởi vì nó sử dụng ngôn ngữ Gherkin, một ngôn ngữ dạng văn bản thuần túy. Bất kỳ ai trong tổ chức đều có thể hiểu được hoạt động của phần mềm. Cú pháp Gherkin được viết bằng tiếng Anh đơn giản, dễ đọc, giúp cho bản đặc tả vẫn dễ tiếp cận đối với những người không chuyên về kỹ thuật.

Cucumber với Selenium Tổng quan về khung BDD

Điều kiện tiên quyết để sử dụng Cucumber với Selenium

Trước khi chúng tôi bắt đầu Cucumber-Selenium Để tích hợp, bạn cần các mục sau:

Selenium tập tin jar:

  • Selenium-máy chủ độc lập

Bạn có thể tải chúng xuống tại https://www.selenium.dev/downloads/.

Selenium Trang tải xuống dành cho các tệp jar

Các tệp Jar cho Cucumber:

  • Cucumber-cốt lõi
  • Cucumber-html
  • Cobertura mã số bảo hiểm
  • Cucumber-java
  • Cucumber-junit
  • Cucumber-jvm-dep
  • Cucumber-Báo cáo
  • Hamcrest-lõi
  • Gherkin
  • JUnit

Bạn có thể tải chúng xuống tại https://mvnrepository.com/search?q=CucumberBạn cần tìm kiếm từng tệp jar và tải xuống từng tệp một.

Ví dụ, đây là cách tải xuống một trong các tệp jar, tệp “Cucumber- thư viện “core”.

Nhấp vào liên kết tải xuống ở trên. Nó sẽ chuyển hướng đến trang web Kho lưu trữ Maven. Bây giờ hãy tìm kiếm tệp jar cụ thể (trong trường hợp này là “Cucumber "Lõi" như thể hiện trong ảnh chụp màn hình bên dưới:

Tìm kiếm Cucumber Tệp JAR cốt lõi trong kho lưu trữ Maven.

Ở trang tiếp theo, hãy nhấp vào phiên bản 1.2.2:

Chọn Cucumber Phiên bản cốt lõi 1.2.2 trong Maven

Trên màn hình tiếp theo, hãy nhấp vào Tải xuống để lấy tệp. Cucumber Tệp jar cốt lõi:

Tải về Cucumber Tệp jar cốt lõi

Lưu ý: Để thuận tiện, chúng tôi đã đóng gói các tệp jar Maven cần thiết. đâyCác tập tin JAR này có thể trở nên lỗi thời và không tương thích theo thời gian, vì vậy chúng tôi khuyên bạn nên tự tải chúng xuống bằng phương pháp đã mô tả ở trên.

Kiểm tra tự động hóa bằng cách sử dụng Cucumber với Selenium

Hãy cùng tìm hiểu cách sử dụng. Cucumber với Selenium Từng bước một. Ở đây chúng ta sẽ xem xét ba trường hợp:

  • Tình huống 1: In văn bản trong bảng điều khiển.
  • Tình huống 2: Nhập thông tin đăng nhập và đặt lại giá trị.
  • Tình huống 3: Nhập thông tin đăng nhập vào GuruNhập 99 và đặt lại giá trị — lặp lại cho 3 bộ dữ liệu.

Tình huống 1: In văn bản ra bảng điều khiển

Trong trường hợp này, chúng ta chỉ cần in văn bản ra bảng điều khiển bằng cách sử dụng Cucumber.

Bước 1) Tạo một dự án trong Eclipse.

Tạo ra một Java dự án có tên "CucumberVớiSelenium" như thể hiện trong ảnh chụp màn hình bên dưới.

Tạo CucumberVớiSelenium Java dự án trong Eclipse

Java cấu hình tên dự án trong Eclipse

Bước 2) Thêm các tệp jar vào dự án.

Nhấp chuột phải vào dự án > Thuộc tính > Java Đường dẫn biên dịch. Thêm tất cả các thư viện bạn đã tải xuống trước đó.

Thêm Cucumber và Selenium các tệp jar thành Java Xây dựng đường dẫn

Bước 3) Tạo một tập tin tính năng.

Để tạo tệp tính năng, trước tiên hãy tạo thư mục Features như hình ảnh bên dưới.

Tạo thư mục Features trong Eclipse dự án

Nhập tên thư mục “Features” và nhấn Hoàn tất.

Cấu hình tên thư mục Tính năng trong Eclipse

Thư mục Features hiển thị trong trình khám phá dự án

Bây giờ hãy tạo một tệp tính năng bên trong thư mục Features có tên là MyTest.featureQuá trình này tương tự như việc tạo thư mục.

Tạo tệp MyTest.feature trong thư mục Features.

Lưu ý: Bạn có thể cần phải cài đặt Cucumber Eclipse Trước tiên hãy cài đặt plugin. Vào Trợ giúp → Cài đặt phần mềm mới, dán đường dẫn vào. http://cucumber.github.io/cucumber-eclipse/update-site/và cài đặt nó

Bước 4) Hãy viết ra các tình huống.

Các dòng dưới đây được viết bằng MyTest.feature sử dụng ngôn ngữ Gherkin:

Feature: Reset functionality on login page of Application

Scenario: Verification of Reset button

Given Open the Firefox and launch the application

When Enter the Username and Password

Then Reset the credential

Code Giải thích

Dòng 1) Xác định chức năng kinh doanh.

Dòng 2) Xác định một kịch bản cần kiểm tra.

Dòng 3) Xác định điều kiện tiên quyết (Đã cho).

Dòng 4) Xác định hành động cần thực hiện (Khi nào).

Dòng 5) Xác định kết quả hoặc kết cục mong đợi (Sau đó).

Bước 5) Ghi Selenium Tập lệnh TestRunner cho Cucumber thiết kế khung.

Tạo ra một Người chạy thử nghiệm gói hàng và sau đó là Runner.java tập tin lớp nằm bên dưới nó.

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 Runner
{

}

Ở trên Cucumber Java Ví dụ, chúng ta chạy thử nghiệm dưa chuột sử dụng các chú thích sau:

@RunWith() nói JUnit Về lớp chạy thử nghiệm (test runner) bắt đầu thực thi các bài kiểm tra của chúng ta.

@CucumberTùy chọn() Thiết lập các thuộc tính kiểm thử như đường dẫn tệp tính năng và gói liên kết định nghĩa bước.

Ảnh chụp màn hình của tập tin TestRunner:

Tập lệnh Runner.java TestRunner cho Cucumber

Bước 6) Tạo tập lệnh Định nghĩa Bước.

Bây giờ hãy tạo một Định nghĩa bước gói hàng và sau đó là Steps.java tệp kịch bản nằm bên dưới. Bên trong Steps.java, chúng ta viết... Selenium Logic này tương ứng với từng bước của Gherkin.

package StepDefinition;

import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;

public class Steps {

    @Given("^Open the Firefox and launch the application$")
    public void open_the_Firefox_and_launch_the_application() throws Throwable
    {
        System.out.println("This Step open the Firefox and launch the application.");
    }

    @When("^Enter the Username and Password$")
    public void enter_the_Username_and_Password() throws Throwable
    {
        System.out.println("This step enter the Username and Password on the login page.");
    }

    @Then("^Reset the credential$")
    public void Reset_the_credential() throws Throwable
    {
        System.out.println("This step click on the Reset button.");
    }
}

Lớp học có tên là Các bướcvà Cucumber Các chú thích ánh xạ mỗi phương pháp đến một bước của tệp tính năng:

@Được cho định nghĩa phương thức để mở Firefox và khởi chạy ứng dụng.

@Khi Xác định phương thức nhập tên người dùng và mật khẩu.

@Sau đó Xác định phương thức để đặt lại thông tin đăng nhập.

Mỗi phương thức chỉ đơn giản là in một thông báo ra màn hình console.

Ảnh chụp màn hình bên dưới hiển thị tập tin Steps.java và cấu trúc thư mục dự án:

Các bước thực hiện: tập tin JavaScript và cây thư mục dự án. Eclipse

Lưu ý: Định nghĩa bước là đoạn mã bạn muốn sử dụng. Cucumber Thực thi khi nó khớp với một bước trong tệp tính năng.

Bước 7) Thực thi kịch bản.

Chạy đoạn mã này từ tệp TestRunner (Runner.java) như hình bên dưới.

Thực thi Runner.java để chạy Cucumber thử nghiệm

Bước 8) Phân tích đầu ra.

Khi thực thi Runner.java, Cucumber In ra cùng một đoạn văn bản được định nghĩa trong Steps.java vào bảng điều khiển.

Kết quả đầu ra trên bảng điều khiển từ Cucumber Thực hiện kiểm tra

Tình huống 2: Nhập thông tin đăng nhập và đặt lại giá trị

Tại đây chúng ta nhập thông tin đăng nhập vào... GuruTrang đăng nhập demo 99 và thiết lập lại giá trị.

Đối với kịch bản 2, chúng ta chỉ cần cập nhật Steps.java. Ở đây chúng ta thêm phần thực tế Selenium mã. Trước tiên, hãy đảm bảo rằng Selenium Tệp jar đã được thêm vào dự án.

Xác nhận Selenium Tệp jar nằm trong classpath của dự án.

Bước 1) Cập nhật tập tin Steps.java script như hình bên dưới.

package StepDefinition;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;

public class Steps {

    WebDriver driver;

    @Given("^Open the Firefox and launch the application$")
    public void open_the_Firefox_and_launch_the_application() throws Throwable
    {
        System.setProperty("webdriver.gecko.driver", "E://Selenium//Selenium_Jars//geckodriver.exe");
        driver = new FirefoxDriver();
        driver.manage().window().maximize();
        driver.get("http://demo.guru99.com/v4");
    }

    @When("^Enter the Username and Password$")
    public void enter_the_Username_and_Password() throws Throwable
    {
        driver.findElement(By.name("uid")).sendKeys("username12");
        driver.findElement(By.name("password")).sendKeys("password12");
    }

    @Then("^Reset the credential$")
    public void Reset_the_credential() throws Throwable
    {
        driver.findElement(By.name("btnReset")).click();
    }
}

Ảnh chụp màn hình ở trên Selenium kịch bản:

Kịch bản 2 Steps.java với Selenium logic

Bước 2) Thực thi kịch bản.

Sau khi cập nhật Steps.java, hãy chạy Runner.java.

Bước 3) Phân tích kết quả đầu ra. Trong kết quả đầu ra, bạn sẽ thấy những điều sau:

  • Đã khởi chạy trình duyệt.
  • GuruTrang web demo của 99 Bank đã chính thức ra mắt.
  • Bạn nhập tên người dùng và mật khẩu trên trang đăng nhập.
  • Nút Reset xóa các giá trị.

Hình ảnh động của kịch bản 2 minh họa Cucumber Selenium chạy thử nghiệm

Kịch bản 3: Chạy quy trình Đăng nhập và Đặt lại với 3 bộ dữ liệu

Ở đây chúng ta cần cập nhật cả hai. Steps.java và tệp tính năng để thực hiện quy trình tương tự với ba bộ thông tin xác thực.

Bước 1) Cập nhật tệp tính năng như hình bên dưới.

Chúng tôi sử dụng Tóm tắt kịch bảnCác ví dụ cú pháp vậy Cucumber Lặp lại cùng một kịch bản trên mỗi hàng dữ liệu.

Feature: Reset functionality on login page of Application

Scenario Outline: Verification of reset button with multiple credentials

Given Open the Firefox and launch the application

When Enter the Username <username> and Password <password>

Then Reset the credential

Examples:
    | username | password  |
    | User1    | password1 |
    | User2    | password2 |
    | User3    | password3 |

Tệp tính năng với bảng Phác thảo kịch bản và Ví dụ.

Bước 2) Cập nhật tập tin Steps.java script.

Tại đây, chúng ta cập nhật chữ ký phương thức để chúng chấp nhận các tham số từ bảng Ví dụ.

package StepDefinition;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;

public class Steps {

    WebDriver driver;

    @Given("^Open the Firefox and launch the application$")
    public void open_the_Firefox_and_launch_the_application() throws Throwable
    {
        System.setProperty("webdriver.gecko.driver", "E://Selenium//Selenium_Jars//geckodriver.exe");
        driver = new FirefoxDriver();
        driver.manage().window().maximize();
        driver.get("http://demo.guru99.com/v4");
    }

    @When("^Enter the Username \"(.*)\" and Password \"(.*)\"$")
    public void enter_the_Username_and_Password(String username, String password) throws Throwable
    {
        driver.findElement(By.name("uid")).sendKeys(username);
        driver.findElement(By.name("password")).sendKeys(password);
    }

    @Then("^Reset the credential$")
    public void Reset_the_credential() throws Throwable
    {
        driver.findElement(By.name("btnReset")).click();
    }
}

Đã cập nhật Steps.java với thông tin xác thực tham số hóa

Bước 3) Thực thi kịch bản đã cập nhật.

Ảnh chụp màn hình bên dưới hiển thị quá trình thực thi thành công và thời gian cần thiết cho mỗi tập dữ liệu.

Thực hiện thành công Kịch bản 3 với ba bộ dữ liệu.

Bước 4) Phân tích kết quả. Các bước sau được lặp lại cho mỗi trong 3 bộ dữ liệu:

  • Đã khởi chạy trình duyệt.
  • GuruTrang web demo của 99 Bank đã chính thức ra mắt.
  • Bạn nhập tên người dùng và mật khẩu trên trang đăng nhập.
  • Nút Reset xóa các giá trị.

Hoạt ảnh kịch bản 3 minh họa tham số hóa Cucumber chạy thử nghiệm

Câu Hỏi Thường Gặp

Cucumber Đây là một framework BDD chạy các kịch bản được viết bằng Gherkin. Selenium Đây là một thư viện tự động hóa trình duyệt dùng để điều khiển các trang web. Cucumber không tương tác trực tiếp với trình duyệt — nó gọi Selenium Các bước định nghĩa để thực hiện các thao tác giao diện người dùng thực tế.

Cucumber Các tệp tính năng sử dụng Gherkin, một ngôn ngữ chuyên biệt, dễ hiểu, dùng để tổ chức các kịch bản bằng các từ khóa như Tính năng, Kịch bản, Cho trước, Khi nào, Sau đó, Và, Nhưng, Phác thảo kịch bản và Ví dụ. Gherkin dễ đọc đối với cả các bên liên quan về kỹ thuật và không chuyên về kỹ thuật.

Sử dụng từ khóa Scenario Outline với bảng Examples. Cucumber Thực thi cùng một kịch bản một lần cho mỗi hàng, thay thế các ký tự giữ chỗ như Và với các giá trị từ mỗi hàng. Đây là mô hình hướng dữ liệu tiêu chuẩn trong Cucumber.

AI tạo ra các kịch bản Gherkin từ các câu chuyện người dùng, đề xuất các định nghĩa bước, sửa chữa các bộ định vị bị lỗi trong Seleniumvà đề xuất dữ liệu Ví dụ. Trợ lý AI cũng gắn cờ các kịch bản trùng lặp, các khẳng định yếu và các bài kiểm thử lỗi thời, giúp bộ công cụ BDD dễ bảo trì khi ứng dụng thay đổi.

Đúng vậy. Trợ lý lập trình AI đọc các tệp tính năng Gherkin và tạo ra các kết quả phù hợp. Java hoặc các định nghĩa bước Kotlin, bao gồm Selenium Các lệnh gọi WebDriver, chiến lược định vị và liên kết tham số. Sau đó, các nhà phát triển sẽ tinh chỉnh mã được tạo ra, giúp giảm đáng kể lượng mã lặp lại khi khởi tạo.ping Các bộ ứng dụng BDD mới.

Tóm tắt bài viết này với: