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: Tính năng đăng nhập 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
Cucumber là công cụ phổ biến được sử dụng để thực thi các kịch bản viết bằng Gherkin. Cucumber chuyển đổi các kịch bản này thành mã kiểm thử thực tế. Khi sử dụng Cucumber, bạn có thể viết các kiểm thử tự động mà không cần phải sử dụng các thuật ngữ lập trình phức tạp.
Feature
mô tả tính năng chính hoặc một tập hợp các hành vi của phần mềm. Đây là một khái niệm lớn, mô tả những gì bạn muốn kiểm thử.
Ví dụ:
Feature: Tính năng đăng nhập Để bảo mật thông tin cá nhân Là một người dùng Tôi muốn có thể đăng nhập vào hệ thống
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ụ:
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
Given
mô tả trạng thái hoặc điều kiện ban đầu của hệ thống. Nó thường đại diện cho một tiền đề cần phải có trước khi thực hiện hành động.
Ví dụ:
Given Người dùng đã có tài khoản hợp lệ
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ụ:
When Người dùng nhập đúng tên đăng nhập và mật khẩu
Then
mô tả kết quả mong đợi sau khi hành động đã được thực hiện. Nó là phần quan trọng nhất để xác định xem kiểm thử có thành công hay không.
Ví dụ:
Then Người dùng sẽ được chuyển đến trang chính của hệ thống
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.