BDD Clarified: BDD ≠ “Given-When-Then” (Gherkin)

BDD with RSpec, no Gherkin, is much better

Zhimin Zhan
7 min readApr 19, 2022


Background image credit: Futurama S2E4

Non-Medium-Members: you can view this article free on Vocal Media.

This article is one of the “IT Terminology Clarified” series.

Cucumber is the first Gherkin BDD framework, and it gained popularity gradually. Cucumber is written in Ruby, naturally, its clones were created, such as SpecFlow and JBehave, in other languages. However, many people think Cucumber (and its clones) is equivalent to BDD, that is wrong!

RSpec is the first BDD framework

First of all, Cucumber (or Gherkin) is not the first BDD framework, developed in Ruby. In Ruby’s world, the RSpec BDD framework was released nearly two years earlier than Cucumber.

RSpec v1.0 was released on 2009–07–25.

Cucumber v1.0 was released on 2011–06–20.

Putting aside the argument on syntax differences (which I will explain later), without doubt, RSpec is the first BDD framework. Please note, I am comparing apples to apples here, both frameworks were released on RubyGems.

RSpec is still very active, in fact, its downloads far exceed Cucumber.

Cucumber 7.1 download count:   823630
RSpec 3.10 download count: 42526424

The reason that RSpec downloads are so much higher: RSpec can be used in unit, API and functional testing.

Non-Ruby programmers were not aware of RSpec. When Cucumber clones were available on Java and C#, they mistakenly thought the syntax = BDD, which now you know, is wrong. This is like, many years ago, many people thought Internet Explorer was the first web browser and how a web browser should be, but the reality is: Netscape started web browsing.

What is BDD?



Zhimin Zhan

Test automation & CT coach, author, speaker and award-winning software developer. Help teams succeed with Agile/DevOps by implementing real Continuous Testing.