写点什么

请善用覆盖率度量

  • 2008-11-17
  • 本文字数:914 字

    阅读完需:约 3 分钟

Christian Gruber 就 TDD 的代码覆盖率度量方面阐明了其态度。他谈到了代码覆盖率度量会告诉你什么以及不会告诉你什么,TDD 是如何适应它的,同时还提到了我们如何能更好地使用代码覆盖率度量。
对于采用良好的 TDD 开发的应用来说,其代码覆盖率通常都会很高(>80-90%)。但另一方面,代码覆盖率高并不意味着应用构建在良好的 TDD 上,甚至可能都没有采用 TDD。再进一步,代码覆盖率高就表示你的应用经过了彻底的测试么?

Christian Gruber 对此进行了讨论,这很大程度上是由 Kevin Pang 就该主题所发表的另一篇博文引起的。打开天窗说亮话,Gruber 的主要观点是 TDD 的支持者们并不建议将代码覆盖率作为“一个真正的度量”,它在一定程度上是有用的,但只有与其他反馈结合使用时其作用才能发挥出来。他抨击了 Pang 的观点:“(Pang)100% 的代码覆盖率是测试爱好者的终极追求”,他说:“(Gruber)高代码覆盖率是经过良好测试的系统的想要拥有的一个属性,但其目标却是打造一个经过完全和充分测试的系统”。

他就代码覆盖率、TDD 及“充分的测试”提出了以下 6 点主张:

  1. 代码覆盖率只在编写良好的测试中才有意义。如果测试没有价值,那么它也不会对你有什么帮助。
  2. 如果测试通过,我们应该根据行 / 分支来统计代码覆盖率。
  3. 代码覆盖率可以指出测试不充分的地方,但无法保证测试的充分性。
  4. 测试驱动的代码最可能拥有良好的覆盖率。
  5. 测试驱动的代码将会得到充分的测试,因为代码编写者编写了构成代码需求的所有测试。
  6. 覆盖充分的代码不一定是得到充分测试的代码。

接下来 Gruber 简要概述了 TDD(已经成为一种设计技术,而不仅仅是一个测试工具)如何有助于彻底的测试。他进一步强调“代码覆盖率(在 TDD 的上下文中)有助于你发现某些遗漏的东西,但仅此而已”,在这一点上他与 Pang 已经达成了共识。

早就有人对滥用代码覆盖率度量提出了警告,但我们仍然要不断重复这种警告,因为有越来越多的公司开始采用 TDD(恭喜啊!),他们很容易陷入“覆盖率圣经”这种反模式中。

请查看 :blog"> Jason Rudolph 最近发表的一篇博文中的“Pragmatic Use of Code Coverage Analysis”一节以了解这方面的更多信息,它就该主题援引了很多专家的观点。

查看英文原文: Careful With Your Coverage Metrics

2008-11-17 08:28600
用户头像

发布了 88 篇内容, 共 263.0 次阅读, 收获喜欢 8 次。

关注

评论

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

如何拉取多架构镜像存储到私有库

许大强

罗拉rola-ip海外IP能在哪找?

Geek_bf375d

爬虫 代理IP 代理IP设置 免费代理ip 跨境电商

揭秘!9个月完成亚运会的整体数字化观测

观测云

数据分析 数据可视化 亚运会

十大项目管理工具全面对比!

爱吃小舅的鱼

项目管理 项目经理 项目管理系统

情感语音识别:技术发展与挑战

来自四九城儿

Open AI “宫斗”结束,自主意识AI初现,我们会被取代吗?

代码生成器研究

海外原生IP代理有哪几种获取方式?

Geek_bf375d

爬虫 IP 代理IP 代理IP设置 跨境电商

低代码模式会成为主流吗?

代码生成器研究

海外IP能在哪找?

Geek_bf375d

爬虫 IP 代理IP 免费代理ip 跨境电商

机器学习与低代码:简化AI开发的未来

快乐非自愿限量之名

人工智能 机器学习 低代码

1688商品详情的API接口是什么?

技术冰糖葫芦

api 网关

大模型的未来是垂直领域大模型

QE_LAB

大模型训练 大模型 ChatGPT

网络爬虫用什么罗拉ROLA-IP代理IP比较好?

Geek_bf375d

语言忠诚?离不开舒适圈?为什么程序员不喜欢更换编程语言?

代码生成器研究

Blender 4.0来了!看新版带来了哪些精彩的新功能!

Finovy Cloud

购买海外IP都有哪些实惠优质的平台

Geek_bf375d

多架构镜像如何制作

许大强

我试图通过这篇文章告诉你,什么是神奇的泛化调用。

快乐非自愿限量之名

前端 开发语言

怎么看待争议 低代码?

代码生成器研究

大语言模型与API融合:探索LLMs的概念及实用应用

幂简集成

AI 创新 API 新技术 LLMs

情感语音识别的现状与未来趋势

来自四九城儿

re:Invent 2023 开发者指南来了!@开发者们,Let's 构!

亚马逊云科技 (Amazon Web Services)

re:Invent 生成式人工智能 Amazon DeepRacer

多平台小程序编译适配,超级App的基建利器?

Speedoooo

小程序容器 超级app 小程序技术 小程序容器技术

一天之内“三个离职群都满了”;飞行出租车的时代就此开启?丨 RTE 开发者日报 Vol.94

声网

10年资深码农,聊聊程序员的35岁危机

伤感汤姆布利柏

程序员 面试 低代码 35岁危机

集结!Milvus 老友汇 · 线下 Meetup 来袭

Zilliz

Meetup Milvus Zilliz AIGC KubeBlocks

海外住宅IP代理如何去判断?

Geek_bf375d

爬虫 IP 代理IP 免费代理ip 跨境电商

情感语音识别:技术前沿与未来趋势

来自四九城儿

Scrum:敏捷开发流程的核心步骤

顿顿顿

敏捷开发流程 scrum工具 scrum敏捷工具

活动报名|KubeBlocks × Milvus「AI 时代背景下的云原生数据库」主题 Meetup

小猿姐

请善用覆盖率度量_Java_Mike Bria_InfoQ精选文章