AICon议程上新60%,阿里国际、360智脑、科大讯飞、蔚来汽车分享大模型探索与实践 了解详情
写点什么

测试驱动开发?还是测试驱动需求?

  • 2007-11-21
  • 本文字数:753 字

    阅读完需:约 2 分钟

从哪开始练习测试驱动开发?和需求一起,还是设计?或者是另一种方式,自顶向下或向底向上?当你不用代码写第一个测试时,这个测试应该怎么表现出来呢?在敏捷社区中,这两种方法都被实践过,但在如何提供更大的价值这一点上没有达成一致。

Kinderman 和一些 rails 开发者交谈中,问他们使用什么样的方法,是自底向上的 TDD 呢,还是自顶向下的 TDD ?他期望每个人都从自顶向下——也就是说,从需求开始,为需求写测试,然后构建一个系统来满足且仅满足这些需求(这也就是行为驱动开发(BDD))。但令他惊讶的是,他发现几乎所有人都采用从底向上的方式。

“自底向上”这种方式存在的问题是:直到实现了调用者(clients)后,才知道这个调用者真正需要什么组件。而为了实现这些调用者,开发人员还要想这些使用者是如何被它们的调用者所使用的。这使我们会一直追溯到设计的顶点!真希望开发者深思熟虑以后,他们能写出一套完整的测试,来测试那个能够直接解决调用者需求的组件。但是,根据我的经验,这是非常罕见的。事实上,对于它的调用者来说,这些低层组件实现的功能很难用,要么太多,要么太少,要么太笨拙,要么太复杂。

正如 Ryan 所述,这似乎是要么都做,要么都不做。可是,另外一些人写功能测试(或自动化验收测试)也有很长时间了,而且是先写测试。这种方式有时被叫作故事驱动开发测试驱动需求(TDR), 或行为驱动开发(BDD)。那些使用测试驱动开发(有自底向上的,也有自顶向下的)来实践这种方式的人发现,这样不仅提高质量,而且有助于在客户、开发人员和测试人员之间建立社会性文化。
那么,你怎么做 TDD 呢?你用自顶向下方式,还是自底向上?你的团队用 TDR 吗?你用哪种方式呢?还是两种都用?最重要的一点,你这么做的目标是什么?

查看英文原文: Test Driven Development or Test Driven Requirements?

2007-11-21 00:351396
用户头像

发布了 100 篇内容, 共 21.7 次阅读, 收获喜欢 5 次。

关注

评论

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

「架构师训练营 4 期」 第四周 - 001

凯迪

第4周总结-系统架构

潘涛

架构师训练营 4 期

CSS(二)——CSS核心基础

程序员的时光

CSS 程序员 七日更 28天写作

第二次作业

秦挺

C++静态链接符号冲突的几种处理方法

ElvinYang

商务部CECBC区块链专委会副主任、数字经济商学院院长吴桐:建立完善稳健的基础设施 加速区块链与产业深度融合

CECBC

区块链

Dockerfile ENV 使用指南

K8sCat

Docker Dockerfile ENV ARG

算法:匹配有效的括号,Swift 5中UITest从入门到精通, Swift 5 Viper Template,极客大学产品经理训练营 产品思维和产品意识, John 易筋 ARTS 打卡 Week 36

John(易筋)

ARTS 打卡计划 极客大学产品经理训练营 Swift 5 UITest Swift 5 Viper Template

老师讲的真棒!2021Android精选面试实战总结整理,分享PDF高清版

欢喜学安卓

android 程序员 面试 移动开发

Scrum Patterns:Sprint计划会(译)

Bruce Talk

敏捷 译文 Agile Scrum Patterns

重学JS | ES6既有Set,为啥还要有Weak Set?

梁龙先森

JavaScript 大前端 编程语言 28天写作

第4周课后练习-系统架构

潘涛

架构师训练营 4 期

“区块链+产业应用”系列研讨会首场“大健康产业篇”在深圳举行

CECBC

健康产业

架构师训练营 4 期 第4周

引花眠

架构师训练营 4 期

Nginx架构赏析

旺旺

nginx 架构 中间件

企业是如何选择技术栈来做离线数仓

大数据老哥

人民日报——大力发展数字经济

CECBC

数字经济

「产品经理训练营」作业02:利益相关方识别

狷介

产品经理训练营

深入理解MVCC与间隙锁

林一

MySQL MVCC

能源革命背后的牛公司 (28天写作 Day16/28)

mtfelix

28天写作 能源革命

关于价值、目标、任务的思考

L3C老司机

优雅编码 | 18个Javascript代码的小技巧

devpoint

代码优化 优雅

高效学习:如何学得更快更好

石云升

学习 28天写作

「产品经理训练营」第二章作业

Sòrγy_じò ぴé

产品经理训练营 极客大学产品经理训练营 产品训练营

五分钟学会模板模式

田维常

mybatis

自动泊车初步了解 (28天写作 Day17/28)

mtfelix

自动驾驶 28天写作 自动泊车

区块链交易所APP开发|区块链交易所系统软件开发

系统开发

虚拟币钱包APP系统开发|虚拟币钱包软件开发

系统开发

产品 0 期 - 第二周作业

Jxin

一文带你读懂:设计模式的六大原则

后台技术汇

28天写作

泪目!为什么Flutter能最好地改变移动开发?成功收获美团,小米安卓offer

欢喜学安卓

android 程序员 面试 移动开发

测试驱动开发?还是测试驱动需求?_研发效能_Amr Elssamadisy_InfoQ精选文章