2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

亚马逊商品详情 API 秘籍!轻松获取 SKU 属性数据

Datafox(数据狐)

亚马逊API 亚马逊商品详情API 亚马逊商品数据采集

5款更专业的境外社交媒体监控工具推荐

沃观Wovision

沃观Wovision 舆情监测系统 社交媒体监控 海外社交媒体监控

挑战一周用 AI 开发商业化项目!4 大痛点反思 + 新手专属提示词分享

王中阳Go

AI

BeeWorks 高效管理指南:客户端统一管控与配置

BeeWorks

即时通讯 IM 私有化部署

探秘黑龙江三级等保测评最新要点

等保测评

融云亮相 GITEX 2025,智能通信方案驱动全球数字化转型

融云 RongCloud

一键生成爆款文章,并自动发布!

王磊

速卖通商品详情API秘籍!轻松获取SKU属性数据

Datafox(数据狐)

速卖通API 速卖通数据采集 速卖通商品详情API 速卖通商品数据分析

案例分享 | RFID智能工器具管理在汽车维修间的应用

斯科信息

斯科信息 RFID技术 RFID智能工具柜 RFID智能工具车 RFID工作站

天润融通解析人工客服还能撑几年?数据已经给出答案

天润融通

LLM 应用评估综合指南(多轮对话系统、RAG、AI Agent)

Baihai IDP

AI LLM LLM应用评估 RAG 评估 Agent 评估

职责分离的艺术:剖析主从Reactor模型如何实现极致的并发性能

poemyang

RPC IO多路复用 Reactor多线程

FishAudio 推出 S1 模型:2 万开发者,500 万美元 ARR;蛐蛐开源桌面语音输入工具,优化编程术语识别丨日报

RTE开发者社区

绿电直连 vs 隔墙售电:本质区别一文说清

西格电力

新能源 电力交易 绿电直连 隔墙售电 能源方案

未来十年,袋鼠云将实现“一体两翼”Data+AI应用战略

袋鼠云数栈

发布会 Data + AI Data+AI 袋鼠云 易知微

工业管理 项目管理经验总结(26)

万里无云万里天

项目管理 工业 工厂运维

springboot项目集成dolphinscheduler调度器 可拖拽spark任务管理

刘大猫

人工智能 云计算 物联网 大模型

捷行读书会:第三期总结分享会

ShineScrum

读书感悟 #读书 分享会

高效考勤管理,用BeeWorks就够了!

BeeWorks

即时通讯 IM 私有化部署

探秘黑龙江托管云:开启高效数字化新征程

等保测评

防患于未然:用于品牌危机预警的境外社媒监控工具盘点

沃观Wovision

海外媒体 舆情监测 沃观Wovision 社交媒体监控 海外社交媒体监控

企业成本算不清,交付准不了?如何通过iPaaS处理在业务中产生的数据

谷云科技RestCloud

数据同步 数据孤岛 集成平台 ipaas

HDD如何在AI时代,守住数据存储的“基本盘”?

新消费日报

对话即服务,不跳转、不重复,天润融通ZENAVA让客服更聪明

天润融通

传帮带 人才梯队建设经验总结(14)

万里无云万里天

人才培养 工业 工厂运维

传统客服组织 VS 天润融通业务专家+AI员工,差距一目了然

天润融通

防火墙、IDS/IPS… 哈尔滨等保测评必备安全工具

等保测评

AI 英语学习APP的开发流程

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语学习

CST电磁仿真软件支持哪些硬件加速?正版CST软件购买流程

思茂信息

cst仿真软件 CST软件 CST Studio Suite

数据平台数据智能化入库

百度Geek说

数据平台 智能入库 自动化代码生成 LLM工程化

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