QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

为什么 BDD 可以拯救敏捷

  • 2015-03-17
  • 本文字数:904 字

    阅读完需:约 3 分钟

在 2015 年 QCon 伦敦大会上, Cucumber Ltd 创始人 Matt Wynne 讲述了 BDD 如何利用敏捷在团队作战的优点解决缺乏预见性、沟通和质量这些常见问题的。

在与一些需要帮助的公司一起工作中,Wynne 发现他们经常会受困到上述问题之中,因为他们误解了成为敏捷、达到敏捷和某些像货物崇拜形式的敏捷实践的区别。

为了抚平常见的痛点,Wynne 提议找回那些最终丢失的敏捷特性。当团队开始将软件以组件为单位构建时,预见性就会增加;当团队在每天的基本事务中都有合作时,沟通就会更好;当技术规范能被贯彻时,质量就会提高。

接着,Wynne 从其自身角度解释了为什么 BDD 可以做到这点。

维基百科上说,

“行为驱动开发(BDD)是从测试驱动开发(TDD)中产生的软件开发过程。行为驱动开发结合了 TDD 的一般方法和原则,使用领域驱动设计和面向对象的分析和设计思路,为软件开发和管理团队提供共享工具和软件开发合作的共享过程。”

Wynne 专注于他自己对使用者预期行为上的定义。

“BDD 实践者使用对话、具体实例以及自动化测试,探索、发现、定义并得到预期的软件行为。”

他使用不确定性的锥图展示了该如何从不确定性最大的探索阶段出发,获得尽可能多的确定性。Wynne 祭出了探索之旅的三大法宝:对话、具体实例和测试驱动开发。

对话很重要,因为软件是人做出来给人用的。每个人都有一个独特的视角,而每个视角都很重要。有一种技术叫发现工场(discovery workshop),可以用来加强对话,每个用户故事都有一个“锵锵三人行(three amigos)”工场来发现场景。

具体实例很重要,让人们觉得合乎情理,具体实例植根于问题领域,有利于构建通用语言和分享事实的起源。

测试驱动开发是必选的,因为自动化测试是警示灯,不要忘记倾听测试在说什么。

Wynne 在演讲的最后出于某种原因追溯了 TDD 的根源:

“夫无代码整洁之道,岂可保持敏捷;

若无重构,焉有代码整洁之道;

然非自动化测试,何有重构哉”

查看英文原文: http://www.infoq.com/news/2015/03/bdd-save-agile


感谢夏雪对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2015-03-17 00:442766

评论

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

数据库每日一题---第3天:大的国家

知心宝贝

数据库 算法 前端 后端 6月月更

【Spring 学习笔记(四)】Spring Bean 集合注入和自动装配

倔强的牛角

spring Java EE 6月月更

700行无用 纯 CSS 祝考生 金榜高粽《1_bit 的无用 CSS 代码 》

1_bit

CSS html 前端

《WebRTC源码深入剖析》总结

音视频专家-李超

源码分析 音视频 WebRTC 源码剖析

Web Service进阶(三)HTTP-GET, HTTP-POST and SOAP的比较

No Silver Bullet

soap 6月月更 Web Service HTTP-GET HTTP-POST

Squarespace 和 WordPress 的区别

海拥(haiyong.site)

WordPress 6月月更

Web Service进阶(一)运行原理

No Silver Bullet

6月月更 Web Service 运行原理

抖音大举进军电商领域:这步棋应该如何下

石头IT视角

区块链mass哈希競猜dapp游戏开发源代码(多游戏)

开发微hkkf5566

关于 SAP Commerce Cloud 的 Sample Setup Github 仓库

汪子熙

typescript angular SAP commerce 6月月更

Linux驱动开发_数码相册项目、360WIFI驱动移植介绍

DS小龙哥

6月月更

【腾讯云代码分析】五月上新+新功能前瞻

腾源会

JavaScript迭代器

大熊G

JavaScript 前端 6月月更

以购物清单为例讲述 Redux 的状态如何在 Flutter 多个组件间共享

岛上码农

flutter 安卓开发 ios 开发 跨平台应用 6月月更

Jetpack Composes 之TextField详解

坚果

6月月更

Flink on yarn 远程调试源码

JasonLee实时计算

flink

等你加入|建木开源社区团队成员招募

Jianmu

开源社区 自动化运维 社区运营 志愿者招募

模块3作业(外包学生管理系统架构文档)

Geek_701557

外包学生管理系统

极客土豆

Sentinel与OpenFeign 服务熔断那些事

牧小农

sentinel openfeign

【LeetCode】数组中第 K 个独一无二的字符串Java题解

Albert

LeetCode 6月月更

【盲盒APP】开发功能版块及功能介绍

WDL22119

Flink 通过 State Processor API 实现状态的读取和写入

JasonLee实时计算

flink

使用 TensorFlow 和 Express.js 实现AI图像识别

devpoint

tensorflow Express 6月月更

java构造器(构造方法、构造函数)

写代码两年半

面试 javase 构造函数 6月月更

Python环境搭建

芯动大师

Python编程 6月月更 Python环境

支付系统安全设计思维导图

靠谱的程序员

支付安全

C#入门系列(五) -- 运算符

陈言必行

C# 6月月更

LabVIEW控制Arduino采集多路模拟量、数字量(进阶篇—1)

不脱发的程序猿

单片机 LabVIEW VISA Arduino Uno 采集多路模拟量、数字量

初识SDN网络

穿过生命散发芬芳

SDN网络 6月月更

学生管理系统架构文档

爱晒太阳的大白

为什么BDD可以拯救敏捷_研发效能_Rui Miguel Ferreira_InfoQ精选文章