NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

评论

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

使用PaddleNLP打造精准文献检索系统,看万方系统升级放大招!

百度大脑

人工智能 nlp 飞桨

爬虫初探: 重定向处理与新闻明细页解析

程序员架构进阶

Python 实战问题 9月日更 spider

Flutter 多引擎支持 PlatformView 以及线程合并解决方案

字节跳动终端技术

字节跳动 大前端 跨平台 火山引擎

低代码在这些方面充满优势

低代码小观

程序员 低代码 企业管理 开发平台 低代码开发

【Vuex 源码学习】第二篇 - vuex 插件安装 install 逻辑

Brave

源码 vuex 9月日更

多线程环境下,程序运行真是危机四伏

Java 架构 面试 后端 多线程

跟着我乔鲁诺学面试(大误)

姬翔

9月日更

百分点认知智能实验室:智能校对的技术原理和实践

百分点科技技术团队

数据湖特点

奔向架构师

数据湖 9月日更

T-TDSQL的核心理念,为数据赋能

腾讯云数据库

数据库 tdsql

挑战进阶教程,和MindSpore更近一步!

Geek_6cdeb6

mindspore

【直播预告】从校园学习到职场实践——淘系技术开学季特别分享系列

阿里巴巴大淘宝技术

程序员 应聘tips

☕【JVM 技术指南】「理论总结笔记」Java 虚拟机垃圾回收认知和调优的"思南(司南)"【下部】

洛神灬殇

ZGC JVM G1垃圾回收器 9月日更

内网渗透攻击技术的利用

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

Vue进阶(幺幺幺):实现浏览器全屏

No Silver Bullet

Vue 9月日更

JS完美收官之——闭包

法医

9月日更

被腾讯问蒙的各种Redis复杂问题

hanaper

【架构实战营作业】模块三:学生管理系统架构设计文档

聆息

区块链将帮助监管科技突破壁垒,刺激金融市场的监管活力

CECBC

T-TDSQL的典型应用

腾讯云数据库

数据库 tdsql

GaussDB(for MySQL)如何快速创建索引?华为云数据库资深架构师为您揭秘

华为云数据库小助手

华为云 GaussDB 华为云数据库 GaussDB(for MySQL)

学生管理系统详细设计

缘分呐

设计 学生管理系统架构

推荐一个Mac端的截图工具

IT蜗壳-Tango

9月日更

深入理解 Linux 的 epoll 机制及epoll原理

Linux服务器开发

网络编程 epoll Linux服务器开发 IO多路复用 Linux后台开发

阿里菜鸟+腾讯IEG面经(阿里5面,腾讯8面)无限秽土转生

Java 程序员 架构 面试 计算机

多租户的共享与隔离

金蝶天燕云

云计算 多租户

如何利用极狐GitLab CI/CD 完成 Jenkins 的迁移

极狐GitLab

CI/CD #GitLab

关于技术团队搭建&管理的一些思考

LigaAI

团队管理

JVM专题01-类加载机制详解

JustRunning

javacore JVM 深入理解JVM Java类加载

影像篡改与识别(三):人工智能时代

腾讯安全云鼎实验室

AI 影像识别

Python——Map-Reduce

在即

9月日更

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