Gherkin là một định dạng ngôn ngữ đặc biệt được sử dụng trong Cucumber để mô tả các đặc tả kiểm thử. Nó là một ngôn ngữ hướng miền (Domain-Specific Language – DSL) giúp bạn diễn đạt hành vi nghiệp vụ một cách dễ hiểu, không đi sâu vào các chi tiết kỹ thuật phức tạp. Các tệp Gherkin đóng vai trò như tài liệu sống và là nền tảng cho các bài kiểm tra tự động của bạn. Được xây dựng dựa trên ngữ pháp TreeTop, Gherkin hỗ trợ hơn 37 ngôn ngữ, cho phép bạn viết các kịch bản kiểm thử Cucumber bằng ngôn ngữ quen thuộc.
Kịch bản Gherkin phục vụ hai mục đích chính:
- Tài liệu hóa các kịch bản người dùng: Gherkin giúp bạn mô tả các kịch bản sử dụng phần mềm một cách rõ ràng và dễ hiểu cho tất cả các bên liên quan, bao gồm cả những người không có kiến thức kỹ thuật.
- Xây dựng các bài kiểm tra tự động (Behavior-Driven Development – BDD): Các kịch bản Gherkin có thể được tự động hóa để kiểm tra xem phần mềm có hoạt động đúng như mong đợi hay không.
Trong hướng dẫn này, chúng ta sẽ khám phá sâu hơn về Gherkin, bao gồm:
- Tại sao cần sử dụng Gherkin?
- Cú pháp và các thành phần cơ bản của Gherkin.
- Các thuật ngữ quan trọng trong Gherkin.
- Ví dụ thực tế về cách viết kịch bản Gherkin.
- Các phương pháp hay nhất khi sử dụng Gherkin.
- Ưu điểm và nhược điểm của Gherkin.
Mục Lục
Tại Sao Cần Gherkin?
Để hiểu rõ hơn về sự cần thiết của Gherkin, hãy xem xét các hình ảnh sau:
Trước Gherkin:
Trước khi sử dụng Gherkin, các kịch bản kiểm thử thường khó hiểu và khó quản lý
Sau Gherkin:
Sau khi sử dụng Gherkin, các kịch bản kiểm thử trở nên rõ ràng, dễ đọc và dễ bảo trì hơn
Gherkin giúp đơn giản hóa quá trình kiểm thử, làm cho nó dễ tiếp cận hơn đối với tất cả các bên liên quan và cải thiện sự hợp tác giữa các thành viên trong nhóm.
Cú Pháp Của Gherkin
Gherkin là một ngôn ngữ hướng dòng, tương tự như YAML và Python. Mỗi dòng trong một kịch bản Gherkin được gọi là một “bước” và bắt đầu bằng một từ khóa, kết thúc bằng một dòng mới. Thụt lề bằng tab hoặc dấu cách được sử dụng để tạo cấu trúc cho kịch bản.
Bạn có thể thêm nhận xét vào bất kỳ vị trí nào trong kịch bản Gherkin bằng cách bắt đầu dòng với dấu #
. Cucumber sẽ bỏ qua các dòng nhận xét khi thực thi kịch bản.
Một bước Gherkin điển hình có dạng như sau:
Given điều kiện ban đầu
When hành động được thực hiện
Then kết quả mong đợi
Các bước Gherkin kết nối các khái niệm về nguyên nhân và kết quả của con người với các khái niệm về đầu vào, quá trình và đầu ra của phần mềm.
Cú pháp Gherkin cơ bản:
- Feature: Mô tả tính năng cần kiểm tra.
- Given: Xác định các điều kiện tiên quyết hoặc bối cảnh ban đầu.
- When: Mô tả sự kiện hoặc hành động kích hoạt.
- Then: Xác định kết quả mong đợi.
Một tệp Gherkin có phần mở rộng .feature
và là một tệp kiểm thử. Cucumber đọc các tệp Gherkin và thực hiện các bài kiểm tra để xác minh rằng phần mềm hoạt động như mong đợi.
Các Thuật Ngữ Quan Trọng Được Sử Dụng Trong Gherkin
Gherkin sử dụng một số từ khóa quan trọng để xác định các phần khác nhau của một kịch bản kiểm thử. Dưới đây là một số thuật ngữ phổ biến nhất:
- Feature (Tính năng): Mô tả một tính năng cụ thể của phần mềm cần được kiểm tra.
- Background (Bối cảnh): Cung cấp bối cảnh chung cho một hoặc nhiều kịch bản.
- Scenario (Kịch bản): Mô tả một kịch bản cụ thể cần được kiểm tra.
- Given (Cho): Xác định các điều kiện tiên quyết hoặc trạng thái ban đầu của hệ thống.
- When (Khi): Mô tả hành động hoặc sự kiện được thực hiện bởi người dùng hoặc hệ thống.
- Then (Thì): Xác định kết quả mong đợi sau khi hành động được thực hiện.
- And (Và): Được sử dụng để kết hợp nhiều điều kiện, hành động hoặc kết quả.
- But (Nhưng): Được sử dụng để chỉ ra một ngoại lệ hoặc kết quả không mong đợi.
- Scenario Outline (Phác thảo kịch bản): Cho phép bạn chạy một kịch bản nhiều lần với các bộ dữ liệu khác nhau.
Ví Dụ Gherkin
Dưới đây là một ví dụ về một kịch bản Gherkin đơn giản để kiểm tra chức năng đăng nhập của một trang web mạng xã hội:
Feature: Đăng nhập Facebook
Scenario: Đăng nhập thành công
Given Tôi là một người dùng Facebook
When Tôi nhập tên người dùng là "username"
And Tôi nhập mật khẩu là "password"
Then Tôi sẽ được chuyển hướng đến trang chủ của Facebook
Trong ví dụ này:
- Feature: Xác định tính năng “Đăng nhập Facebook”.
- Scenario: Mô tả kịch bản “Đăng nhập thành công”.
- Given: Xác định điều kiện tiên quyết là người dùng là người dùng Facebook.
- When: Mô tả hành động nhập tên người dùng và mật khẩu.
- Then: Xác định kết quả mong đợi là người dùng được chuyển hướng đến trang chủ.
Ví dụ 2:
Feature: Xác thực người dùng
Background:
Given người dùng đã đăng ký trên trang web
Scenario: Đăng nhập thành công với thông tin hợp lệ
Given người dùng đang ở trang đăng nhập
When người dùng nhập địa chỉ email chính xác
And người dùng nhập mật khẩu chính xác
And người dùng nhấp vào nút "Đăng nhập"
Then người dùng sẽ được xác thực
And người dùng sẽ được chuyển hướng đến trang tổng quan của họ
And người dùng sẽ thấy một thông báo thành công
Alt: Ví dụ về kịch bản đăng nhập với thông tin hợp lệ.
Thực Hành Tốt Nhất Khi Sử Dụng Gherkin
Để viết các kịch bản Gherkin hiệu quả, hãy tuân theo các phương pháp hay nhất sau:
- Mỗi kịch bản nên thực hiện một chức năng riêng biệt: Tránh viết các kịch bản quá phức tạp hoặc bao gồm nhiều chức năng.
- Mọi tính năng nên có thể được thực thi độc lập: Đảm bảo rằng các tính năng của bạn không phụ thuộc vào nhau.
- Các bước thông tin nên được hiển thị độc lập: Viết các bước của bạn một cách rõ ràng và dễ hiểu.
- Kết nối kịch bản của bạn với yêu cầu của bạn: Đảm bảo rằng các kịch bản của bạn bao gồm tất cả các yêu cầu quan trọng.
- Theo dõi đầy đủ các kịch bản nên được bao gồm trong một tài liệu yêu cầu: Sử dụng tài liệu yêu cầu để theo dõi tiến độ kiểm thử của bạn.
- Tạo các mô-đun và các bước dễ hiểu: Sử dụng các mô-đun và các bước có thể tái sử dụng để giảm sự trùng lặp.
- Cố gắng kết hợp tất cả các kịch bản chung của bạn: Sử dụng từ khóa
Background
để xác định các bước chung cho nhiều kịch bản.
Ưu Điểm Và Nhược Điểm Của Gherkin
Ưu điểm:
- Dễ hiểu: Gherkin đủ đơn giản để những người không lập trình cũng có thể hiểu được.
- Hợp tác: Gherkin giúp cải thiện sự hợp tác giữa các nhà phát triển, người kiểm thử và các bên liên quan khác.
- Tài liệu: Các kịch bản Gherkin đóng vai trò như tài liệu sống cho phần mềm.
- Tự động hóa: Các kịch bản Gherkin có thể được tự động hóa để kiểm tra phần mềm.
- Tái sử dụng: Mã có thể được tái sử dụng dễ dàng hơn trong các bài kiểm tra khác.
- Nhắm mục tiêu yêu cầu kinh doanh: Gherkin giúp bạn tập trung vào các yêu cầu kinh doanh quan trọng nhất.
Nhược điểm:
- Đòi hỏi sự tham gia và hợp tác: Gherkin đòi hỏi sự tham gia và hợp tác tích cực từ tất cả các bên liên quan.
- Có thể không phù hợp với tất cả các kịch bản: Gherkin có thể không phù hợp với các kịch bản kiểm thử phức tạp hoặc kỹ thuật.
- Chi phí bảo trì: Các bài kiểm tra viết kém có thể làm tăng chi phí bảo trì.
Ví dụ về các bước kiểm tra với Given, When, Then
Ví dụ:
Given Trang đăng nhập đang mở
When Tôi nhập tên người dùng, mật khẩu và nhấp vào nút Đăng nhập
Then Tôi đang ở Trang chủ
Kết Luận
Gherkin là một công cụ mạnh mẽ có thể giúp bạn cải thiện quy trình kiểm thử phần mềm của mình. Bằng cách sử dụng Gherkin, bạn có thể viết các bài kiểm tra dễ hiểu, dễ bảo trì và dễ tự động hóa. Mặc dù có một số nhược điểm, nhưng những ưu điểm của Gherkin thường vượt trội hơn những nhược điểm, khiến nó trở thành một lựa chọn tuyệt vời cho nhiều dự án phần mềm.