Gherkin là một ngôn ngữ định dạng văn bản có cấu trúc đơn giản, sử dụng cú pháp gần với ngôn ngữ tự nhiên. Mục tiêu của Gherkin là làm cho các kịch bản kiểm thử dễ hiểu cho tất cả mọi người, kể cả những người không có kỹ thuật lập trình. Nó thường được sử dụng trong Behavior-Driven Development (BDD) để mô tả hành vi của phần mềm dưới dạng các tính năng và kịch bản.
Cú pháp của Gherkin giúp tạo ra sự thống nhất giữa các bên liên quan trong dự án, từ khách hàng, quản lý dự án đến đội phát triển và kiểm thử. Trong Java, Gherkin thường được sử dụng với công cụ Cucumber để chuyển các kịch bản thành mã kiểm thử tự động.
Cấu trúc của Gherkin rất đơn giản và dễ hiểu. Nó bao gồm các từ khóa sau:
Feature
Scenario
mô tả một trường hợp cụ thể của tính năng mà bạn muốn kiểm thử. Mỗi kịch bản phải bao gồm một chuỗi các bước từ đầu đến cuối để kiểm tra một tình huống cụ thể.
Ví dụ:
Given
When
mô tả một hành động hoặc sự kiện mà người dùng thực hiện trong hệ thống. Đây là phần diễn tả hành vi mà bạn muốn kiểm thử.
Ví dụ:
Then
And
và But
được sử dụng để nối nhiều điều kiện, hành động hoặc kết quả.
Ví dụ:
Scenario: Đăng nhập thất bại với mật khẩu không chính xác Given Người dùng đã có tài khoản hợp lệ When Người dùng nhập đúng tên đăng nhập nhưng sai mật khẩu Then Hệ thống sẽ hiển thị thông báo lỗi đăng nhập không thành công And Tên đăng nhập và mật khẩu không được lưu
Các bước kiểm thử được mô tả trong Gherkin không thể thực thi nếu không có mã tương ứng để thực hiện chúng. Để làm điều này, bạn cần tạo các step definitions (định nghĩa bước), là các phương thức trong mã chương trình để ánh xạ từng bước của Gherkin.
Giả sử bạn đã viết kịch bản sau trong Gherkin:
Scenario: Đăng nhập thành công với thông tin hợp lệ Given Người dùng đã có tài khoản hợp lệ When Người dùng nhập đúng tên đăng nhập và mật khẩu Then Người dùng sẽ được chuyển đến trang chính của hệ thống
Bước tiếp theo là viết mã Java trong Cucumber để ánh xạ từng bước này:
import io.cucumber.java.en.Given; import io.cucumber.java.en.When; import io.cucumber.java.en.Then; public class LoginStepDefinitions { @Given("Người dùng đã có tài khoản hợp lệ") public void nguoiDungDaCoTaiKhoanHopLe() { // Kiểm tra người dùng đã có tài khoản hợp lệ trong hệ thống System.out.println("Người dùng có tài khoản hợp lệ"); } @When("Người dùng nhập đúng tên đăng nhập và mật khẩu") public void nguoiDungNhapDungTenDangNhapVaMatKhau() { // Thực hiện đăng nhập với tên đăng nhập và mật khẩu đúng System.out.println("Người dùng nhập thông tin đúng"); } @Then("Người dùng sẽ được chuyển đến trang chính của hệ thống") public void nguoiDungDuocChuyenDenTrangChinh() { // Kiểm tra người dùng đã được chuyển đến trang chính System.out.println("Người dùng đã vào trang chính"); } }
Feature: Đăng ký tài khoản Để sử dụng hệ thống Là một người dùng mới Tôi muốn có thể đăng ký tài khoản mới Scenario: Đăng ký thành công với thông tin hợp lệ Given Người dùng mới chưa có tài khoản When Người dùng cung cấp thông tin hợp lệ Then Tài khoản mới sẽ được tạo And Người dùng sẽ được chuyển đến trang đăng nhập
Feature: Tìm kiếm sản phẩm Để tìm được sản phẩm phù hợp Là một khách hàng Tôi muốn có thể tìm kiếm sản phẩm theo từ khóa Scenario: Tìm kiếm thành công với từ khóa hợp lệ Given Người dùng đang ở trang chủ When Người dùng nhập từ khóa vào thanh tìm kiếm Then Kết quả tìm kiếm sẽ hiển thị sản phẩm phù hợp
Gherkin là một công cụ mạnh mẽ cho việc viết các kịch bản kiểm thử trong Cucumber, giúp liên kết các bên liên quan trong dự án. Nhờ cú pháp dễ hiểu, bạn có thể viết và thực thi các kịch bản kiểm thử tự động mà không cần kỹ năng lập trình phức tạp. Với việc tách biệt các bước kiểm thử và mã thực thi, Gherkin và Cucumber tạo nên một hệ thống kiểm thử mạnh mẽ và dễ quản lý, đặc biệt trong phát triển phần mềm theo hướng BDD.