行为驱动开发是由 Daniel Terhorst-North 在 21 世纪初开创的,正如他在 2006 年的一篇文章 Introducing BDD 中所解释的那样。它是对测试驱动开发 (TDD) 的一种回应,旨在帮助新敏捷团队的程序员“直接进入好东西”,了解如何进行测试和编码,并最大限度地减少误解。BDD 已经发展成为验收级别的分析和自动化测试。 Liz Keogh 是另一位 BDD 先驱,从 2004 年开始撰写和发表有关 BDD 的文章。
支持 BDD 的早期工具
2003 年,Daniel Terhorst-North 开始编写一个名为 JBehave 的 JUnit 替代品,使用基于“行为”而不是“测试”的词汇。Liz Keogh 和 Chris Matts 也在早期就开始贡献。受 Eric Evans 在 领域驱动设计 中提出的通用语言理念的影响,并且也专注于业务价值,“Given/When/Then” 模板被开发出来,用于以可执行的形式捕获故事的验收标准。它部分源于 Connextra 的 Rachel Davies 创建的用户故事写作模板“作为一个…,我…,这样…”,该模板已成为公认的标准。
2005 年,由 Dave Astels、Steven Baker、Aslak Hellesøy 和 David Chelimsky 共同创立了 RSpec 项目,该项目在 Ruby 语言中支持 BDD。
Cucumber 的起源
在帮助改进 RSpec 的过程中,Aslak 对错误消息、步骤定义代码片段和结果报告等方面的改进有很多想法。RSpec 是为程序员设计的,而 RSpec Story Runner 是为整个团队设计的,包括非编码利益相关者。
他开始了一个新项目,打算制作一个比 Story Runner 更好的版本。他最初称之为Stories,但请他当时的未婚妻想一个更吸引人的名字。她想到了Cucumber,这个名字就一直沿用至今。