Gherkin is a domain-specific language used in Behaviour-Driven Development (BDD) to define test cases in a natural, readable format. Its purpose is to describe the behaviour of the software in a way that is understandable by all stakeholders, including developers, testers, and business analysts. Gherkin serves as a bridge between technical and non-technical team members, fostering better communication and collaboration.
Key Features of Gherkin Syntax
Gherkin syntax is structured and simple, making it easy to write and understand. Here are some of the key features:
1. Feature Files
Gherkin scenarios are written in feature files, which describe the high-level functionality of the system. A feature file typically begins with the keyword Feature
, followed by a brief description of the feature.
Example:
Feature: User login
As a user
I want to log in to the application
So that I can access my account
2. Scenarios
Each feature can have multiple scenarios that describe specific examples of the feature's behaviour. Scenarios are defined using the keyword Scenario
, followed by a description.
Scenario: Successful login
Given the user is on the login page
When the user enters valid credentials
Then the user should be redirected to the dashboard
3. Steps
Scenarios are composed of steps that define the actions and expected outcomes. Steps use the keywords Given
, When
, Then
, And
, and But
to describe the context, actions, and results.
4. Given-When-Then Structure
Given: The
Given
step describes the initial context or state of the system before an action is taken. It sets up the preconditions for the scenario.When: The
When
step specifies the action or event that occurs. It describes the trigger that causes the behaviour to be tested.Then: The
Then
step defines the expected outcome or result of the action. It verifies that the system behaves as expected.The
And
andBut
keywords are used to add additional conditions toGiven
,When
, orThen
steps. They help to create more complex scenarios by chaining multiple conditions together.
Scenario: Successful login with welcome message
Given the user is on the login page
When the user enters valid credentials
Then the user should be redirected to the dashboard
And the user should see a welcome message
5. Data Tables
Gherkin also supports data tables for scenarios that require multiple sets of inputs and expected outcomes. Data tables provide a structured way to present this information.
The Scenario Outline
keyword is used to run the same scenario multiple times with different sets of data. This is useful for testing various input combinations. The Examples
keyword is used to define the data sets.
Scenario Outline: Login attempts
Given the user is on the login page
When the user enters <username> and <password>
Then the user should see <message>
Examples:
| username | password | message |
| user1 | pass1 | Welcome, user1! |
| user2 | pass2 | Welcome, user2! |
6. Background
The Background
keyword is used to define a common set of steps that apply to all scenarios in a feature. This helps to avoid repetition and keep the scenarios concise.
Feature: User login
Background:
Given the user is on the login page
Scenario: Successful login
When the user enters valid credentials
Then the user should be redirected to the dashboard
Scenario: Unsuccessful login
When the user enters invalid credentials
Then the user should see an error message
Gherkin syntax is a crucial component of BDD, enabling teams to write clear and concise scenarios that describe the behaviour of the system. By using a structured and natural language format, Gherkin helps to ensure that everyone on the team has a shared understanding of the requirements and expected behaviour. This collaborative approach leads to better communication, fewer misunderstandings, and higher-quality software.