写点什么

介绍行为驱动开发

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

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

关注

评论

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

精华推荐 | 【JVM深层系列】「GC底层调优系列」一文带你彻底加强夯实底层原理之GC垃圾回收技术的分析指南(GC原理透析)

码界西柚

Java JVM JVM原理 2023

WSL中使用vcpkg安装pcl库出现编译失败的原因

大伟

Best Wishes「兔」You!

阿里云CloudImagine

工信部电子标准院:龙蜥操作系统获评“优秀”

OpenAnolis小助手

工信部 开源项目 获奖 龙蜥操作系统 生态构建

复习前端:前端安全

devpoint

CSRF xss攻击 前端安全

架构误区系列11:无聊的架构归一

agnostic

架构治理

架构误区系列12:一切皆依赖云平台

agnostic

云计算 部署架构

极客时间运维进阶训练营第十二周作业

9527

开源移动核心网Magma架构设计启示

俞凡

架构 网络 通信

复习前端:浏览器缓存策略

devpoint

Service Worker 浏览器缓存 缓存技术

MySQL统计总行数:听说count(*)性能更好,是真的吗

程序员拾山

MySQL

MySQL:如果被更新字段的新值与旧值相等,SQL会被真正执行吗?

程序员拾山

MySQL

你知道哈希算法,但你知道一致性哈希吗?

JAVA旭阳

Java 架构

【Linux技术专题系列】「必备基础知识」一起探索和实践sftp配置之密钥方式登录

码界西柚

Linux SSH SSH工具 sftp

技术管理者如何获得下属的认同?

石云升

极客时间 1月月更 技术领导力实战笔记

2022年终总结-无所吊谓

wood

年终总结 稳定 开心 普通的一年

如何快速优雅的用Know Streaming创建Topic

石臻臻的杂货铺

获取 topic等信息 后端、

技术如何分担产品之忧?

石云升

极客时间 1月月更 技术领导力实战笔记

Python 内置界面开发框架 Tkinter入门篇 甲

eng八戒

Python GUI tkinter

万字长文搞懂产品模式和项目模式

俞凡

团队管理

JSON.stringify() 的 5 使用场景

devpoint

JavaScript 前端开发 JSON格式化

【Java应用服务体系】「序章入门」全方位盘点和总结调优技术专题指南

码界西柚

Java 技术分析 应用调优 优化指南

从员工批量离职中,认识管理的价值

石云升

极客时间 1月月更 技术领导力实战笔记

Kratos微服务框架API工程化指南

golang gRPC microservice Kratos 工程化

复习前端:JavaScript V8 引擎机制

devpoint

chrome JIT V8

工作这么多年,我总结的数据传输对象 (DTO) 的最佳实践

JAVA旭阳

Java 架构

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