写点什么

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

  • 2007-05-31
  • 本文字数:937 字

    阅读完需:约 3 分钟

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

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

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

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

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

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

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

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

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

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

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

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

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

2007-05-31 02:301708
用户头像

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

关注

评论

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

音视频demo| 不一样的AR Call

anyRTC开发者

uni-app 音视频 移动开发 uni-app demo

「模块化安装」,定义你自己的CloudQuery

BinTools图尔兹

sql 数据安全 数据库管理 polarDB

Handler简单入门

W🌥

android 8月日更 Handler

校招失败,在小公司熬了2年后我终于进了字节跳动,竭尽全力(Java岗)

今晚早点睡

Java 编程 字节跳动 面试 计算机

谷歌架构师分享gRPC与云原生应用开发Go和Java为例文档

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

0代码之缘

明道云

干货|后互联网时代,运维工程师的必备性能优化指北

阿里巴巴中间件

阿里云 云原生 中间件

linux 工具之perf

webrtc developer

ipfs矿机配置标准如何?ipfs矿机配置带宽要求是什么?

ipfs矿机配置标准如何 ipfs矿机配置带宽要求

终于学完国内算法第一人10年经验总结的数据结构与算法详解文档

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

区块链钱包系统开发,imtoken去中心化钱搭建

不会被开除吧?一顿饭换来“字节”面试题库Java岗,刷完直接入职大厂

Java架构师迁哥

模块五设计微博评论高性能高可用计算架构

kitten

我爬取了爬虫岗位薪资,分析后发现爬虫真香

Python研究者

8月日更

Vue进阶(四十二):var、let、const 三者区别

No Silver Bullet

Vue var const let 8月日更

RunC TOCTOU逃逸CVE-2021-30465分析

腾讯安全云鼎实验室

容器 漏洞分析

crudapi增删改查接口零代码产品成功案例之金茶王投票系统

crudapi

Vue API crud crudapi 投票

前端基础三之JavaScript基础

ベ布小禅

8月日更

Nebula Operator 云上实践

NebulaGraph

阿里云 云原生 k8s 图数据库 分布式图数据库

面面俱到!腾讯大牛把源码分析、基础案例、实战案例、面试、系统架构,全部总结到这份Java多线程与高并发里面了

Java 编程 程序员 面试 多线程

阿里 Java 二面必问:8张图带你解决所有TCP可靠传输问题

编程 面试 TCP 网络 计算机

leetcode 最常见的前端基础算法面试题(上)

前端依依

面试 大前端 力扣 算法题 初阶

模块五作业

燕燕 yen yen

架构实战营

灵活且有趣,10分钟落地翻译能力,1分钟插件化

明道云

终于拿到了深入Java虚拟机:JVMG1GC的算法与实现文档

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

架构实战营1期模块5作业——高性能计算架构

tt

架构实战营

架构实战训练营模块五作业

Clarke

架构实战营模块 5 作业指导

华仔

#架构实战营

我们可能是被工具耽误的一代

非著名程序员

深度思考 认知提升 成长笔记 8月日更

抖音快手截流获客系统软件开发

薇電13242772558

获客达人

linux 工具之pstack/gstack

webrtc developer

需要100%的测试覆盖率吗?_研发效能_Amr Elssamadisy_InfoQ精选文章