QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

BDD 就是做得比较好的 ATDD 吗?

  • 2011-02-22
  • 本文字数:1095 字

    阅读完需:约 4 分钟

在行为驱动开发社区,一个老问题又以一种新的形式被提了出来:行为驱动开发(BDD)是不是就是做得比较好的验收测试驱动开发(ATDD)?尽管社区成员列举出了一些不同点,但 Dan North 呼吁大家不要去关注这种叫做“神奇”测试驱动开发的观点。

当 Dan率先介绍行为驱动开发时,他改变了在TDD 中广泛使用的语言,转而使用行为性词汇来代替测试词汇。敏捷社区中有些成员认为BDD就是“做得比较好的TDD”。目前,像 Cucumber JBehave SpecFlow 之类的工具已经比较成熟,可以在 BDD 场景中,以用户的视角描述整个系统或应用的行为,为验收测试驱动开发注入了“Given,When,Then”这样的语言。BDD 的边界还不是很清晰,社区正在再次讨论这个老问题,并问道“是什么让 BDD 变得与众不同?”。

在他的发言“如何向企业推销 BDD ”中,Dan 提出了这个问题,然后解开了 BDD 的定义,展示了如何在软件开发的不同阶段和范围内应用 BDD:

“BDD 是第二代由外至内的、基于拉动的、多利益相关者的、多尺度的、高度自动化的敏捷方法。”

Dan 也承诺在日后会对BDD 做更清晰的定义 GivWenZen 框架的作者 Wes Williams回复到

“我认为这个定义漏掉了一个关键部分,我们一直在关注协作和学习。大概是 2005 年的时候,我做过一个项目,使用了‘ATDD’,我们有类似 BDD 的目标,但没有使用 Given When Then 这样的语言。”

在 Dan 最初的 BDD 介绍中,他说正是由于测试中使用语言的水平比较低,从而促使他使用“应该”来代替“测试”。 Neel Lakeshminarayan 就这点说道

“BDD 更多的是提倡使用‘恰当的词汇’——一个重要的区别。这很微妙,但非常强大……你开始思考各种差异很大的问题。你可能会听到‘预期的行为是什么?’,而不是‘我应该测什么?’。这会让你以不同的方式去思考,因此,你会编写出截然不同的代码。”

因此不同点是什么呢?除了使用不同的语言,Dan 从更广泛的哲学角度强调了 BDD 的自我学习方面,他称之为“蓄意发现”,“而不是偶然发现”。他把蓄意忽略我们的技术、人员和过程作为目标;尽管我们尽心尽力,但我们总是忽略了这一点。然而,他让社区缩小 BDD 和 TDD,或者做得比较好的 ATDD 之间的差异,他请求道

“我想避免‘因为……,BDD 要优于 TDD’,或者更有甚者‘BDD 不同于 TDD(就如原先设想的那样),因为……’。TDD 是令人惊叹的,它最初的概念就是用于解决我一直想用 BDD 解决的问题的……它并不是做出优秀设计的唯一方法,BDD 也不是。BDD 是有关了解客户需求,并让这种对需求的逐渐理解来驱动软件开发……总是试图去获取更深入的理解。但我敢打赌,如果你问 Kent Beck 什么是 TDD,他的回答会是相同的。”

查看英文原文: BDD: ATDD done well?

2011-02-22 01:404800
用户头像

发布了 38 篇内容, 共 86555 次阅读, 收获喜欢 1 次。

关注

评论

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

如何构建 Sidecarless 模式的高性能服务网格

阿里巴巴云原生

阿里云 云原生 asm

虚拟币锁仓数字货币usdt投资理财系统开发合约代码

V\TG【ch3nguang】

虚拟货币 区块链技术开发

华为云828企业节:助力精细化运营,提升开发效率

mecchi

小程序 云主机 云服务器 网站建设 云电脑

Sentieon软件应用之公共卫生机构

INSVAST

公共卫生 基因数据分析

PrecisionFDA:多组学样本错标校正挑战赛

INSVAST

数据分析 PrecisionFDA

学习Python文件备份和恢复技术,让您的数据永不丢失!

高端章鱼哥

Python Linux

08.25 北京站|阿里云 Serverless 技术实践营( AI 专场)开放报名

阿里巴巴云原生

阿里云 Serverless 云原生

面部表情识别的技术挑战与解决方案

来自四九城儿

iStat Menus for Mac(系统活动监控器) v6.71 (1221)中文

mac大玩家j

活动监控器 活动监测软件 系统监测工具

大家都在用哪些测试用例管理平台?分析不同类型团队下的4类测试管理工具

爱吃小舅的鱼

产品经理 测试管理

富士胶片公司完成阿里云 PolarDB 数据库开源产品兼容适配

阿里云数据库开源

polarDB PolarDB for PostgreSQL 阿里云PolarDB

Apache Dubbo 和 Apache RocketMQ 邀您参与,ASF 亚洲峰会 5 张门票免费送

阿里巴巴云原生

阿里云 云原生

如何构建适合自己的DevOps软件测试改进方案

DevOps和数字孪生

DevOps

Sentieon数据质控QC模块介绍

INSVAST

数据分析 QC 质控工具

What's new in Pika v3.5.0

apache/dubbo-go

数据库 redis kv Redis 7 KV存储

面部表情识别技术在社交互动中的应用

来自四九城儿

2023-08-24:请用go语言编写。给定一个长度为n的数组arr, 现在你有一次机会, 将其中连续的K个数全修改成任意一个值, 请你计算如何修改可以使修改后的数 列的最长不下降子序列最长。 请输出

福大大架构师每日一题

福大大架构师每日一题

Grafana可观测性grpc长链接处理

盈米基金

gRPC 可观测性 Grafana

数据分析实战│时间序列预测

TiAmo

数据挖掘 算法 数据分析

从孤勇者到边缘云行业翘楚,网心科技做对了什么?

网心科技

一文读懂 Nuxt.js 服务端组件

树上有只程序猿

React nuxt

茶桁的AI秘籍 - 人工智能数学基础篇 导言

茶桁

人工智能 数学 math

虚拟币商城数字货币交易分红模式系统开发[流程框架]

V\TG【ch3nguang】

数字货币交易平台开发 虚拟货币

Sentieon发布RNAseq加速分析方案

INSVAST

数据分析 基因测序 RNAseq

微服务引擎 MSE 全新升级,15 分钟快速体验微服务全栈能力

阿里巴巴云原生

阿里云 微服务 云原生

八月更新 | CI 构建计划触发机制升级、制品扫描 SBOM 分析功能上线!

CODING DevOps

Lightroom Classic 2023 mac中文激活版 照片处理软件lrc2023功能

mac

苹果mac Windows软件 Lightroom Classic 2023 lrc2023

提升UMI分析精度和计算效率:Sentieon UMI分子标记处理模块

INSVAST

umi 基因数据分析 技术服务

小灯塔系列-中小企业数字化转型系列研究——协同OA测评报告

向量智库

面部表情识别技术的神经科学基础

来自四九城儿

Go语言协程池实现第二弹

FunTester

BDD就是做得比较好的ATDD吗?_研发效能_Elizabeth Keogh_InfoQ精选文章