写点什么

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

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

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

关注

评论

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

开发工具安装

青柚1943

从演进的视角理解微服务架构

苏格拉格拉

架构 微服务 微服务架构 架构演进

SQL 碎碎念,你可能用不到但不能不知道的数据库技巧(1)

百里丶落云

数据库 后端 11月月更

FOTSL:端到端的文本检测与识别方法的原理方法与优势

合合技术团队

人工智能 场景 端口 文本检测 文本识别

阿里云 ODPS-Hologres刷新世界纪录,领先第二名23%

阿里云大数据AI技术

大数据 交互式 ODPS 离线计算

量子编程实践:Bell Pair电路及Deutsch算法

启科量子开发者官方号

#python #量子计算 #人工智能 #AI框架

【10.28-11.04】写作社区优秀技术博文一览

InfoQ写作社区官方

优质创作周报

嘉兴市等保测评公司有几家?叫什么名字?

行云管家

等保 等级保护 等保测评 安全等级保护 行云管家堡垒机

马蜂窝毕博:分析完这9点工作原理,我们最终选择了 Apache SeaTunnel!

Apache SeaTunnel

开源 技术选型 数据集成 Seatunnel 数据集成平台

Docker PHP 入门实践(一)

Felix

php 实战案例 Docker 镜像 11月月更

企业内部即时通讯工具WorkPlus,支持内网私有化部署

BeeWorks

阿里云ODPS升级为一体化大数据平台 满足用户多元化数据计算需求

阿里云大数据AI技术

大数据 阿里云

稳定性治理方法论

苏格拉格拉

方法论 稳定性

大咖说·我和我的伙伴们|云原生携手禾连健康助力医疗行业发展

大咖说

阿里云 微服务 云原生

一文带你详细了解JVM运行时内存

程序员小毕

Java 程序员 面试 后端 JVM

深圳中心化区块链交易所开发安全的重要性

W13902449729

区块链交易所搭建

贯彻二十大报告精神,政企如何提前布局信创国产化移动数字化平台?

BeeWorks

企业上云四大优势简单聊聊-行云管家

行云管家

云计算 企业上云 云服务器

设计模式学习-基础知识

肥晨

设计模式 11月月更 设计模式基础

LED显示屏有色差要怎么处理?

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

python数据分析-开篇什么是数据分析

AIWeker

Python 人工智能 数据分析 11月月更

QuTrunk与Paddle结合实践--VQA算法示例

启科量子开发者官方号

Python 人工智能 ai框架 量子计算 量子编程

集群并发下的数据覆盖问题

苏格拉格拉

缓存 分布式 并发 一致性

不愧是阿里内部Spring Boot笔记,从头到尾全是干货

小小怪下士

Java spring 程序员 阿里 springboot

PingCAP 推出 TiDB Cloud Serverless Tier BETA 版

PingCAP

TiDB

Docker PHP 入门实践(二)

Felix

php Docker 实战 11月月更

手写一个webpack插件

Geek_02d948

webpack

BI系统打包Docker镜像及部署的技术难度和实现

葡萄城技术团队

Docker 容器 BI

「百幄」之办公平台:进一道门,办所有事

融云 RongCloud

数字化 办公

Spring Boot「24」DAO 模式与 Repository 模式

Samson

Java spring Spring Boot 学习笔记 11月月更

喜讯!麦聪DaaS平台荣获“2022行业信息化优秀产品”奖

雨果

数字化转型 DaaS数据即服务 麦聪软件

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