对中国开发者最具吸引力的科技企业有哪些?快来为你 pick 的企业投票! 了解详情
写点什么

需要 100% 的测试覆盖率吗?

2007 年 5 月 31 日

多少测试才算够用呢?答案因人而异。有人会告诉你要做到 100%的测试覆盖率。另一些人却不这么想,他们认为这个问题的答案因测试代码质量的不同而不同,而衡量测试覆盖率并不能说明这些测试及被测试代码的质量。

来自 ObjectMentor 的 Tim Ottinger 写道:“如果你正在进行真正的 TDD,那么你的测试覆盖率应该很高,因为你只有编写出产品级代码才能满足测试的部分。”这很巧妙地表明,TDD 对已有代码的测试覆盖率几乎没有什么影响。

我并不是说代码覆盖率应该很低,只是说随着我们的进展,我们写的每个独立的测试应该对我们的代码覆盖率影响非常小……这是一个很令我感兴趣的想法。

通过示例,Andy Glover 向我们说明了代码覆盖的度量可能会给我们带来了错误的安全感。对于代码覆盖的度量可能会告诉你哪些代码没有被测试,但不能准确地告诉你哪些代码 _ 被 _ 测试过了。同样地,Tobias Schlitt 认为:对代码覆盖的度量是很重要的,因为它会告诉我们哪部分是我们没有覆盖到的。

诚然,一个测试套件的高代码覆盖率根本不能说明代码经过了很好的测试(假如你自己不写代码和测试的话)。但是反过来说是成立的:一个较低的代码覆盖率毫无疑问还是意味着这个测试套件并不充分。就让我来深入分析一下代码覆盖率问题,看看它会给你带来什么吧。

测试大师 Testivus 认为“结果因情况而异”是最好的解释。对于那些刚开始写测试的人来说:

现在他写了很多代码,但还没有测试代码,那他还有很长的路要走。此时把重点放在代码覆盖率上的话将会很郁闷,而且毫无用处。他现在最好开始写一些测试并运行这些测试,覆盖率问题是他之后才需要考虑的事情。

对于那些有经验的开发者来说:

……所需的测试数量依赖于很多因素,而且在“需要考虑哪些因素”这个问题上,她比我更清楚,毕竟代码是她写的。虽然没有那种简单明了的答案,但她还是足以应付这个事实。

最后,对于那些只想得到答案的人来说:

第三个程序员想得到仅仅是简简单单的答案——即便事实上简简单单的答案并不存在……而且(即便有)他在稍后并不会遵循这些答案。

就象在这些 Blog 中说的那样,测试的关注点在于测试给质量检验带来的益处。从这个角度出发,我们应该意识到,对测试覆盖率的度量可以告诉我们遗漏了什么,而不是告诉我们哪些做的很好。

查看英文原文: 100% Test Coverage?

2007 年 5 月 31 日 02:30896
用户头像

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

关注

评论

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

Spring Security密码登录流程源码分析

读钓

源码分析 spring security springboot

从引用聊一聊 Java 垃圾回收

Rayjun

Java 引用 对象

谈谈控制感(9):提升控制感排名第一的武器

史方远

职场 心理 成长

Java 数据持久化系列之JDBC

程序员历小冰

Java JDBC 持久化

Service Provider Interface介绍

Skysper

spi

leetcode练级-两数之和

幸福三寸日光

算法 LeetCode js

《陆蓉行为金融学讲义》 - 读后感

石云升

读书笔记 投资 行为金融学 理性 公平

Lucene的Smart CN实现分词、停用词、扩展词

Page

中文分词 lucene 停用词 扩展词 SmartCN

宏在C++中的替代解决方案

老王同学

leetcode练级-只出现一次的数字

幸福三寸日光

算法 LeetCode js

谈谈我的云笔记使用之路

读钓

学习 个人成长 写作

ArrayList 源码分析

读钓

Java 源码分析 jdk源码

【ARTS】Week 1

Amos

ARTS 打卡计划

使用 webpack 搭建一个简单的 React 脚手架

张张张小烦

react.js

谈即时编译优化-以异常堆栈丢失为例

寻筝

编程入门整理

紫枫

读书笔记

修改Tomcat窗口的名称

阡陌r

Java tomcat 踩坑 实施

其实,还是让我挺震惊的,程序员的换行率竟然高达 40%

非著名程序员

程序员 程序人生 自我思考

关于工作的一点总结

墨凡

工作思路

Tomcat学习分享

墨凡

tomcat

鄙视链 & 全栈

伯薇

学习 能力提升 全栈

字节跳动:高级人才的五个基本素质

池建强

人才培养

ARTS week1

紫枫

ARTS 打卡计划

音视频会议系统-Janus的安装与布署

音视频专家-李超

音视频 WebRTC 音视频会议

数据与广告系列二:计算广告和推荐系统

黄崇远@数据虫巢

数据挖掘 大数据 互联网 广告 推荐系统

Algorithm week 1: Merge Two Sorted Lists

猫吃小怪兽

算法 链表 ARTS 打卡计划

Kubernetes 资料集合

倪朋飞

学习 Kubernetes 架构模式

Spring Data R2DBC 入门

稻草鸟人

MySQL WebFlux springboot R2DBC

leetcode练级-只出现一次的数字 升级版

幸福三寸日光

算法 LeetCode js

青春时期的打油诗

墨凡

随笔

ARTS打卡Week 01

teoking

android WebRTC

华为云 TechWave 全球技术峰会

华为云 TechWave 全球技术峰会

需要100%的测试覆盖率吗?-InfoQ