BDD中的常用工具

什么是BDD?

BDD在wikipedia上定义如下:

BDD是第二代的、由外及内的、基于拉(pull)的、多方利益相关者的(stakeholder)、多种可扩展的、高自动化的敏捷方法。它描述了一个交互循环,可以具有带有良好定义的输出(即工作中交付的结果):已测试过的软件。

简单一点地说,BDD,即行为驱动开发,是通过与产品经理沟通需求,定义出满足这些需求的软件需具备的行为(Behaviour),再以这些行为为驱动(Driven),编写产品代码来实现这些行为。(Development)。BDD的出现,是为了解决测试驱动开发中常遇到的问题,比如:从哪里开始测试,应该测试什么,不应该测试什么,等等。想了解更多可参见Dan North的introducing BDD。

BDD实践所面临的问题

进行BDD实践首先要解决如下几个问题:

如何实现一个能够描述系统行为(业务价值)、非技术人员可读的测试?

如何让这个测试变得可执行?

业界对这些问题已经有了答案,JBehave, Cucumber,Concordian等BDD框架的出现,解决了这个问题。 这些BDD框架各自提供了一套DSL(Domain-Specific-Language),开发人员可以使用DSL描述业务需求,例如,

前置条件:
    用户A账户余额1000元
    用户B账户余额200元
场景:
    用户A登录系统
    向用户B转账500元
    用户A账户余额应为500元
    用户B庄户余额应为700元

同时,这些框架都依赖于Webdriver(如selenium-webdriver,watir-webdriver),BDD框架通过webdriver调用浏览器的接口,模拟用户输入,读取浏览器页面上显示的内容用于验证。

下面我们通过一个完整的例子来看看如何使用这些工具进行BDD实践的。

Cucumber与业务价值

在Behaviour Driven Development中,第一步就是把需求细分为多个任务,拿最常见的用户登录功能为例,可以划分为以下几个任务:

用户名密码匹配,登录成功

用户名或密码不匹配,登录失败

BDD强调“每一个测试需要体现出业务价值”,因此,可以把上述两个任务实现为两个场景:

Feature: User login
Background: There is a user with the following login detail:
    |    email      | password|
    | my@example.com|   test  |

Scenario: Login succeed
Given the user login with the following detail:
    |    email      | password|
    | my@example.com|   test  |
Then the user should login succeed

Scenario: Login failed
Given the user login with the following detail:
    |    email      |     password     |
    | my@example.com|   wrongpassword  |
Then the user should login failed

实际上,上面的这段代码就是使用cucumber的DSL描述的测试场景,几乎就是遵循了一定格式的英语,即使看不懂代码的产品经理、业务分析师也能够通过此文档和开发人员顺畅地交流。用Cucumber把一个需求的不同场景描述出来,也是从不同角度阐述了这个需求的业务价值。Cucumber的目标就是书写可执行的,能够表述业务价值文档。 与之类似的框架还有Concordian,JBehave等。

紧接而来的问题是:如何让文档执行起来?Cucumber提供了把业务逻辑转换为可执行代码的机制——"step definition"。请看下面的例子:

Given /^the user login with the following detail:$/ do |detail|
    #omitting code…
end

这个step definition会匹配下面这个step:

Given the user login with the following detail:
    |    email      | password|
    | my@example.com|   test  |

当Cucumber feature被执行的时候,这个step definition中的代码会被执行。那么,接下来的问题就是:如何象真实用户那样打开浏览器,输入用户名密码,点击提交按钮,验证登录是否成功。这时候,该Webdriver出场了。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索测试
, webdriver
, login
, 用户
, cucumber
, jbehave
, watir
, 业务
The
java中常用的工具类、生活中常用的工具、女性自慰家中常用工具、中餐的常用工具、中式面点常用的工具,以便于您获取更多的相关知识。

时间: 2024-09-14 19:25:46

BDD中的常用工具的相关文章

IOS开发--常用工具类收集整理(Objective-C)(持续更新)

 前言:整理和收集了IOS项目开发常用的工具类,最后也给出了源码下载链接. 这些可复用的工具,一定会给你实际项目开发工作锦上添花,会给你带来大大的工作效率. 重复造轮子的事情,除却自我多练习编码之外,就不要傻傻的重复造轮子了,还是提高工作效率,早点完成工作早点回家陪老婆孩子. 所以下面备份的常用工具类一定是你需要的. 前提:你有一定的开发经验,知道它们在开发的什么地方需要,你都不知道用在哪里,那你需要个毛啊,还是好好另外学好基础吧.少儿不宜,请离开哦. 插件目录列表:(持续更新和添加) 1.UI

关于Java常用工具您不知道的5件事

Java 常用工具,如解析.计时和声音 很多年前,当我还是高中生的时候,我曾考虑以小说作家作为我的职业追求,我订阅了一本 Writer's Digest 杂志.我记得其中有篇专 栏文章,是关于 "太小而难以保存的线头",专栏作者描述厨房储物抽屉中放满了无法分类的玩意儿.这句话我一直铭记在心,它正好用 来描述本文的内容,本系列的最后一篇(至少目前是这样). Java 平台就充满了这样的 "线头" - 有用的命令行工具和库,大多数 Java 开发人员甚至都不知道,更别提

安卓开发常用工具和第三方库汇总

本文讲的是安卓开发常用工具和第三方库汇总,我的名字叫 Ryan Cooke 我在 Pinterest 的核心体验团队工作.今天在这里我会谈论各种 Android 库:它们各自的优点,缺点和其他相关知识.目的是高效地概述尽可能多的库,这样,当你遇到一个问题的时候,你知道这是不是个已经解决的问题?什么样的方案更好?同时也能帮助你避免那些陷阱. 选择正确的库意味着你可以拥有一个已经成熟的更好的解决方案,而不是花费三个月来重新构建它.了解这些库是第一步. 我听到很多人想要实现第一个库, 我们难道不能用

《淘宝店铺设计装修一册通》一1.5 网店装修常用工具

1.5 网店装修常用工具 淘宝店铺设计装修一册通 把店铺装修好,让店铺更好看一点,更漂亮一点,这样就会在视觉上吸引顾客,给店铺带来更多的生意.网店装修常用的软件工具有Photoshop图片处理工具和Dreamweaver网页制作软件. 准确地说,网店装修属于网页设计的范畴.网店装修无外乎图片编辑.网页制作,这方面的工具有很多,不过出名的屈指可数.本书推荐使用Dreamweaver.Photoshop装修网店.Dreamweaver是制作网页的专业软件,Photoshop是图片设计方面的专业软件.

OSS常用工具汇总

  OSS除了控制台还有以下常用工具,可以帮助您更高效的使用OSS. 工具 简介 备注 OSS控制台客户端(驻云) 图像化界面工具,提供基本的Bucket管理功能.较为完备的Object管理功能. 官方推荐工具.支持win.mac平台. OSSUTIL 命令行管理工具.提供方便.简洁.丰富的Object管理命令. 官方工具,支持linux, windows, mac平台,不依赖于任何第三方组件,下载后即用不需要安装. osscmd 命令行管理工具.提供完备的Bucket.object管理命令.

关于十大黑客常用工具介绍

黑客技术一度被认为是一个神秘的特有领域,随着技术的进步和领域环境的进步,它已经成为一种非常普遍的现象.黑客技术可以用于有害目的,也可以用于发现系统中的漏洞,并通知系统属主,帮助他们更好地保护系统. 借助于一些工具及其基本知识,黑客可以更高效地执行安全测试,这对他们的任务有很大帮助.以下介绍黑客十大常用工具. 1. Nmap Nmap(Network Mapper)是一款非常著名的.用来扫描端口和绘制网络的.开源免费的黑客工具,它是一个基于控制台的工具,另外方便使用,还有一个带有GUI的版本Zen

Linux 常见的系统管理 + 网络管理 + 常用工具指令(简单的程序安装,如MySQL)

常见系统管理(凡是涉及到修改,就一定要用root权限) 轻易不要使用su去切换到root的身份 普通用户使用sudo来执行root权限的命令 如,将hadoop用户添加到sudoers文件中去 vi /etc/sudoers root ALL=(ALL) ALL hadoop ALL=(ALL) ALL 磁盘空间信息查看 df -h 查看磁盘空间状态信息 du -sh * 查看当前目录下所有子目录和文件的汇总大小 进程信息查看 free 查看内存使用状况 后面加个m 就是带个单位撒 top 查看

渗透测试工程师的17个常用工具 还有专家告诉你如何成为渗透测试人员—转载绿盟

渗透测试工程师的17个常用工具 还有专家告诉你如何成为渗透测试人员 发布时间:2017年9月15日 07:51    浏览量:2231   渗透测试 (pen testing) 是由安全专家进行的一项安全性测试,其目的是为了在攻击者攻击之前发现系统中的漏洞.它需要聪明的思考.耐心和一点点运气.此外, 大多数安全专家将需要一些具体的工具来帮助完成这项工作. 最近, 外媒跟一些民间组织和一些安全专家进行了沟通,看看他们最喜欢用哪些工具.下面的工具是那些在简单的评估.复杂的项目中曾经用过的工具,其中的

《SolidWorks 2016中文版机械设计从入门到精通》——1.3 常用工具命令

1.3 常用工具命令 1.3.1 [标准]工具栏 [标准]工具栏位于主窗口正上方,如图1-23所示. 各按钮含义如下. [新建]:单击可打开[新建SolidWorks文件]对话框,从而建立一个空白图文件. [打开]:单击可在[打开]对话框中打开磁盘驱动器中已有的图文件. [保存]:单击可将目前编辑中的工作视图按原先读取的文件名称存盘,如果工作视图是新建的文件,则系统会自动启动另存新文件功能. [打印]:单击可将指定范围内的图文资料送往打印机,执行打印出图功能或打印到文件功能. [撤销]:单击可以