Introduction to Cucumber Testing Framework
By Jash Unadkat, Technical Content Writer at BrowserStack - May 15, 2023
Cucumber is an open-source software testing tool written in Ruby. Cucumber enables you to write test cases that anyone can easily understand regardless of their technical knowledge.
Before understanding cucumber testing, let’s quickly go through the various types of automation testing frameworks
- Linear Scripting Framework
- Modular Testing Framework
- Data-driven Framework
- Keyword-driven Testing Framework
- Behavior-driven Development Testing Framework (BDD)
What is Cucumber Framework
Cucumber Framework is used to execute automated acceptance tests written in the “Gherkin” language. Gherkin is a domain-specific language for behavior descriptions. Gherkin is business readable.
Cucumber test automation makes use of two important files:
- Feature file – Contains code written in Gherkin (plain English text)
- Step definition file – Contains the actual code written by the developer
Cucumber acts as a bridge between the following teams:
- Business Analysts and Software Engineers
- Manual and Automation Testers
- Manual Testers and Developers
How does Cucumber work
Cucumber BDD framework mainly consists of three major parts:
- Feature File: Cucumber tests are written in plain text files called feature files that are stored with the extension – “.feature”. A Feature File can be given a description to make the documentation more legible. These files describe the behaviour and functionality of the software using a specific syntax called Gherkin. Gherkin is a structured language that uses keywords like Given, When, and Then to define the steps of a test scenario.
- Step Definitions: Each step in a feature file is associated with a step definition, which is implemented in code. Step definitions define the actions or operations that need to be executed for each step of the test scenario. They map the plain text steps in the feature file to the corresponding code implementation.
- Test Runner File: In Cucumber, the test runner file is responsible for executing the Cucumber feature files and coordinating the steps defined in those feature files with the corresponding step definitions.
Example of Cucumber Test
Here’s an example of Cucumber Test for checking the Login functionality for an existing user.
Scenario: As an existing user, I want to log in successfully. Given the user is on the Home page When the user navigates to the Login page And the user enters the username and password Then the successful login message is displayed
BDD in Cucumber Automation
Behaviour-driven Development (BDD) is a software development technique that has evolved from TDD (Test Driven Development), which is an approach or programming practice where the developers write new code only when the automated test case fails.
Behavior-driven development’s approach involves the usage of shared language that enhances communication between various tech and non-tech teams. Tests are more user-focused and based on the system’s behavior. In BDD, “Given-When-Then” is the proposed approach for writing test cases.
Consider the below example for better understanding:
- Given the user has entered invalid credentials
- When the user clicks submit button
- Then display the proper validation message
Read More: Page Object Model in Cucumber
Benefits of BDD in Cucumber Framework
- Focuses on defining ‘behavior’ rather than defining ‘tests’
- Enhances communication among the members of a cross-functional product team
- Helps reach a wider audience by the usage of non-technical language
- Enables you to understand how the system should perform from the developer’s and customer’s perspective
- The improvement in the quality of code results in reduced costs of maintenance and also minimizes the project’s associated risks
Below image describes a simple BDD operation –
Lifecycle of BDD
Limitations of Behavior-driven development
- Testers must have prior experience in TDD (Test-driven Development) to work in BDD
- BDD approach may be ineffective if the requirements are not correctly analyzed
- Testers must have sufficient technical skills
Cucumber with Selenium
Many organizations prefer the Selenium framework for cross browser compatibility testing. These organizations also prefer integrating Cucumber with Selenium as it makes it easier to read and understand the flow of applications among the members from different teams. Gherkin syntax involves simple and plain text, which makes it easier to understand test cases.
Read More: Selenium vs Cucumber: Core Differences
Cloud testing products like BrowserStack support Selenium testing with Cucumber.
Run Selenium Test on Real Device for Free
Benefits of using Cucumber Testing Tools
Involving stakeholders becomes easier regardless of their programming knowledge.
- Testers can write Test scripts without having in-depth knowledge of programming
- Plugins are faster as compared to Selenium
- Supports various programming languages
- Code can be reused
- Simple and quick setup
- Flexible with different software platforms like Selenium, Ruby on Rails, Watir, Spring framework, and so forth
- Cucumber testing tool is a purely business-driven development tool written in Ruby
- The business-driven development approach is an advancement over test-driven development approach, which follows the
- ‘Given-When-Then’ steps for writing test cases
- Cucumber framework makes use of Gherkin ( A simple plain text language parser) to describe expected software behaviors in a logical language, which results in better communication and collaboration among technical and non-technical team members
- Cucumber provides compatibility with popular software platforms like Selenium, Watir, Ruby, and other popular platforms
- One must also keep in mind the limitations, before deciding the behavior-driven development approach