写点什么

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

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

关注

评论

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

如何选择合适的数据集成工具或平台来实现全域数据的高效整合

Aloudata

数据仓库 数据分析 数据开发 数据集成 数据编织

Redis大Key问题如何排查?如何解决?

王磊

快递员上门取件API接口接口Domo下载

快递鸟

快递

探索OS升级迭代的兼容性和安全性!龙蜥社区走进中科方德MeetUp开始报名

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥meetup

数据驱动与并行策略:用 JUnit 5 让软件测试更高效

测试人

软件测试

全域数据整合下的数据治理:提升数据开发管理效率与质量的策略

Aloudata

数据仓库 数据分析 数据开发 数据集成 数据编织

倒计时1天!龙蜥社区开源软件供应链及操作系统安全MeetUp即将在广州召开

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥meetup

中小企业如何优化业务流程和充分利用ERP系统?

积木链小链

企业管理 数字化 ERP 中小企业

探索1688拍立淘API接口:图像搜索技术引领电商新潮流

代码忍者

API 接口 pinduoduo API

天润融通携手挚达科技:AI技术重塑客户服务体验

天润融通

洞悉数据,守护安全!和鲸助力2024年浙江省交通投资集团数字化主题活动圆满闭幕

ModelWhale

人工智能 交通 数据竞赛

第三代指标平台相较于前两代的显著优势分析

Aloudata

指标管理 指标平台 指标开发

【JIT/极态云】技术文档--组织架构简介

武汉万云网络科技有限公司

低代码

支付能力用小程序实现并非最佳技术方案

FinFish

小程序容器 超级app 小程序技术 app支付能力

软件测试丨JUnit5动态测试与生命周期解析

测试人

软件测试

开放原子校源行(天津大学站) 即将启幕,龙蜥技术专家分享开源技术与实践

OpenAnolis小助手

操作系统 龙蜥社区

CSA GCR 2024 | 百度安全DDoS防护服务荣获安全磐石奖等多项殊荣

百度安全

揭秘1688商品详情关键字搜索API接口:精准定位,高效营销

代码忍者

API 接口 pinduoduo API

舍得酒业×奇点云|最佳大数据平台供应商

奇点云

大数据

存算分离的过去、现在和未来

Databend

终于能随时解决信息焦虑了

最新动态

天润融通解决方案:如何避免门店投诉升级为消费者维权

天润融通

如何绘制产品架构图?盘点9个产品架构图模板!

职场工具箱

在线白板 架构图 办公软件 绘图软件 产品架构图

万字长文带你深入Redis底层数据结构

不在线第一只蜗牛

数据库 redis

软件测试丨全面解析 Allure 2 的安装与运用

测试人

软件测试

淘宝商品描述优化与拍立淘API接口探索:开启智能购物新时代

代码忍者

API 接口 pinduoduo API

如何使用 NocoBase 构建应用程序?

NocoBase

开源 零代码 无代码 应用程序 宠物追踪

构建真实可靠指标平台:五大核心特征助力企业深度数智化

Aloudata

指标管理 指标平台 指标开发

Python脚本消费多个Kafka topic

不在线第一只蜗牛

Python kafka

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