10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

介绍行为驱动开发

  • 2015-02-16
  • 本文字数:950 字

    阅读完需:约 3 分钟

当定义了新项目的期望结果后,行为驱动开发 (BDD)有助于克服开发人员对构建产品需求的理解与业务人员对需求引起的技术困难理解之间的差距。其原因是两组之间的沟通得到了改善,Alistair Stead 和 Konstantin Kudryashov 两人都在Inviqa 工作,在他们的 BDD 入门指南中针对业务和技术人员做了解释。

Stead 和 Kudryashov 把 BDD 分成了两个主要的实践:用通用语言写用例来描述行为,以及用这些用例作为自动化测试的基础。结合这两个实践就可以为用户验证其功能性,以及在整个项目周期中系统的行为与所定义的一致。

Stead 和 Kudryashov 指出的 BDD 的关键元素包括:

  • 创建目标,最好在项目开始的时候从业务的角度定义具体的,以及可衡量的目标。
  • 影响地图( Impact Mapping),是找到一种可以达到设定目标的、对业务最重要的那些功能的方法。影响地图可视化了为什么这些功能是需要的,以及为达到目标需要改变的那些行为。
  • 复杂度分析,找到一种最适合开发与合作方法的方式,例如 Cynefin
  • 用用例做计划,通过用例来描述业务规则,以及提供上下文来避免误解。这些用例接下来还应该转化成开发阶段所使用的测试用例。
  • 通用语言( Ubiquitous language,这是来自于领域驱动设计(Domain-Driven Design(DDD)) 方法的术语,指的是开发人员和业务人员为某个领域中的术语达到共同的理解,而使用的一种共享语言。
  • 通过用例开发。通过一种形式语言和类似于 Cucumber 的自动化工具实现,用例可以转化成可执行的规范,从而验证实现的功能。
  • BDD**** 循环。能够提供对系统大变更的支持。使用可执行的规范,并将单元测试作为系统的各个部分应该如何表现的对象规范,就能够获得可以处理任意大小规模变更的能力。

在一次对 Dan North (他在 2006 年左右开发了 BDD)的采访中,他强调 BDD 不是关于测试的,它是在应用程序存在之前,写出用例与期望,从而描述应用程序的行为,并且促使在项目中的人们彼此互相沟通。North 说明了保持人们互相亲近的重要性,分离式结构或跨地域团队是成功实施 BDD 一大障碍。

查看英文原文: Introducing Behaviour-Driven Development


感谢邵思华对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2015-02-16 09:534513
用户头像

发布了 55 篇内容, 共 15.6 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

备战金三银四必看:2021最新版Java春招手册(五大面试专栏)

比伯

Java 编程 架构 面试 程序人生

靠速度说话!你还不够了解的“新基建闪电侠”

脑极体

(28DW-S8-Day12) 读一份刚发布的《在线学习大数据报告》

mtfelix

大数据 28天写作

Spark支持自定义Python环境

walker12138

Docker spark k8s Jupyter Notebook

基于pandas

rainbow

||运算你真的了解吗?

叫练

运算符 java基础

产品训练营 12 课:PRD需求文档

三笠

产品训练营

【笔记】第六周-第1课

Geek_娴子

试用期没过,因在公司上了1024网站...

程序猿石头

程序员 网络安全 信息安全 个人隐私

呀,又是一个谣言「Day 12」

道伟

28天写作

git 教程 --git reset命令

生之欢愉,时间同行

git git reset

线上故障后的第一要务

鱼天翱

线上故障 问责

区块链培训哪家专业,引领区块链技术创新

CECBC

区块链

架构学习2021年03月03日(002)

张小胖

LeetCode题解:190. 颠倒二进制位,使用遮罩,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

不用代码趣讲 ZooKeeper 集群

HelloGitHub

Java zookeeper ZooKeeper原理

Synchronized升级成重量级锁之后就下不来了?你错了!

yes

Java JVM

用三个分析看,AI会是百度智能云的好“捕手”吗?

ToB行业头条

百度 #百度智能云#

翻译:《实用的Python编程》03_04_Modules

codists

Python

互联网信贷风险与大数据 个人信贷业务互联网化

张老蔫

28天写作

据说很多女性看不懂地图——视觉表象

Justin

心理学 28天写作 游戏设计

SRS流媒体服务器源码分析:Rtmp publish流程

赖猫

音视频 服务器 SRS 流媒体开发

Kubelet从人门到放弃:拓扑管理(下)

DCOS

Serverless Kubernetes 微服务 云原生 函数计算

恋物志(一):网红带货,宠主追捧,2021年宠物智能硬件会火吗?

脑极体

KMP的小记录

Geek_02fd98

KMP

死磕归并排序算法

Silently9527

算法 排序算法 快速排序

c#包含日志输出的项目搭建

happlyfox

C# 日志 28天写作 3月日更

为什么你停滞不前

ES_her0

28天写作 3月日更

Mybatis系列全解(八):Mybatis的9大动态SQL标签你知道几个?提前致女神!

潘大壮

Java 后端 mybatis 后台 mybatis源码

工作中,我们常用的Oracle内置函数有哪些?

xiezhr

oracle sql sql查询 函数 3月日更

职场中吃力不讨好?从根因上去破解

一笑

28天写作

介绍行为驱动开发_语言 & 开发_Jan Stenberg_InfoQ精选文章