BDD 自动化框架使得 QA 工程师很容易将 Gherkin Scenarios 转换成自动化测试用例。BDD 自动化有一个优势,就是测试用例能立马运行起来。当然用 BDD Dirver 运行 Gherkin Scenarios 很容易失败,直到 Feauter 文件中所有的步骤都被代码实现了。这也使得测试驱动自动化 shift-left 左移,在写 Gherkin Scenarios 时,如不能及时实现代码自动化,它可以在晚些时候再实现自动化。
Cucumber 是主要的 BDD 测试框架,它支持大部分主流的编程语言。建议选择和所测试的产品一致的开发平台和编程语言,方便测试和开发的技术交流和问题定位。
常见的 BDD 测试框架:
编程语言 | 推荐框架 | 其他框架 |
---|---|---|
C# | SpecFlow | LightBDD Concordion.Net NSpec XBehave NBehave |
Java | Cucumber-JVM | JBehave Spock Scalatest JGiven |
JavaScript | Cucumber.js | Yadda Jasmine Mocha Vows |
Python | Behave | Lettuce Freshen pytest-bdd pyspecs |
Cucumber-JVM, Cucumber.js 是宿主 Cucumber 实现的
Behave, SpecFlow 使用 Cucumber 组件基础上进行的二次开发
BDD 自动化框架也可以从 Jenkins 启动,Java Maven 项目启动 BDD 自动化测试可视为 Maven build 的一部分。其它类型项目则需要用命令启动。例如 Cucumber-JVM
,可以用 Cucumber Reports Plugin,汇报测试结果。而其它 Frameworks 没有对应的 Jenkins 插件(像 SpecFlow
)。为了汇报结果,可将报告转换成其它格式,像 JUnit 或 MsTest。也可以通过 Jenkins 用 HTML Publisher 插件,提供基于 HTML 格式的报告,但是 HTML Publisher 插件出于安全考虑默认是禁止 JavaScript,造成报告显示不全。
任何一个 BDD 自动化框架主要有 4 部分:
尽量做到代码共享,尽管可以将所有的测试代码放在 step definitions,但强烈建议将测试代码写成共享库。Step definitions 应该尽可能最小化来达成最大化代码重复利用和最小化定位测试失败,此外 BDD 步骤可能需要执行类似的操作。
因为 Gherkin 是一个特定领域语言 domain-specific language, 尽量使用灵活实用的编辑器和集成开发工具,像其它编程语言一样。
Notepad++ 当作自定义语言一样可以处理 Gherkin Feature 文件。首先需要下载 Gherkin User-Defined Language 文件,然后在 Notepad++,通过导航 Language -> Define your language…导入下载的语言文件。当你打开一下 “.feature” 文件,就会高亮显示语法了(如果不行,检查一下语言定义设置,也可直接通过 Language 菜单关联找到 Gherkin)
Eclipse 可利用 Natural plugin 来支持 Cucumber.
IntelliJ IDEA 有 Cucumber 和 Behave 对应的插件,IDEA 运行 BDD Scenarios 不同于用命令行运行,需要额外的设置,更多细节可参考 Cucumber Document
Visual Studio 有 SpecFlow 插件,项目使用 SpecFlow 需要加额外的 NuGet 依赖包,更多细节,可阅读 SpecFlow documentation