写点什么

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

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

关注

评论

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

Android-聊聊自动化测试真经

芝麻粒儿

android 7月月更

SpringSecurity 添加验证码的两种方式

急需上岸的小谢

7月月更

大数据培训如何优化HiveSQL

@零度

大数据开发 hiveSQL

用户体验 | 银行如何优化APP用户体验

易观分析

用户体验

2022可信云大会 | 中国信通院云上软件工程评估结果即将发布

中国IDC圈

软件工程 可信云 评估结果

如何用Apifox 的智能Mock功能?

Liam

前端 Mock

在线版 Python 图片转字符画

OpenHacker

Python

北京银行推出“智策”零售数字化运营体系 加速推进数字化转型发展

易观分析

数字化转型

亚马逊云科技如何通过智能营销帮助苏泊尔实现年产破亿?

Lily

【运维小知识】单点登录是什么意思?有什么作用?

行云管家

运维 单点登录 IT运维

技术分享| 快对讲-5G对讲

anyRTC开发者

音视频 传输协议 快对讲 RAST

iOS 中的代理模式

NewBoy

ios 前端 移动端 iOS 知识体系 7月月更

秒懂 Git 与 Gitee

攻城狮杰森

git gitee 7月月更 入门教程

用友网络:把握穿越周期的关键,高研发投入下的发展韧性

Lily

2022年盘点,主流前端跨端技术方案(包含小程序)

Speedoooo

flutter taro Weex React Native finclip

首次公开!华为顶级团队合编300页Docker进阶手册,理论实战双收

冉然学Java

Java Docker 操作系统 #技术干货#

这些功能要是没有,我大 Pro 还怎么出来混!

CRMEB

记录一次现场 mysql 重复记录数据的排查处理

安逸的咸鱼

MySQL 实战案例 7月月更

AWS Trusted Advisor

冯亮

云计算 DevOps AWS

IDC 发布《云原生 AI - 加速 AI 工程化落地》报告,百度智能云领跑云原生 AI 能力

Baidu AICLOUD

异构计算 AI加速 云原生AI

AI 翻译助力社交泛娱乐应用全球无障碍沟通

融云 RongCloud

ES6 --- 展开运算符(一)

bo

前端 面试题 ES6 深拷贝 7月月更

云图说丨OLAP开源引擎的一匹黑马,MRS集群组件之ClickHouse

华为云开发者联盟

数据库 后端

入门即享受!coolbpf 硬核提升 BPF 开发效率 | 龙蜥技术

OpenAnolis小助手

开源 技术 龙蜥大讲堂 BPF coolbpf

版本通告|Apache Doris 1.1 Release 版本正式发布!

SelectDB

数据库 数据仓库 Doris apache doris 版本更新

深度解析:LP流动性挖矿系统开发逻辑拆解

开发微hkkf5566

那个从「四大」出来的小哥哥,后来怎么样了|ONES 人物

万事ONES

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

OpenHacker

Docker

AI简报-how to use Loss Surfaces 一种模型集成

AIWeker

AI简报 7月月更

Python 入门指南之虚拟环境和包

海拥(haiyong.site)

7月月更

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