写点什么

行为驱动开发使用体验

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

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

关注

评论

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

如何提高一个研发团队的“代码速度”?

阿里技术

技术管理 技术人生 内容合集

优秀工程师必备的一项技能,你解锁了吗?

阿里技术

技术管理 技术人生 内容合集

一周信创舆情观察(12.13~12.19)

统小信uos

互联网行业办理过等保业务,选择哪款堡垒机好?

行云管家

互联网 网络安全 堡垒机 云堡垒机

如何做好技术 Team Leader?

阿里技术

技术管理 技术人 内容合集

短视频如何有效去重?vivo 短视频分享去重实践

Zilliz

数据库 Milvus Zilliz

Linux云计算有那么难学吗?Linux入门篇。系统常用函数的调用方法大全

学神来啦

MySQL nginx Linux Shell linux云计算

MySQL从入门到入魔之数据库连接池(04)

海拥(haiyong.site)

MySQL 数据库 28天写作 12月日更

为企业创建完美CRM系统策略

低代码小观

企业管理 CRM 客户关系管理 CRM系统 客户关系管理系统

OPPO大数据离线任务调度系统OFLOW

安第斯智能云

后端 数据

Typora + picGo实现插入图片上传gitee图床

zdd

互联网时代,谁来保护我们的个人隐私信息?

郑州埃文科技

数据库 App IP 个人信息

拍乐云发布“融合语音通话”产品,实现多场景下VoIP和PSTN互通

拍乐云Pano

RTC PSTN VoIP 融合语音通话

CSS之变量(四)悬浮跟踪按钮

Augus

CSS 12月日更

自用学习资料,Linux内核之【内存管理】的一些分享

奔着腾讯去

内存泄露 C/C++ Linux内核 内存映射 内存池

如何成为优秀的技术主管?你要做到这三点

阿里技术

技术管理 技术人生 内容合集

架构实战-模块七-作业

无名

架构实战营 「架构实战营」

面对复杂业务,if-else coder 如何升级?

阿里技术

技术人生 内容合集

Python代码阅读(第71篇):检测一个平坦列表中是否有重复元素

Felix

Python List 编程 阅读代码 Python初学者

在阿里做了五年技术主管,我有话想说

阿里技术

技术人生 内容合集

Linux环境变量配置

恒生LIGHT云社区

Linux 运维 环境配置 环境变量

RPA的定义

金小K

RPA 自动化 自动化平台 自动化运维

毕业10年才懂,会升层思考,工作有多轻松?

阿里技术

技术管理 技术人生 内容合集

为什么大部分人做不了架构师?这2点是关键

阿里技术

技术人生 内容合集

上百台linux服务器管理用什么软件好?谁给推荐一下!

行云管家

Linux 服务器 服务器管理

在高并发环境下该如何构建应用级缓存

华为云开发者联盟

缓存 高并发 负载 应用级缓存 缓存命中率

一文带你了解什么是GitOps

华为云开发者联盟

DevOps 运维 测试 软件开发 gitops

在阿里,我如何做好技术项目管理?

阿里技术

技术管理 技术人生 内容合集

华为超大云数据中心落地贵州,这些硬核技术有利支撑“东数西算”

华为云开发者联盟

服务器 数据中心 华为云 东数西算 云数据中心

7 个建议让 Code Review 高效又高质

阿里技术

技术管理 技术人生 内容合集

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