写点什么

介绍行为驱动开发

  • 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:534038
用户头像

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

关注

评论

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

第九周 学习总结

简简单单

JVM垃圾回收机制是怎样的,何时触发YoungGC或FullGC操作?

Java鱼仔

Java 面试 JVM 垃圾回收

架构师训练营第四周作业

跳蚤

Mac 电脑安装Etcd和Go的etcd/clientv3

BigYoung

Mac etcd client Go 语言

Elasticsearch 乐观锁并发控制

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

HASH碰撞问题一直没真正搞懂?这下不用慌了

架构精进之路

算法 hash 七日更 28天写作

第九周 性能优化(三)课后作业

简简单单

产品经理训练营作业-第二周-产品思维和产品意识

.nil?

产品经理训练营

【CSS】格仔背景

德育处主任

html css3 大前端 CSS小技巧 28天写作

碎碎念之「卡马克的反脆弱想法生成系统」

Justin

心理学 创意 28天写作 反脆弱

新荣耀历险记:带着“神装”踏上英雄试炼路

脑极体

当情绪生病?就嫁接一段新的记忆「幻想短篇 16/28」

道伟

28天写作

产品经理训练营笔记-产品思维和产品意识(中)

.nil?

产品经理训练营

Spring Boot 中集成Lucence

武哥聊编程

Java springboot SpringBoot 2 28天写作 Lucence

2021开启数据结构与算法的学习之旅

Nick

学习 flag 新年计划

一顿午饭的现实思考

石君

28天写作 择业

项目管理系列(9)- 项目分析与报告

Ian哥

28天写作

数字货币交易所软件开发|数字货币交易所系统APP开发

系统开发

四个策略,三个“坑”,读《架构师也不写代码》有感

李忠良

28天写作

机器学习笔记之:监督学习

Nydia

如何快速提升自己的能力?高效学习让你更出类拔萃。

一笑

学习方法 28天写作

“苹果陷阱”无法避免,但我们已经在路上

JiangX

苹果 供应链 28天写作 制造业

架构师训练营第四周学习总结

跳蚤

Mysql 4种方式避免重复插入数据!

xcbeyond

MySQL MySQL使用 28天写作

原来Canal也可以做HA!

大数据老哥

28天瞎写的第二百二十七天:跨年夜的故事

树上

28天写作

网络出口究竟选择防火墙,还是路由器?

Spring Boot 中集成 Shiro

武哥聊编程

Java springboot SpringBoot 2 shiro 28天写作

一起进阶一起拿高工资!Java开发进阶-log4j2日志脱敏原理分析

看点代码再上班

Java 程序员 log4j 编程开发

区块链交易所APP开发|区块链交易所系统软件开发

系统开发

我是这样使用极客时间APP的

熊斌

极客时间 28天写作

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