写点什么

为什么 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:442698

评论

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

分布式计算MapReduce究竟是怎么一回事?

JAVA旭阳

Java 大数据

Python抓取B站"卡塔尔 世界杯"的视频数据

勇士

Python 爬虫 B站 世界杯

深入理解RBAC

俞凡

架构 网络安全 rbac

【工具使用】eclipse来回切换项目的JDK版本的方法(最全的)

No8g攻城狮

eclipse jdk jdk8 JDK7

易观分析苏筱芮:数字科技创新场景应用为王,驱动金融与实体经济同频发展

易观分析

金融

FLStudio水果2024中文免费版下载

茶色酒

FL Studio FL Studio21

CleanMyMac2024值不值的下载安装?

茶色酒

CleanMyMac X CleanMyMac X2023

作者推荐 | 【分布式技术专题】「架构设计方案」图解学习法总结集群模式下的各种软负载均衡策略实现及原理分析

洛神灬殇

分布式架构 负载均衡算法 12月日更 12 月 PK 榜

模块二作业

Ryan

高性能 构架

在 Ubuntu 上安装 Discourse 开发环境

HoneyMoose

易观分析《中国智能客服供应商实力矩阵2023》研究报告正式启动

易观分析

智能客服 易观分析

还在用Jenkins?试试这款面向DevOps的自动化部署工具吧,贼带劲!

架构师之道

开源 编程

我不写单元测试,被批了

钟奕礼

Java 程序员 java面试 java编程

Verilog 编译指令

芯动大师

Verilog语法 Verilog编译指令

同事跳槽拿下阿里P6Offer,程序员:会点基础还真不行

钟奕礼

Java 程序员 java面试 java编程

基于ANTLR的Mysql语法解析

AiDaddy

MySQL ANTLR 语法解析

纯干货,不愧是阿里顶配版Spring Security笔记,面面俱到太全了!

架构师之道

Java spring 架构师

不掌握这些坑,你敢用BigDecimal吗?

钟奕礼

Java 程序员 java面试 java编程

线性表→顺序表→链表 逐个击破

C++后台开发

数据结构 linux开发 Linux服务器开发 顺序表 C++开发

三年Crud,一周学会MySQL,助我拿到阿里研发Offer

钟奕礼

程序员 java面试 java编程 #java

理解Java的强引用、软引用、弱引用和虚引用

钟奕礼

Java 程序员 java面试 java编程

第十届MTSC上 OpenHarmony与开发者共话开源操作系统发展新格局

Geek_2d6073

流处理基础概念-延迟和吞吐

穿过生命散发芬芳

流处理 12月月更

CleanMyMac2023mac电脑清理磁盘软件

茶色酒

CleanMyMac CleanMyMacX CleanMyMac X

没有二十年功力,写不出Thread.sleep(0)这一行“看似无用”的代码!

钟奕礼

Java 程序员 java面试 java编程

太卷了!5年Java程序员竟然答不出应届生字节二面?

小小怪下士

Java 程序员 字节跳动 面试

【Java难点攻克】「NIO和内存映射性能提升系列」彻底透析NIO底层的内存映射机制原理与Direct Memory的关系

洛神灬殇

内存映射 用户态 内核态 12 月 PK 榜 直接内存

SpringBoot+Mybatis+Mysql项目构建

@下一站

程序设计 12月日更 12月月更 springbootdemo

easyrecovery2024永久免费版数据恢复软件

茶色酒

EasyRecovery15 easyrecovery2023

发布!第五届“强网”拟态防御国际精英挑战赛精彩抢先看!

科技热闻

使用声网 SDK 构建 Piloteer 助盲服务平台的最佳实践

声网

音视频 人工智能’ SDK 教程

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