在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

请善用覆盖率度量

  • 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:28730
用户头像

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

关注

评论

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

架构师培训 -10 微服务、秒杀

刘敏

Week 10 学习总结

Jeremy

week 10 总结

Geek_z9dmvw

架构师训练营 Week 10 总结

Wancho

芯片破壁者(十二.上):“大头儿子”模式下的韩国半导体

脑极体

Week10总结

leis

架构师训练营第十周作业

子豪sirius

堆栈神奇应用之CXO让我做一个计算器!!

架构师修行之路

数据结构 堆栈

来自面试官的技术面试题

xcbeyond

Java 数据库 面试 自我介绍

架构师训练营 Week 10 作业

Wancho

架构师训练营第 0 期第 10 周作业

无名氏

微服务 领域驱动设计

练习 10-1

闷骚程序员

架构师训练营Week10学习总结

Frank Zeng

【架构师训练营 - week10 -1】作业

早睡早起

面试官:您能说说序列化和反序列化吗?是怎么实现的?什么场景下需要它?

xcbeyond

Java 面试 序列化

架构师训练营 - 第十周 - 总结

Anrika

极客大学架构师训练营

架构师训练营Week10作业

Frank Zeng

week 10作业

Geek_z9dmvw

Dubbo微服务调用时序图及微服务架构个人见解

潜默闻雨

极客大学架构师训练营 0 期 week 10 作业

chun1123

dubbo DDD

第十周课程总结

考尔菲德

架构师训练营第十周作业

吴吴

极客大学架构师训练营 --第10周

李朋

微服务&DDD

极客大学架构师训练营

对中台思维的思考

朱月俊

微服务&DDD&中台

dony.zhang

中台 微服务 DDD

极客大学架构师训练营 0 期 week 10 学习笔记

chun1123

学习 DDD

Week 10 命题作业

Jeremy

第十周作业

考尔菲德

Eureka常见问题汇总及注意事项

xcbeyond

Java SpringCloud Eureka 服务注册与发现 常见问题

微服务架构一点思考和认识

leis

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