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

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:404621
用户头像

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

关注

评论

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

户外交通信息led显示屏有以下特点才正规

Dylan

安装 LED显示屏 户外LED显示屏

6 理解业务概念和业务组件

涛哥 数字产品和业务架构

企业架构 业务架构

Guitar Pro8吉他软件最新版安装下载教程

茶色酒

Guitar Pro8

别再找借口了!找不到工作就好好学一下这份16W字Java面试合集

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

模块七作业

Ryan

架构

追光进行时:沿着全光运力的新航道,加速驶向算力时代

脑极体

算力

冰河指南AI技术社区基于ChatGPT正式启动运营

冰河

人工智能 程序员 AI 架构师 ChatGPT

Java高手速成 | Java web 实训之投票系统

TiAmo

Java Java web

SpringBoot 容器刷新前回调ApplicationContextInitializer

做梦都在改BUG

Java spring Spring Boot

云原生的基建:我理解的可观测性和OpenTelemetry

agnostic

可观测性 OpenTelemetry

CorelDRAW Graphics Suite2023最新版本号

茶色酒

CorelDRAW 2022 CorelDraw2023

嵌入式ARM设计编程(五) 实现信号的FIR滤波操作

timerring

arm

CleanMyMac2023测试版功能介绍

茶色酒

CleanMyMac X CleanMyMac X2023

聊聊如何利用redis实现多级缓存同步

做梦都在改BUG

Java redis 缓存 多级缓存

面试官:浅谈一下Redis分布式锁存在的问题

做梦都在改BUG

Java

CleanMyMac2023电脑版免费下载教程

茶色酒

CleanMyMac X2023

StudioOne6免费试用版下载及版本功能介绍

茶色酒

StudioOne6 StudioOne

「 Java基础-对象 」一篇文章讲清楚Java开发中如何更优雅的创建对象

小刘学编程

Java Builder 序列化 对象创建 new

chatGPT:探讨如何实现自动化测试场景

夏兮。

自动化测试 selenium ChatGPT

2023-02-17:sdl是跨平台的多媒体开发库,请问用go语言如何调用?

福大大架构师每日一题

golang 音视频 SDL 流媒体 福大大

LeetCode题解:1237. 找出给定方程的正整数解,枚举,详细注释

Lee Chen

算法 LeetCode

LeetCode题解:1237. 找出给定方程的正整数解,二分查找,详细注释

Lee Chen

JavaScript 算法 LeetCode 二分查找

LeetCode题解:1237. 找出给定方程的正整数解,双指针,详细注释

Lee Chen

LeetCode 算法、

架构训练营第10期模块7作业

Geek_4db2d5

华为游戏中心花瓣游戏开发者服务持续升级,赋能高效研运

最新动态

HashMap每次扩容时,为什么都必须是2的N次方?

做梦都在改BUG

Pandoc API 上手指南

晓鹤

阿里内部消息中间件合集:MQ+Kafka+体系图+笔记

做梦都在改BUG

Java kafka MQ 消息队列 消息中间件

盘点和总结秒杀服务的功能设计及注意事项技术体系

做梦都在改BUG

Java 秒杀系统

2023年中国直播电商发展洞察

易观分析

零售 直播 电商

架构实战营模块9作业

张建闯

架构实战营

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