写点什么

TDD 容易被忽略的五大前提

  • 2018-12-02
  • 本文字数:1555 字

    阅读完需:约 5 分钟

TDD容易被忽略的五大前提

TDD 不仅仅是一项技术,它还是一种完整的编程风格,一种相关行为和思想的综合系统。TDD 的五个前提为我们提供了一个操作闭环,就像每个 TDD 实践者呼吸的空气一样。


软件教练 GeePaw Hill 在 eXperience Agile 2018 大会上谈到了 TDD 的五个容易被忽略的前提。InfoQ 通过问答、摘要和文章的形式报道了这次会议。


Hill 表示,测试驱动开发(TDD)的五个前提构成了几乎所有 TDD 实践的基础,它们将我们与这种测试驱动方法联系在一起。


Hill 提出的五个前提是:


  • 金钱前提——我们是为了金钱。

  • 判断前提——我们将依赖做出局部决策的个人。

  • 相关性前提——内部质量生产力。

  • 链接前提——我们主要测试非常小的部分。

  • 指导前提——测试和可测试性是一等设计参与者。


Hill 说,当你在实施 TDD 时,这些前提是不可见的,但它们仍然非常重要。在进行 TDD 时,你必须牢记这些。


金钱前提是关于资金的来源。TDD 不是关于测试、改进质量或工艺。Hill 说,TDD 的目标是更快地交付更多的价值,就是为了金钱。


判断前提意味着我们完全依赖个人的判断。Hill 认为,他自己每次都在做同样的事情,但对于其他人来说却不是这样。TDD 不是编码算法,当你在进行 TDD 时,必须做出决策。


相关性前提是指内部质量和生产力是相关的。Hill 说,它们之间有着直接的关系,一起起起伏伏,因为它们都依赖于技能和领域知识等东西。Hill 认为,保持代码的良好状态并不只是个可选项。


链接前提告诉我们,链的测试方法是测试链中的每个链接。程序被分成较小的部分,你必须对这些部件进行测试。Hill 说,测试整个链的成本很高,很难编写测试用例并维护好它们,但是测试链接的成本却是最低的,它提供了最高的覆盖率。


指导前提是说测试和可测试性是设计的一等参与者。Hill 说,如果你没有可测试的设计,其实就是没有设计。你一直在质疑如何进行测试,以及到目前为止测试是如何进行的,从第一行代码到最后一行代码。他说,你必须改变你的设计,让测试尽可能变简单。


在进行 TDD 时,这些前提将在整个过程中发挥作用。Hill 说,它们是隐形的,就像你呼吸的空气一样。


在演讲结束后,InfoQ 采访了 GeePaw Hill。


InfoQ:了解 TDD 前提为什么会如此重要?


GeePaw Hill:如果我们没有意识到这些前提,就很有可能会搬起石头砸自己的脚。对于其中的每一个前提,我都能举出例子,但还是让我们来看看相关性前提吧。


TDD 实践者对代码的内部质量非常着迷,因为他们知道代码且与他们的生产力直接相关。不知道的人很容易将影响内部质量的工作视为一种“清洁”行为。无论人们认为洗碗有多重要,但事实是你可以长时间使用脏盘子却不会受到任何伤害。你可以把清洁工作延后,因为现在你需要的是食物,而不是干净的盘子。你现在需要更多的食物,所以你“这一次”可以跳过洗碗这件事。


但是如果不洗碗就意味着你现在的食物也会减少呢?内部质量并不是清洁工作,因为它是影响生产力的一个主要因素,而不只是一个锦上添花的东西。不良因素所造成的负面生产力效应是非常迅速的,比如糟糕的命名、引入变量和初始化之间的长时间延迟等。理解相关性前提的人永远不会将内部代码质量仅仅视为一个可选项。


InfoQ:我们如何提高 TDD 技能?


Hill:TDD 通常被视为一项简单的技术,但实际上它确实是一种整体的编程风格,而不只是一种新的附加机制,它是相关行为和思想的一种综合系统。空手道技术熟练的人被称为 karetekas,而在柔道中他们被称为 judoka。从古老的风格到现代的综合论,有点像从 kareteka 到 judoka。它涉及很多不同的肌肉群、不同的动作、不同的想法。


话说回来,为了获得丰富的技能,我们必须做同样的事:


  1. 找一个安静的地方,让你敞开心扉。

  2. 阅读和研究。

  3. 练习。


老师或导师可以帮助你完成这三件事,但他们不能替你去做。与所有复杂的学习一样,TDD 没有捷径。


查看英文原文:


https://www.infoq.com/news/2018/11/premises-tdd


2018-12-02 12:081725
用户头像

发布了 731 篇内容, 共 419.8 次阅读, 收获喜欢 1984 次。

关注

评论 1 条评论

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

性能优化知多少

圣杰

sql 性能优化 dotnet

风口上的量子计算机:核聚变一样的赌局,钻石一样的骗局

脑极体

Linux入门篇 —— Shell详解

若尘

Linux 命令行 linux操作

构建“金融+司法”新局面:兴业消费金融区块链电子存证系统正式上线

CECBC

金融

热点浅谈:低代码开发平台发展前景与市场规模!

优秀

低代码 低代码开发 低代码开发平台

为了让你在“口袋奇兵”聊遍全球,Serverless 做了什么?

阿里巴巴云原生

云计算 Serverless 云原生 监控 调度

小程序开发-云开发技术总结

我是哪吒

小程序 程序员 大前端 28天写作 2月春节不断更

一道好题!我觉得面试如果考察「双指针」的话,这题是刚刚好 ...

宫水三叶的刷题日记

面试 LeetCode 数据结构与算法

诊所数字化:患者数字档案的价值机遇和风险

boshi

数字化医疗 七日更 28天写作

字节跳动面试官这样问消息队列:高可用、不重复消费、可靠传输、顺序消费、消息堆积,我整理了下

冰河

面试 分布式 中间件 消息队列 一起进大厂

runtime笔记

Conan

ios

一口气发布十大建网利器,华为打算煲出怎样的5G味道?

脑极体

神操作:就靠这份“Java核心技能精讲”,竟收割了22个Offer

比伯

Java 编程 架构 面试 计算机

BML CodeLab发布重磅更新 一键配好Windows WSL2 AI开发环境

百度大脑

计算机视觉--opencv及paddlepaddle 环境安装

cloudcoder

【死磕JVM】JVM快速入门之前戏篇

牧小农

跨平台 虚拟机 Java虚拟机 JVM虚拟机原理 hotspot

Selenium 利用 JS/JQ 操作元素、鼠标键盘事件、Cookie 操作

梦想橡皮擦

Python 28天写作 2月春节不断更 selenium

阿里中间件团队技术官手撸笔记,全新演绎“Kafka部署实战”,已开源

Java架构之路

Java 程序员 架构 面试 编程语言

牛掰!面试不再慌,苦刷这份2020最全的“基础-中级-高级”面试题库,已涨17k

Java架构之路

Java 程序员 架构 面试 编程语言

简单的网站搭建

很甜回忆

网站

连接AI与用户,京东云推出视音频通信技术方案

京东科技开发者

IoT 通信 视频会议

最新大厂Java面试题库,测试一下你能坚持到哪一面 “美团+字节+腾讯”三面技术问题

Java架构之路

Java 程序员 架构 面试 编程语言

Elasticsearch 查询结果排序

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

bat文件调用cmd命令批量提取文件夹中的文件名(批量修改文件扩展名)

明金同学

Android NativeCrash 捕获与解析

vivo互联网技术

c++ android NativeCrash

javascript中的内置对象和数据结构

程序那些事

JavaScript 数据结构 ES6 程序那些事

深度丨从货币历史看比特币的诞生

CECBC

比特币

关于央行数字货币若干问题的思考 | 比较

CECBC

数字货币

基于grpc手撸一个RPC框架

cloudcoder

区块链电子合同存证,电子合同区块链服务平台

13530558032

Kalm——基于Kubernetes的部署工具

David

开源 Kubernetes DevOps 运维 运维平台

  • 扫码加入 InfoQ 开发者交流群
TDD容易被忽略的五大前提_文化 & 方法_Ben Linders_InfoQ精选文章