写点什么

需要 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:301691
用户头像

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

关注

评论

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

超越想象,博睿数据3D数字展厅上线

博睿数据

可观测性 智能运维 博睿数据 3D展厅

如何改变Mac观看Netflix奈飞时的字幕样式?

Rose

Mac软件 奈飞客户端 网飞字幕

扩散模型的通用指导手册

Zilliz

难以置信!四面斩获字节offer,全靠这份“算法最优解”宝典

Java 数据结构 面试 算法 LeetCode

高效稳定的通用增量 Checkpoint 详解之二:性能分析评估

Apache Flink

大数据 flink 实时计算

【低代码实践】京东科技活动平台:魔笛介绍

京东科技开发者

低代码 企业号 3 月 PK 榜 活动平台

活动报名 | 博睿数据高阶行业沙龙保险专场启动报名!

博睿数据

智能运维 博睿数据 保险行业

联邦学习开源框架FATE架构

京东科技开发者

人工智能 机器学习 联邦学习 FATE 企业号 3 月 PK 榜

影响LED显示屏清晰度的三大要素

Dylan

广告 LED显示屏 体育

系统架构设计:进程缓存和缓存服务,如何抉择?

Java 架构设计 缓存服务 进程缓存

太强了!阿里架构师把自己会的都总结到了这份1737页实战开发手册中

Java

2023年中建信息&超聚变核心生态伙伴高峰论坛成功举办

极客天地

一个由public关键字引发的bug

小小怪下士

Java 程序员 后端

Mac电脑照片编辑修图软件精选

Rose

修图 抠图 图片编辑 苹果mac软件 macOS系统

对话 Fork 创始人:帮云服务厂商精准获客,我们是如何做到的?

万事ONES

云计算 研发管理 研发管理工具

NutUI-React 京东移动端组件库 2月份上新!欢迎使用!

京东科技开发者

前端 React 组件库 开源组件 企业号 3 月 PK 榜

好用的油猴Safari浏览器插件:Tampermonkey 中文版

真大的脸盆

Mac 油猴 油猴插件 脚本管理 脚本插件

GPT-4:不了不了,这些我还做不到

禅道项目管理

GPT ChatGPT GPT-4

从头到尾学习一个完整 SLAM 项目

博文视点Broadview

App Store 2022年度app推荐: MacFamilyTree 10 最好的家族谱软件

Rose

MacFamilyTree 家族谱软件 苹果软件精选

真香!腾讯T4梳理的Java核心宝典(框架+原理+笔记+导图)

Java 程序员

数据库开发工具界的ChatGPT来了

NineData

数据库 sql AI ChatGPT NineData

从 3 个层级出发,做好 DevSecOps“安全左移”经济账

极狐GitLab

DevOps DevSecOps 代码安全 极狐GitLab 安全左移

浅析synchronized底层实现与锁升级过程

Java JVM synchronized

阿里云助力元戎启行 加速自动驾驶应用落地

云布道师

自动驾驶 阿里云 弹性计算

mkv格式怎么在mac电脑播放,mac上5款必备的视频播放器

Rose

视频播放器 MKV 苹果mac软件

行云管家堡垒机六大功能详细介绍看这里!

行云管家

互联网 网络安全 堡垒机

基于Pub/Sub模式的阿里云IoT同步调用详解——设备管理运维类

阿里云AIoT

物联网 API

研发效能负责人/研发效能1号位 |DevOps负责人

laofo

DevOps cicd 研发效能 工程效能 工程效率

Star History 月度开源精选|2023 年 2 月

Bytebase

GitHub 开源项目 OpenKruise

第三方私有云管理平台选择哪家好?理由有哪些?

行云管家

云计算 私有云 云管平台 云管理

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