写点什么

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

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

关注

评论

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

有了国产 DevOps 工具 ,还怕数字化转型成本高?

SoFlu软件机器人

一文读懂字节跳动“埋点验证平台”

字节跳动数据平台

字节跳动 数据治理 埋点治理 数据研发 埋点验证

面试官:Redis 大 key 要如何处理?

Java永远的神

Java 数据库 redis 程序员 面试

手把手教你设计一个全局异常处理器

了不起的程序猿

java程序员 异常处理 java 编程 spring-boot

Arco Vue + Flask 手把手实战开发一测试需求平台

MegaQi

测试平台开发教程 签约计划第三季 8月月更

再迎巅峰!阿里爆款分布式小册开源5天Github已73K

冉然学Java

架构 分布式 微服务 java; 编程、

赶紧收藏!!!我直接上瘾!百万人都在学的Docker

指剑

签约计划第三季 8月月更

【Redis】redis安装与客户端redis-cli的使用(批量操作)

石臻臻的杂货铺

redis' 8月月更

Docker到底是什么,能干什么?这一篇文章全部给你解释清楚了

Java永远的神

Java Docker 程序员 面试 云原生

开源一夏 | 自己画一块ESP32-C3 的开发板(PCB到手)

矜辰所致

开源 硬件设计 8月月更 ESP32-C3

优雅地实时检测和更新 Web 应用

领创集团Advance Intelligence Group

Web Web应用

SpringMVC(一、快速入门)

开源 springmvc 8月月更

从零开始,如何拥有自己的博客网站【华为云至简致远】

IT资讯搬运工

linux 文件权限控制

兆骑科创赛事服务平台对接,海内外高层次人才引进

兆骑科创凤阁

华为云弹性云服务器ECS使用【华为云至简致远】

IT资讯搬运工

弹性云服务器ECS

电商秒杀系统架构设计

泋清

#架构训练营

兆骑科创创业赛事活动举办平台,投融资对接,线上直播路演

兆骑科创凤阁

web前端培训班哪个好选择

小谷哥

湖北钠斯网络数字藏品交易系统

开源直播系统源码

NFT 数字藏品

leetcode 155. Min Stack最小栈(中等)

okokabcd

LeetCode 数据结构与算法 栈和队列

客户案例 | 提高银行信用卡客户贡献率

易观分析

金融 银行 分析 客户

直播卖货APP——为何能得到商家和用户的喜欢?

开源直播系统源码

软件开发 语聊房 直播系统 直播源码

什么是低代码开发?大家都真的看好低代码开发吗?

优秀

低代码开发

大数据培训课程哪个好呢?

小谷哥

基于微信小程序的幼儿园招生报名系统开发笔记

CC同学

IT故障快速解决就用行云管家!快速安全!

行云管家

运维 IT运维 行云管家

跟我一起了解云耀云服务器HECS【华为云至简致远】

IT资讯搬运工

云服务器

设计一个跨平台的即时通讯系统(采用华为云ECS服务器作为服务端 )【华为云至简致远】

IT资讯搬运工

云服务器ECS

零基础培训学习大数据课程

小谷哥

【Redis】位图以及位图的使用场景(统计在线人数和用户在线状态)

石臻臻的杂货铺

redis' 8月月更

国产堡垒机品牌哪家好?功能有哪些?咨询电话多少?

行云管家

运维 堡垒机 运维审计 国产堡垒机 堡垒机品牌

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