​Behavior-Driven Testing: Gherkin and Stakeholders​

Testing what you build is vital. Every application built should and must go through competency evaluations. Let's talk about why, 

When an application is built, and people interact with it, the basic function is getting the work it was supposed to do. On top of that, with modern software trends, it's a cluster of relative functions rather than one for one application. More importantly, the security standards these applications must maintain play a crucial role in your application's viability in the market. 

Testing is one key area that pushes these implementations to their limits to check for competency and viability before being put on the market. Pushing your application to test every scenario possible ensures it is ready for end users. 

Traditional testing is simply coding test scenarios and simulating your program. While this sounds nice, it is also tedious work and, more often than not, could be overkill. It is coding test scenarios for technical capabilities rather than how the program should narrate itself and behave. 

Behavior Driven Testing is a popular testing method that focuses on the behavior of your application rather than technical limits. As BDT uses a much more understandable language, even without a technical or coding background, you control the scenario you want to test your application on.  

Whether you are a coder, stakeholder, product owner, or analyst, through BDT, you are more than capable of writing your own scenario and validating the aptitude of your program. 

BDT Frameworks 

Two of the most popular BDT frameworks in use are Cucumber and SpecFlow. Both frameworks have specialties where Cucumber is based on Java and SpecFlow on .NET. As mentioned by 'more understandable language,' these frameworks work based on Gherkin syntax.  

In addition, Karate is a BDT framework that is built with Cucumber as the foundation. While it includes all the conveniences of the based framework, this does not require any Java or .NET code to be written. Instead, it provides a set of built-in features and functions that can be used to test web services and APIs using Gherkin Syntax. 

Gherkin syntax is a far more readable language than the traditional cases we know. It uses a human-readable format to specify test case steps, making it more accessible even without extensive coding knowledge. 

A general test case on Gherkin syntax would involve keywords such as 'given' for preconditions, 'when' for logical conditions, and 'then' to obtain results. Being made more readable, stakeholders are fully aware of what it is being tested for and how well it performs. 

Here is an example of a simple BDT test case written in Gherkin syntax: 

SQL Copy code 

Feature: Search Functionality 

Scenario: Search for a Product 
    Given I am on the search page 
    When I enter "book" in the search field 
    And I click the search button 
    Then I should see a list of search results 

This test case is generated for a 'search functionality' on a website. It specifies preconditions, actions, and expected results in a way that is easy to understand.  
Ground-level versions of Cucumber and SpecFLow would require some coding knowledge to automate these tests. However, these applications also come with plugins, making it much more convenient for non-technical stakeholders to participate. 

Here are some examples of how these plugins can be used: 

This plugin for Cucumber provides testers a web-based interface for writing and managing BDT test cases. Concentrating more on non-technical stakeholders, they are given the tools to generate and modify test cases without writing codes. This plugin also favors collaboration through review and version control features where anyone interested can collaborate on the testing effort. 

This plugin for SpecFlow offers a visual interface for creating and managing BDT test cases. With features such as drag-and-drop available, it takes little to no effort to generate the test case you want to develop without coding expertise or even writing with Gherkin syntax by yourself. SpecMap also provides similar collaboration features to have testers and stakeholders work together for testing. 

These plugins are designed to add collaboration and efficiency to generic testing efforts. More hands are more thorough testing. Having all stakeholders cooperate to check a program's viability leaves very little room for it to have errors. 

In conclusion, the ground-level requirement of any application is to do what it is meant to do and to do it better. With behavior-driven testing, you are testing your program for how well it does the task through added collaboration rather than technical aspects such as how many numbers it can hold in one field. While technical aptitude is also important, the main focus of your testing should always be to ensure the software meets the requirements. 

Chathura Abeysinghe
Consultant - Software Development

# QA

National Robotics Week: Evolution of Robotics with AI