打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
测试工程师应知应会之行为驱动测试BDD

很多工程师都了解测试驱动开发(Test Driven DevelopmentTDD,但是了解行为驱动开发的人却不是很多。

行为驱动开发(Behavior Driven DevelopmentBDD,是测试驱动开发的延伸,旨在使用简单的,特定于领域的脚本语言(软件外包行业的最大问题?从领域驱动设计说起),通过结构化的方法,将自然语言文本转换为可执行的测试用例。从而在技术与实际的业务需求者之间,建立起一条易于理解的道路。这样,不理解程序员们正在做什么的业务方,就可以更容易的理解他们的工作。

在行为驱动开发中,最关注的核心是业务的设计。而测试驱动开发,则更关心是的使用代码来描述测试用例。因此,在行为驱动开发相关的框架中,采用了多种技术手段,构造自然语言与代码之间的连接关系,使得关注于业务逻辑的使用者,能够使用更容易理解的语言,向测试代码下达他们的指令。

下面我们通过当前最为流行的BDD 框架JBehave来介绍一下BDD对于这种设计的实现。

JBehave中,完全一个测试用例需要5个步骤。

一、编写测试用例

JBehave中,一个测试用例由一系列场景(Scenario)组成。而一个场景的编写,需要符合JBehave定义的语法格式。主要格式内容如下:

Story := Description? Meta? Narrative? GivenStories? Lifecycle? Scenario+ ;

Narrative:= "Narrative:" ( InOrderTo AsA IWantTo | AsA IWantTo SoThat ) ;

InOrderTo:= "In order to" NarrativeElementContent ;

IWantTo:= "I want to" NarrativeElementContent ;

SoThat:= "So that" NarrativeElementContent ;

NarrativeStartingWord := ("In order to" | "As a" | "I want to" | "So that") ;

GivenStories:= "GivenStories:" (StoryPath ','?)+ ;

Lifecycle:= "Lifecycle:" LifecycleBefore? LifecycleAfter? Examples?

LifecycleBefore:= "Before:" (Scope? Step+)+

LifecycleAfter:= "After:" (Scope? Outcome? MetaFilter? Step+)+

Scope:= "Scope:" "STEP" | "SCENARIO" | "STORY"

Outcome:= "Outcome:" "ANY" | "SUCCESS" | "FAILURE" ;

在语法格式中,规定了一个测试用例的写法,以及其中特定的关键字,而这种写法力图贴近于自然语言,并且能够被框架所解析。

二、将测试用例映射到Java

编写好测试用例之后,JBehave会将测试用例映射成Java。这种映射主要通过RegexStoryParser(正则表达式)或者是GherkinStoryParser这两种解析器来实现。

通过类似于

@Given("a stock of symbol $symbol and a threshold of $threshold")
public void stock(String symbol, double threshold) {
stock = new Stock(symbol, threshold);
}

的方式,可以将测试用例中的输入映射进Java函数的输入参数中,尽管保持入参的名字和@Given语句中的参数名字一致是一种好的习惯,但是JBehave是按照参数的顺序来赋值的,并不要求名称完全一致。

三、配置测试用例

JBehave的核心是配置的嵌入类,这是提供给IDE的可执行入口,通过执行该嵌入类,系统可以调用框架的相关方法,从而能够完成JBehave提供的相关功能。

JBehave提供的可嵌入类主要有ConfigurableEmbedderInjectableEmbedder两种。

四、运行测试用例

配置好嵌入类之后,就可以通过JUnitIDE或者是命令行中运行测试用例了。

五、查看报告

测试用例执行完毕之后会给出测试报告,JBehave提供了多种测试报告可供使用,包括控制台、文本文件、XML文件、HTML页面等。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
你不可不知的敏捷测试:定义,原则,方法和生命周期(个人总结)
行为驱动开发:一篇文章带你用 Python 玩转 BDD
到底谁应该对软件开发的质量负责?
[转帖]一文告诉你ATDD,TDD,BDD的区别
TDD、BDD、ATDD、DDD 软件开发模式
写好BDD测试用例 —— 羊头、蜂腰、蝎尾
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服