2025 AI基础设施风向标,不看必后悔!#AI基础设施峰会 了解详情
写点什么

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

评论

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

一位 sealer maintainer 的心路历程

阿里巴巴云原生

阿里云 开源 云原生 sealer

「阿里云 RocketMQ 系列公开课」重磅来袭!

阿里巴巴云原生

Apache 阿里云 RocketMQ 云原生 直播

基于ResNet50实现宫颈细胞病变分类

逝缘~

分类神经网络 7月月更

几种跨平台方案的对比

Geek_99967b

小程序 跨平台

【Docker 那些事儿】关于Namespace隔离机制的奥秘

Albert Edison

Docker Kubernetes 容器 云原生 7月月更

mac 本地安装spark

飞哥

大数据 spark 数据仓库

深度揭秘阿里云函数计算异步任务能力

阿里巴巴云原生

阿里云 Serverless 云原生 异步 函数计算

新星计划Day5【数据结构与算法】 链表

京与旧铺

7月月更

小程序容器对工业互联网平台建设的加速的体现

Geek_99967b

小程序

小程序遇上Flutter 3.0

Geek_99967b

flutter 小程序

动态广播发送流程

北洋

android 7月月更

深入浅出 eBPF|你要了解的 7 个核心问题

阿里巴巴云原生

阿里云 云原生 k8s ebpf

阿里云架构师马继雨:云超算解决方案全面助力生命科学行业普惠增效

阿里云弹性计算

高性能计算 生命科学 EHPC

一款代替Typora的软件---MarkText

IT蜗壳-Tango

7月月更

mac 本地hive2 安装

飞哥

大数据 hadoop hive

分布式——Maven多模块管理

Java学术趴

7月月更

Istio整体架构解析

阿泽🧸

istio 7月月更

浅入浅出Mybatis(二)

ES_her0

7月月更

使用 doscify 将文章写成文档一般丝滑

宁在春

GitHub Pages docsify 7月月更

编译器优化那些事儿(4):归纳变量

openEuler

openEuler 毕昇 JDK 开源操作系统 编译器 加速器 编程语言

机器学习-西瓜书小记

AIWeker

机器学习 7月月更

hive on spark 和 spark on hive

飞哥

大数据 spark hive

微服务与Kubernetes容器云的边界

穿过生命散发芬芳

微服务 7月月更

6. 对象存储

MASA技术团队

C# .net 对象存储 框架 Framework

长安链研究笔记-证书生成工具

长安链

【刷题记录】8. 字符串转换整数 (atoi)

WangNing

7月月更

设计稳定的微服务系统时不得不考虑的场景

阿里巴巴云原生

阿里云 微服务 云原生 OpenSergo

redis安装

想要飞的猪

Flutter 实现小姐姐渐现动画效果

岛上码农

flutter ios 前端 安卓开发 7月月更

避坑:@Around与@Transactional混用导致事务不回滚

Paul

Spring Boot 2 事务失效 spring aop Java’

普通二本院校如何从所谓的从寒冬破冰?

KEY.L

7月月更

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