9 月 13 日,2025 Inclusion・外滩大会「开源嘉年华」正在限量报名中! 了解详情
写点什么

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

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

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

关注

评论

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

三星堆遗址

wood

300天创作 三星堆

🏆【Alibaba中间件技术系列】「RocketMQ技术专题」带你一起去探索RocketMQ服务架构的线程模型分析

码界西柚

RocketMQ SpringCloud Alibaba Alibaba技术 Apache RocketMQ

科尼数字科技张彬:云设计系统助力行业数字化转型

阿里云弹性计算

阿里云 弹性计算 年度峰会

(1-3/3)团队OKR的设定

mtfelix

300天创作 无限生长 2022Y300P

今晚直播:展望2022,操作系统将走向何方?

OpenAnolis小助手

操作系统 国产操作系统 龙蜥社区

DevEco Device Tool 3.0 Beta2新版本发布,新增可视化Trace工具和Perf性能分析工具

HarmonyOS开发者

OpenHarmony

浅谈ThinkPH5.0和5.1的反序列化利用链分析

网络安全学海

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

Python猫 2021 文章小结,翻译竟比原创多!

Python猫

Python

Java后端学习笔记

SBB

Java 学习笔记 学习路线

JVM到底该学些什么?

蝉沐风

JVM 虚拟机 学习路线

基于区块链和web3.0的全新社交协议Coo Social首发上线虎符创新区

区块链前沿News

Hoo 虎符交易所 coo Web3.0

Elasticsearch 多种跨机房灾备方案对比与实战解读

Se7en

Kafka的灵魂伴侣LogiKM(1)之集群的接入及相关概念讲解

Kafka中文社区

查收新年礼物 | DevEco Studio 3.0 Beta2发布,20个新变化,等你升级

HarmonyOS开发者

HarmonyOS

“群舰效应”与商业市场大航海

脑极体

微博评论高性能高可用计算架构

ren

ReactNative进阶(二):ReactNative 项目文件结构介绍

No Silver Bullet

React Native 1月月更

【MongoDB学习笔记】MongoDB索引那点事

恒生LIGHT云社区

数据库 mongodb 索引

一图解析MySQL执行查询全流程

华为云开发者联盟

MySQL 服务器 数据包 查询语句 应用层

龙蜥社区2021年度运营委员会会议顺利召开

OpenAnolis小助手

龙蜥社区

阿里云贾少天:大规模云服务器高效使用及管理实践

阿里云弹性计算

阿里云 云栖大会 云上运维

当前端渲染遇上边缘计算

火山引擎边缘云

应收账款的界定

whatever

供应链金融 保理

在线JSON转HTML工具

入门小站

工具

开源实践 | 六棱镜基于 OceanBase 选型探索与实践

OceanBase 数据库

OceanBase 开源 OceanBase 社区版 客户案例

一个cpp协程库的前世今生(十)调度的流程

SkyFire

c++ cocpp

设计模式【7】-- 探索一下桥接模式

秦怀杂货店

Java 设计模式 桥接模式

「offer来了」面试中必考的15个html知识点

星期一研究室

html html5 css3 前端 html/css

Spring 如何解决循环依赖问题?

CRMEB

Tableau Day1: 完成第一个可视化

贾献华

Tableau 1月月更

04 Prometheus之配置步骤及容量规划

穿过生命散发芬芳

Prometheus 1月月更

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