My experience with BDD & Specflow

Using Specflow to follow the BDD process can be fun. In this post, I share my experience.

My experience with BDD & Specflow

Introduction

Who am I and where do I currently live?

Hello, my name is Abdallah Yashir Ramsing. I'm a Senior Software Developer with more than 8 years of experience. I live in the beautiful island of Mauritius.

I'm currently working at SDWorx Mauritius, a subsidiary of SDWorx, which is an international company, based in Belgium and focused on HR Products and Services.

I joined the organisation at the start of 2021. I previously worked in multiple smaller companies as a Full Stack web Developer or Software Consultant.

What am I working on?

I joined SDWorx as a Full Stack Developer with a focus on front end technologies. However, with my Ruby, NodeJS and Python background, being productive in .NET Core technologies will take time. So meanwhile, I prefer being useful and taking my time to ramp up. I thus began working more on Test Automation.

How I discovered BDD and Specflow?

SDWorx use plenty of tools for testing, revolving around .Net and C#. For QA, they use Ranorex and Selenium among others. Cypress and Postman are also being introduced within some squads. For Mobile App automation, Appium is used with Java.

Although, I've mostly been a developer throughout my career, I'm no stranger to the testing world. I've had the opportunity of working alongside testers and even tried adding End to End (E2E) Test Automation to a project few years back with Cypress.

At some point, a colleague and a good friend of mine, Irfaan, who was the Lead QA Engineer was switching jobs. I was asked if I could help his team. He previously had a lot of experience with Behaviour Driver Development (BDD) in Cucumber. The concept of BDD itself is new in the company. I haven't hear anyone else use it despite the significant benefits.

He chose to develop his End To End tests using Specflow. Most of the web application was covered by the time he was leaving. I therefore didn't need to start from scratch or automate a large number of steps.

How did I learn BDD?

The first time I heard about BDD was when learning Ruby on Rails, more specifically RSpec. From memory, the author explained the difference between Test Driven Development (TDD) and Behaviour Driven Development (BDD). However, at this point, as I wasn't working in a truly agile system, I didn't gather the facts about BDD nor put it into practise.

Few days back, to really understand the fundamentals, I followed a brief yet interesting course on LinkedIn learning, in which the presenter explained the origin of BDD and how it can be used. He also demonstrated concise examples using Ruby.

I also followed a couple of tutorials on YouTube by LambdaTest.

When learning a new technology, I prefer watching a few video tutorials as I'm more of a visual learner. But I also consult the official docs and tutorials to ensure whatever I'm learning is up to date.

How I learn Specflow?

Specflow being a technology specific to Visual Studio, I didn't find much resources on LinkedIn Learning. I therefore once again turned to Lambdatest.

https://specflow.org/

My colleague before leaving though, during the handover meetings, presented the project and share the official links. After some minimal friction such as creating an account with Specflow to run the test, I could launched the tests locally without any issue.

As I got more comfortable with the Gherkin Syntax from the videos and the official documents, I read the codes my colleagues had written in order to follow a similar style. From that, I started the first task which was to update the creation of messages.

What is my current experience with it?

In my professional experience so far, I can only vouch the importance of having different types tests to ensure the products' quality. Most projects I've worked on that didn't have at least Unit Tests and End to End Tests, were disregarded at some point or eventually made into production, albeit, way latter than expected and with plenty of bugs.

BDD brings a unique advantage in that it's not only a technology, but also a process that can help teams develop better quality software. The Gherkin syntax also enables non technical people to read and contribute into improving features, user stories and acceptance criterias.

As most enterprises I know of use Microsoft technologies centered around .Net, Specflow is an excellent tool for implementing BDD end to end tests.


If my articles help you and you want to support my work, you can buy me a coffee: