Ngôn ngữ Gherkin: Cú pháp, Định dạng & Ví dụ

⚡ Tóm tắt thông minh

Gherkin là một ngôn ngữ dễ đọc đối với người dùng doanh nghiệp, mô tả hành vi của phần mềm mà không cần đi sâu vào chi tiết triển khai. Nó sử dụng các từ khóa Given, When và Then để định nghĩa... Cucumber Các kịch bản kiểm thử được viết bằng ngôn ngữ dễ hiểu, đóng vai trò như tài liệu sống động và là khung sườn cho các bài kiểm thử BDD tự động.

  • 📝 Ngôn ngữ đơn giản: Gherkin mô tả hành vi sao cho người không phải lập trình viên cũng có thể đọc và viết các bài kiểm tra.
  • 🥒 Cucumber: Cucumber Đọc các tệp .feature và thực thi các bước Gherkin như các bài kiểm tra.
  • 🔑 Cho trước - Khi nào - Sau đó: Given thiết lập ngữ cảnh, When kích hoạt một hành động, Then khẳng định kết quả.
  • 🧱 Từ khóa: Mỗi kịch bản đều được cấu trúc theo hai phần: Đặc điểm, Bối cảnh, Tình huống, Và, và Nhưng.
  • Thực hành tốt nhất: Hãy tách biệt từng tình huống và mô tả "cái gì", chứ không phải "như thế nào".
  • 🤖 Hỗ trợ AI: Các công cụ AI xây dựng kịch bản "Đã cho - Khi nào - Sau đó" dựa trên các yêu cầu đơn giản.

Ngôn ngữ Gherkin trong Cucumber

Ngôn ngữ Gherkin là gì?

Gherkin Đây là một ngôn ngữ dễ đọc đối với người làm kinh doanh, giúp bạn mô tả hành vi kinh doanh mà không cần đi sâu vào chi tiết triển khai. Nó là một ngôn ngữ chuyên biệt để định nghĩa các bài kiểm thử trong... Cucumber Định dạng này sử dụng ngôn ngữ đơn giản để mô tả các trường hợp sử dụng và cho phép người dùng loại bỏ các chi tiết logic khỏi các bài kiểm tra hành vi.

Văn bản trong Gherkin đóng vai trò như tài liệu và là khung sườn cho các bài kiểm tra tự động của bạn. Định dạng Gherkin dựa trên Ngữ pháp TreeTop, tồn tại trong hơn 37 ngôn ngữ, vì vậy bạn có thể viết Gherkin bằng hơn 37 ngôn ngữ nói. Kịch bản này phục vụ hai mục đích chính: ghi lại các kịch bản người dùng và cung cấp cơ sở để viết các bài kiểm tra BDD tự động.

Tại sao lại là Gherkin?

Nếu không có một định dạng chung, dễ hiểu, các nhóm kinh doanh và kỹ thuật sẽ mô tả yêu cầu theo những cách khác nhau, dẫn đến hiểu lầm. Gherkin cung cấp cho mọi người một vốn từ vựng duy nhất, có cấu trúc, dễ đọc như tiếng Anh thông thường nhưng lại trực tiếp tương ứng với các bài kiểm tra có thể thực thi.

Cú pháp Gherkin

Gherkin là một ngôn ngữ hướng dòng, giống như YAML và... PythonMỗi dòng được gọi là một bước và bắt đầu bằng một từ khóa. Dấu tab hoặc dấu cách được sử dụng để thụt lề. Có thể thêm chú thích ở bất kỳ đâu nhưng phải bắt đầu bằng dấu #. Trình thông dịch đọc từng dòng sau khi loại bỏ các từ khóa Gherkin như Given, When và Then.

Feature: Title of the Scenario
  Given [Preconditions or Initial Context]
  When [Event or Trigger]
  Then [Expected output]

Tài liệu Gherkin có phần mở rộng .feature và đơn giản chỉ là một tệp văn bản với phần mở rộng mô tả. Cucumber Chương trình đọc tài liệu Gherkin và thực hiện một bài kiểm tra để xác nhận rằng phần mềm hoạt động đúng như cú pháp Gherkin mô tả.

Các thuật ngữ quan trọng được sử dụng trong Gherkin

Các từ khóa chính là: Đặc điểm, Bối cảnh, Kịch bản, Cho trước, Khi nào, Sau đó, Và, Nhưng, và Phác thảo kịch bản. Cucumber Không có quy tắc đặt tên nghiêm ngặt, nhưng một quy ước đặt tên rõ ràng sẽ hữu ích.

Tính năng

Tệp phải có phần mở rộng .feature, và mỗi tệp tính năng chỉ nên mô tả một tính năng duy nhất. Từ khóa Feature bắt đầu bằng Đặc tính: Tiếp theo là một khoảng trắng và tên tính năng.

Kịch bản

Mỗi tập tin tính năng có thể có nhiều kịch bản, và mỗi kịch bản bắt đầu với kịch bản: Tiếp theo là tên kịch bản.

Tiểu sử

Từ khóa Background bổ sung ngữ cảnh cho kịch bản. Nó có thể chứa các bước được chia sẻ bởi mọi kịch bản; điểm khác biệt là các bước đó chạy trước mỗi kịch bản.

Được

Từ khóa Given đưa hệ thống vào một trạng thái đã biết trước khi người dùng bắt đầu tương tác với nó. Nó xác định điều kiện tiên quyết hoặc ngữ cảnh:

Given I am on "/."

Thời Gian

Từ khóa When xác định hành động mà người dùng thực hiện:

When I perform "Sign In."

Sau đó

Từ khóa Then xác định kết quả quan sát được sau hành động trong bước When. Bạn chỉ nên xác minh những thay đổi có thể nhận thấy:

Then I should see "Welcome Tom."

Và nhưng

Bạn có thể có nhiều bước Given, When hoặc Then. Các từ khóa And và But bổ sung thêm các bước để dễ đọc hơn:

And I enter "EmailAddress" with "tomjohn@gmail.com."
But I should see "Welcome Tom."

Given, When, Then, And, và But đều là các bước kiểm thử. Trình thông dịch sẽ không báo lỗi nếu bạn hoán đổi vị trí của chúng, nhưng kịch bản sẽ không mạch lạc, vì vậy hãy sử dụng mỗi từ khóa cho mục đích đã định của nó.

Ví dụ về dưa chuột

Ví dụ 1: Tính năng đăng nhập cho một trang mạng xã hội.

Feature: Login functionality of a social networking site
  Given I am a registered user
  When I enter my username
  And I enter my password
  Then I should be redirected to the home page

Gherkin phân tích từng bước được viết trong tệp tính năng, và các bước trong tệp tính năng phải khớp với các bước trong tệp định nghĩa bước.

Ví dụ 2: Một kịch bản xác thực người dùng với bối cảnh.

Feature: User Authentication

Background:
  Given the user is already registered on the website

Scenario: Successful login
  Given the user is on the login page
  When the user inputs the correct email address
  And the user inputs the correct password
  And the user clicks the Login button
  Then the user should be authenticated
  And the user should be redirected to their dashboard

Các phương pháp tốt nhất để sử dụng Gherkin

  • Mỗi kịch bản cần được thực hiện riêng biệt và độc lập.
  • Mỗi tính năng cần phải có khả năng thực thi độc lập.
  • Thông tin về các bước cần được hiển thị riêng biệt.
  • Hãy liên kết các kịch bản của bạn với các yêu cầu và track là những kịch bản nào thuộc về từng yêu cầu.
  • Tạo các bước theo dạng mô-đun, dễ hiểu và kết hợp các tình huống phổ biến.
  • Hãy mô tả chức năng của hệ thống, chứ không phải cách thức hoạt động của nó.

Ưu điểm của Gherkin

  • Gherkin đủ đơn giản để những người không phải lập trình viên cũng có thể hiểu được.
  • Các lập trình viên có thể sử dụng nó như một nền tảng vững chắc để bắt đầu các bài kiểm tra của họ.
  • Nó giúp các câu chuyện người dùng dễ hiểu hơn và nhắm đúng vào các yêu cầu kinh doanh.
  • Các nhà quản lý doanh nghiệp và các nhà phát triển phần mềm đều có thể đọc cùng một kịch bản.
  • Các trường hợp kiểm thử Gherkin liên kết trực tiếp các bài kiểm thử chấp nhận với các bài kiểm thử tự động.
  • Phong cách viết này giúp việc tái sử dụng mã giữa các bài kiểm thử trở nên dễ dàng hơn.

Nhược điểm của Gherkin

  • Điều này đòi hỏi mức độ tham gia và hợp tác kinh doanh cao.
  • Phương pháp này có thể không hiệu quả trong mọi trường hợp.
  • Các bài kiểm tra được viết kém chất lượng có thể làm tăng chi phí bảo trì bài kiểm tra.

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

BDD là một phương pháp linh hoạt, trong đó các nhóm mô tả hành vi mong muốn bằng ngôn ngữ đơn giản trước khi lập trình. Các kịch bản Gherkin ghi lại hành vi đó để các thành viên nhóm nghiệp vụ và nhóm kỹ thuật cùng có một sự hiểu biết chung.

Gherkin là cú pháp ngôn ngữ đơn giản để viết các kịch bản. Cucumber Đây là một trong số các công cụ đọc các tệp .feature của Gherkin và thực thi các bước đối với ứng dụng của bạn.

Một kịch bản phác thảo (Scenario Outline) thực hiện các bước tương tự với nhiều bộ dữ liệu được liệt kê trong bảng Ví dụ (Examples). Điều này giúp tránh việc phải tạo một kịch bản trùng lặp cho mỗi bộ giá trị đầu vào.

Một định nghĩa bước ánh xạ mỗi bước Gherkin tới đoạn mã thực thi bước đó. Khi Cucumber Nó đọc một bước, tìm định nghĩa phù hợp và thực thi phương thức đó đối với ứng dụng.

Ba người bạn này gồm một người quản lý sản phẩm, một nhà phát triển và một người kiểm thử, cùng nhau xem xét một tính năng. Quan điểm kết hợp của họ tạo ra các kịch bản Gherkin rõ ràng và đầy đủ hơn so với bất kỳ vai trò đơn lẻ nào.

Bên cạnh đó CucumberGherkin được hỗ trợ bởi Thông số kỹ thuật cho .NET và Behave Pythontrong số các framework BDD khác.

Đúng vậy. Trợ lý AI có thể chuyển câu chuyện người dùng thành các kịch bản dự thảo theo dạng "Đã cho - Khi nào - Sau đó", đề xuất các trường hợp ngoại lệ và giữ cho ngôn từ nhất quán, mặc dù người kiểm thử nên xem lại chúng để đảm bảo tính chính xác.

Các công cụ AI đọc các yêu cầu đơn giản và tự động soạn thảo bản nháp đầu tiên theo cấu trúc các bước Given-When-Then. Điều này giúp tăng tốc quá trình soạn thảo, nhưng các nhóm vẫn cần tinh chỉnh ngôn từ để phù hợp với các tiêu chí chấp nhận thực tế.

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