AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

行为驱动开发使用体验

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

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

关注

评论

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

PWA 应用 Service Worker 缓存的一些可选策略和使用场景

汪子熙

typescript 前端开发 angular Service Worker 8月月更

使用类似搭积木的低代码开发方式进行 SAP API 开发

汪子熙

低代码 云平台 SAP 8月月更 low-code

Kubernetes资源编排系列之四: CRD+Operator篇

阿里云大数据AI技术

大数据 运维

一文读懂配置管理(CM)

SEAL安全

企业安全 企业it安全 代码安全

STM32F103ZE+SHT30检测环境温度与湿度(IIC模拟时序)

DS小龙哥

8月月更

在SAP分析云里根据业务数据绘制词云(Word Cloud)

汪子熙

SaaS SAP 词云 8月月更 word-cloud

Python逆向之 eval 函数解析,看着一篇就会了,案例掌房

梦想橡皮擦

Python 爬虫 8月月更

【LeetCode】受限条件下可到达节点的数目Java题解

Albert

LeetCode 8月月更

5S软件就是将软件应用全维度简单化的软件系统

BizFree

k8s 敏捷开发 软件架构 高性能 快捷调试

结合“xPlus”探讨软件架构的创新与变革

BizFree

敏捷开发 软件架构 数字化 信息化 软件定制

HMS Core分析服务智能运营6.5.1版本上线

HarmonyOS SDK

写给 Java 程序员的前端 Promise 教程

江南一点雨

Java spring 前端 springboot Promise

数据库不推荐使用外键的9个理由!

TimeFriends

8月月更

K8S之Flannel的vxlan网络模式初步源码解析

k8s flannel 签约计划第三季

自动驾驶中的SLAM

博文视点Broadview

Dapr在Java中的实践 之 服务调用

万猫学社

微服务 dapr Sidecar

鲲鹏开发者创享日2022:鲲鹏全栈创新 与开发者共建数字湖南

科技热闻

如何用建木CI构建前端E2E质量自查

Jianmu

DevOps 前端 持续集成 代码质量 自动化测试

易周金融分析 | 互联网系小贷平台密集增资;上半年银行理财子公司综合评价指数发布

易观分析

金融 分析 易周金融

转转商品系统高并发实战(数据篇)

转转技术团队

分布式 高并发

STM32的内存管理相关(内存架构,内存管理,map文件分析)

矜辰所致

内存 stm32 Flash 8月月更

分分钟快速定制您的专属个性化软件应用——BizTool自动化工具简介

BizFree

软件开发 快速开发 低代码开发 个性化 应用开发

左益豪:用代码创造一个新世界|OneFlow U

OneFlow

实习 社区之星

业务缓存之体系化设计与开发

Qunar技术沙龙

系统开发

Spring(五、注解开发)

开源 8月月更

Dapr在Java中的实践 之 环境准备

万猫学社

微服务 dapr Sidecar

Dapr在Java中的实践 之 状态管理

万猫学社

Java 微服务 dapr Sidecar

面试突击72:输入URL之后会执行什么流程?

王磊

Java 面试

以技术御风险,护航云原生 | 同创永益 X 博云举办产品联合发布会

BoCloud博云

云计算 容器 云原生

Java 在Word中合并单元格时删除重复值

在下毛毛雨

java; 合并单元格 删除重复值

开源一夏 | 牛plus,多层嵌套动态JSON该如何解析总结

知识浅谈

开源 8月月更

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