写点什么

行为驱动开发使用体验

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

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

关注

评论

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

读scss/sass实例项目带你入门

devpoint

SASS scss css预处理器

《分布式系统设计》(1) 从程序思维到系统思维

陈皓07

你看起来很美味?独家揭露视频推荐系统AI秘方

脑极体

计算机原理学习笔记 Day4

穿过生命散发芬芳

计算机原理 4月日更

Python模拟MOBA手游(三)

Bob

Python Python 游戏编程 4月日更

InheritableThreadLocal源码解析,子线程如何获取父线程的本地变量?

徐同学呀

ThreadLocal Java源码

真假敏捷教练

escray

面试 面经 4月日更

不确定的海浪中,更需要数字化转型的定海神针

脑极体

Spark测试用例生成apache iceberg结果

聚变

大数据 iceberg

Java编辑器

ベ布小禅

4月日更

Linux 下的Zabbix Agent 安装

耳东@Erdong

Linux zabbix 4月日更

cat监控http请求-CatFilter

Java个体户

监控 cat

微信被单删或拉黑?这两个免打扰检测方法你要知道。

彭宏豪95

微信 工具 社交 数据备份 4月日更

颜色值JavaScript换算(HSV、RGB、十六进制颜色码)

空城机

JavaScript 大前端 颜色值换算

从程序员角度看湖南电信网络全崩,如何防范服务器被攻击以及解决方案

北游学Java

Java 网络安全 网络 服务器

「MySQL」深入理解事务的来龙去脉

学Java关注我

Java 编程 架构 程序人生 软件架构

《分布式系统设计》(2) 关键概念和基本问题

陈皓07

《中寰卫星导航项目管理部负责人卜钢:智能网联行业的问题与前景》(采访提纲):

谙忆

感谢Github帮我斩获了8家大厂Offer

Java架构师迁哥

升级版数字人民币试点在深启动 这次有啥不一样?

CECBC

数字人民币

三分钟热度的你,不会得到你想要的结果

小天同学

坚持 日常感悟 4月日更 专心 个人思考

重读《重构2》- 内联函数

顿晓

重构 4月日更

用吃解决生活问题

石云升

读书笔记 好好吃饭 28天写作 4月日更

树莓派安装pytorch

IT蜗壳-Tango

4月日更

Coinbase上市在即,这里有你想知道的一切

CECBC

比特币

余额宝|三年开发|一二三四+HR面面经,已拿offer|

Java架构师迁哥

JVM-技术专题-MAT解析OOM问题

洛神灬殇

JVM

完美的,从不空口说白话,140个案例带你深入理解微服务

Java架构师迁哥

升级JDK到1.8笔记

风翱

jdk8 4月日更

Scrum Patterns:小团队(译)

Bruce Talk

敏捷开发 译文 Agile Scrum Patterns

一个可递归遍历的Vue树型组件

空城机

JavaScript vue.js 大前端 4月日更

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