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

行为驱动开发使用体验

  • 2016-09-13
  • 本文字数:945 字

    阅读完需:约 3 分钟

行为驱动开发(BDD)认为软件开发是现如今企业运营的根本,有助于改善企业利益相关者和软件开发者之间的沟通。 Kevin Smith 在其一篇最近的博文中介绍了他使用 BDD 的工作经验

在进行了多年的敏捷项目后,Dootrix 公司的技术总监和联合创始人 Smith 注意到了敏捷开发的一些共同缺点:

  • 由于用户故事越来越多关注于用户以及他的软件需求,这样很容易让开发者忘记商业需求。
  • 用户故事生命周期较短,因此很容易忘记一个应用程序的整体规范。
  • 由于用户故事生命周期较短,基于用户故事的验收标准往往质量较低。
  • 缺乏可以发现并解决业务问题的敏捷工具。
  • 测试驱动开发(TDD)是目前常用的一种手段,但是往往这些测试仅仅验证了细节,而没有验证功能是否正确的实现了。

根据 Smith 过往的经验,BDD 可以帮助解决这些问题,尤其是在引入实例化需求(Specification by example)以及影响地图(Impact mapping)等概念的时候。

Smith 曾经实现了一个简单的改变,他将用户故事转换为一个更加偏向于 BDD 风格的形式,他认为通过这样可以让人们将关注点转移到商务价值上,并更多讨论它:

为了 < 实现利益 >,作为一个 < 角色 >,我需要 < 功能 >。

BDD 强调要使用具体的用例来减少歧义。这些用例有助于建立共同的认识,并找到丢失的功能。当编写验收标准时,可以用正式的语言 Gherkin 来写这些用例,并可以基于这些用例进行自动化测试。

构建软件的一个常见的挑战是如何创建正确合适的文档。由于 BDD 关注于用用例来解释行为,因此可以用于自动化生成文档。这个文档与实际实现的功能同步,我们通常称其为活文档

虽然 Smith 认为 BDD 给我们带来了很多方便,但它还是存在一些潜在的缺点值得我们的注意:

  • BDD 没有涉及到用户界面,所以我们还需要使用原型和其他的工具来保证界面完好设计。
  • 有很多现成的工具可以测试编写的用例,但缺少可以管理运行哪个测试、何时运行的工具。
  • 它很难开发一个很好的自动化测试套件,在短期内它较为昂贵。

Smith 最后指出 BDD 还是一个新兴的想法,因此缺乏如同敏捷方法一般的生态环境。不过他相信这是帮助人们在搭建软件的时候更好沟通的一个好方法。为了再一次激起人们对 BDD 的关注,他引用了 BDD 的作者 Dan North 的一句话:

BDD 是促进合作并通过实例探索的一大选择。

查看英文原文 Experiences with Behaviour-Driven Development

2016-09-13 19:002314
用户头像

发布了 218 篇内容, 共 76.5 次阅读, 收获喜欢 76 次。

关注

评论

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

【epoll】epoll多路复用和Reactor设计思想

Linux服务器开发

后端 网络编程 C/C++ epoll Linux服务器开发

线程与线程池的那些事之线程篇

秦怀杂货店

Java 线程 多线程 进程 并发

造车潮

ES_her0

5月日更

Nginx基础配置-反向代理

梁龙先森

nginx 大前端

夺魁!亚马逊云科技荣膺中国数据管理解决方案领导者!

亚马逊云科技 (Amazon Web Services)

520,珍惜眼前人

数据社

520 520单身福利 520 单身福利

数据预处理&特征工程

Qien Z.

Python 5月日更

【偶尔一道ctf】xctf adword mobile easy-apk

Thrash

架构学习笔记:复杂度来源

风翱

5月日更 架构复杂度

聊聊dubbo协议

捉虫大师

高并发调优backlog多大合适?

运维研习社

nginx 运维 5月日更 并发调优

产品思维

lenka

5月日更

❤【520特别祝福篇】愿有情人终成眷属,已成眷属爱情稳固

码界西柚

爱情 5月日更 520单身福利 520 单身福利

Golang function

escray

学习 极客时间 Go 语言 5月日更

PKI系统简介

上海派拉基础研发

CA PKI

CMMI V2.0丨如何通过CMMI真正在企业中的实施规模化敏捷开发

IPD产品研发管理

软件 研发管理 CMMI

Dubbo 延迟与粘滞连接

青年IT男

dubbo

520节日快乐

IT蜗壳-Tango

5月日更

珠联壁合地设天造|M1 Mac os(Apple Silicon)基于vscode(arm64)配置搭建Java开发环境(集成web框架Springboot)

刘悦的技术博客

Java vscode spring Boot Starter JDK11 m1

Hadoop定位问题日志跟踪

InfoQ_Springup

hadoop

破茧成蝶,如何用数据之力重塑您的业务?| 云途专栏

亚马逊云科技 (Amazon Web Services)

写给大神

小梨蕊

情人节 520单身福利 520 单身福利

音频均衡器EQ

floer rivor

音视频 Eq

从技术趋势看质量赋能

BY林子

敏捷 软件测试 质量赋能

这一次,彻底搞懂 Go Cond

HHFCodeRv

Go 语言

拥有5大核心竞争力的华为云GaussDB,成SACC2021最靓那一个…

华为云开发者联盟

数据库 华为云 GaussDB 存算分离 GaussDB(for Redis)

数据挖掘从入门到放弃(七):TensorFlow和keras实现线性回归LinearRegression

数据社

机器学习 5月日更

为什么“放弃”?

Nydia

学习

父母为什么催婚,而你又在逃避什么

小天同学

婚姻 爱情 5月日更

高性能 JavaScriptの笔记(四)

空城机

JavaScript 大前端 5月日更

浪潮云洲链斩获2020-2021年度新一代信息技术创新产品殊荣

行为驱动开发使用体验_语言 & 开发_Jan Stenberg_InfoQ精选文章