写点什么

介绍行为驱动开发

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

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

关注

评论

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

一入“远程”终不悔,几人欢喜几人愁。| 社区征文

法医

初夏征文

简述服务量化分析体系

阿泽🧸

7月月更 量化分析

一个漂亮的API文档生成工具

为自己带盐

7月月更

Python 入门指南之开胃菜

海拥(haiyong.site)

7月月更

毕业总结

大眼喵

「架构实战营」

聊聊支付流程的设计与实现逻辑

Java 架构

模块九作业

天琪实刚亮

架构实战营 - 第 6 期 模块九之毕业设计

乐邦

「架构实战营」

浅谈一篇优质的小红书文案需要具备什么

石头IT视角

架构实战营 - 第 6 期 毕业总结

乐邦

「架构实战营」

SpingCloud集成zookeeper实现服务注册并访问

AI乔治

设计电商秒杀系统

Jadedev

「架构实战营」

疫情远程办公经验分享| 社区征文

乌龟哥哥

7月月更

【愚公系列】2022年7月 Go教学课程 002-Go语言环境安装

愚公搬代码

7月月更

牛客java选择题每日打卡Day5

京与旧铺

7月月更

leetcode 121 Best Time to Buy and Sell Stock 买卖股票的最佳时机(简单)

okokabcd

LeetCode 动态规划 算法与数据结构

设计电商秒杀系统

大眼喵

「架构实战营」

分布式CAP理论

源字节1号

软件开发 后端开发

架构训练毕业设计+总结

小马

#架构训练营

资深开发人员告诉你,怎样编写出优秀的代码?

雨果

程序员 软件 开发者 代码

远程办公之大家一同实现合作编辑资料和开发文档 | 社区征文

Tech技术攻关

远程办公 协同办公 7月日更 初夏征文

远程办公之如何推进跨部门项目协作 | 社区征文

Tech技术攻关

远程办公 7月日更 项目协调 初夏征文 工作协调

疫情常态化大背景下,关于远程办公的思考|社区征文

如浴春风

初夏征文

TCP拥塞控制详解 | 3. 设计空间

俞凡

算法 网络 TCP拥塞控制

自动渗透测试工具核心功能简述

穿过生命散发芬芳

渗透测试 7月月更

远程办公工具分享|社区征文

如浴春风

初夏征文

【LeetCode】在每个树行中找最大值Java题解

Albert

LeetCode 7月月更

毕业总结

天琪实刚亮

NFT新的契机,多媒体NFT聚合平台OKALEIDO即将上线

股市老人

【安全攻防】序列化与反序列,你了解多少?

网络安全学海

黑客 网络安全 安全 信息安全 渗透测试

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