写点什么

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

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

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

关注

评论

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

深度学习基础入门篇-序列模型:[11]:循环神经网络 RNN、长短时记忆网络LSTM、门控循环单元GRU原理和应用详解

汀丶人工智能

人工智能 深度学习 RNN LSTM GRU

ps vs top:CPU占用率统计的两种不同方式

极限实验室

Linux 运维 监控系统 INFINI Console

PoseiSwap IDO在Bounce上启动在即,如何参与?

西柚子

龙博机电:90后“厂二代”,靠伙伴云零代码让中小制造业实现数字化“逆袭”

联营汇聚

Scrum的三个工件(产品Backlog、Sprint Backlog、产品增量 )

顿顿顿

Scrum 敏捷 敏捷开发管理 敏捷开发管理工具

全新一代小度智能屏X9焕新上市 正式开启预售

极客天地

红旗软件正式发布龙蜥社区版国产高可靠操作系统

OpenAnolis小助手

Linux 开源 龙蜥社区 红旗软件 社区版操作系统

浅谈财务共享未来发展趋势

用友BIP

业财融合 财务共享

基于 Log 的通用增量 Checkpoint 在美团的进展

Apache Flink

大数据 flink 实时计算

PoseiSwap IDO在Bounce上启动在即,如何参与?

鳄鱼视界

Flutter三棵树系列之详解各种Key | 京东云技术团队

京东科技开发者

flutter key 企业号 5 月 PK 榜 localkey

2023年,Flutter3.10版本的变化有哪些?

没有用户名丶

小程序容器

WorkPlus AI助理 | 将企业业务场景与ChatGPT结合

BeeWorks

Elasticsearch与Clickhouse数据存储对比 | 京东云技术团队

京东科技开发者

数据库 elasticsearch Clickhouse 企业号 5 月 PK 榜

企业研发效能度量利器,华为云发布CodeArts Board看板服务

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

内部开发者平台|自建还是购买,企业应如何选择?

SEAL安全

平台工程 企业号 5 月 PK 榜 内部开发平台

以敏捷性为目标,构建良好企业生态

智达方通

数据驱动 数据孤岛 智达方通 全面预算管理 数据分析系统

混沌演练实践(二)-支付加挂链路演练 | 京东云技术团队

京东科技开发者

微服务 混沌工程 混沌工程实践 企业号 5 月 PK 榜

云图说丨初识商标注册服务

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

有哪些好用的企业即时通讯软件值得推荐?

BeeWorks

3天速成!阿里人私用的Netty速成实战手册,3天Github星标11.5k

Java你猿哥

Java 源码 Netty ssm netty内存管理

深度学习进阶篇-预训练模型[1]:预训练分词Subword、ELMo、Transformer模型原理;结构;技巧以及应用详解

汀丶人工智能

人工智能 深度学习 预训练模型 Transformer ELMo

直击灵魂!美团大牛手撸并发原理笔记,由浅入深剖析JDK源码

Java 并发编程 多线程 jdk源码

最高奖金100万!第二届广州·琶洲算法大赛火热报名中

飞桨PaddlePaddle

百度飞桨 算法大赛

视频后期特效处理软件:Motion 5 最新中文激活版

真大的脸盆

Mac Mac 软件 视频特效合成 视频特效工具 特效合成

CloudQuery v2.0.0 发布 新增数据保护、数据变更、连接管理等功能

BinTools图尔兹

数据库 国产数据库 版本发布

1.5万字+30张图盘点程序员面试必会MySQL索引常见的11个知识点

Java你猿哥

Java MySQL 数据 ssm 索引

SpringBoot + Docker 实现一次构建到处运行

Java你猿哥

Java Docker Spring Boot ssm 容器化部署

常用的表格检测识别方法——表格结构识别方法(上)

合合技术团队

人工智能 深度学习 算法 人工智能文字识别 表格检测

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