背景

最近看到一篇博客,作者是一名ThoughtWorker,文中提到要在他的项目中贯彻100%单元测试覆盖率。我在留言中对100%测试覆盖提出了一些质疑。看到“透明"的回复并且阅读了他的《Why is 100% test coverage easier to achieve》(需FQ)。有些想法,但是Blogbus的评论有字数限制。因此,贴在自己博客里面,希望和dreamhead和透明继续讨论

@透明

拜读了你的博文。FQ确实很辛苦。对ThoughtWorks的敬仰又进一层。

但是,对你的观点依然有一些质疑。你认为没有测试覆盖的代码就是不必要的(MUDA)。例如:getter, setter。我想还有一个例外,是健壮性代码(包括必要的断言检查和容错处理)。

我认为这里存在两类问题:1. 保持接口的语义清晰。2.保持模块健壮。

对于接口的语义清晰,我认为对于产品的可维护性会很有帮助。毕竟你写的模块,应该让使用者更易用。既然我们在产品的外部接口上应该精雕细琢。没理由在内部接口上如此惜墨如金啊。

对于模块的健壮性,理论上可以通过添加最够的单元测试后达到你所说的程度(没有单元测试覆盖的代码都是MUDA)。但是,添加单元测试也是成本,很多时候,我们添加这样的容错代码仅仅是两行代码。但是,为了证明这行容错是必要的,却要花费更多的时间和精力。这样真的值得吗?我们新写的这些单元测试是不是MUDA呢?

转载于:https://www.cnblogs.com/Cajon/archive/2011/05/15/2046871.html

100%测试覆盖率真的有用吗?相关推荐

  1. 软件分支测试覆盖率 100%,测试覆盖率之三——测试覆盖率100%相关的话题

    上一篇文章中,介绍了测试覆盖率的意义之类的东西.测试覆盖率可以帮助我们检查测试质量,检查测试用例的有效率.如果有兴趣的话,可以阅读测试覆盖率之二--测试覆盖率有什么用? 关于测试覆盖率,我个人的感觉是 ...

  2. Diango博客--25.使用Coverage统计测试覆盖率

    文章目录 1. 前言 2. 安装 Coverage 3. 简单配置 Coverage 4. 运行 Coverage 5. 完善 Coverage 配置 6. 生成 HTML 报告 7. 完善单元测试 ...

  3. 配置 jacoco 以提供更合理的测试覆盖率

    最近在做一些代码的重构和基础库的迁移,这样的工作绝大部分时候不产生新的功能点,每次更换了类库后也都会将原来对应的测试同步迁移过来,保证新的代码和原来的代码一样工作.不过在迁移的过程中我发现 jacoc ...

  4. 用Cobertura 测量测试覆盖率

    Cobertura 是一种开源工具,它通过检测基本的代码,并观察在测试包运行时执行了哪些代码和没有执行哪些代码,来测量测试覆盖率.除了找出未测试到的代码并发现 bug 外,Cobertura 还可以通 ...

  5. sonar覆盖率怎么统计的_实战|Java 测试覆盖率 Jacoco插桩的不同形式总结和踩坑记录(上)...

    本文为霍格沃兹测试学院优秀学员关于 Jacoco 的小结和踩坑记录.测试开发进阶学习,文末加群. 一.概述 测试覆盖率是老生常谈的话题.因为我测试理论基础不是很好,这里就不提需求.覆盖率等内容,直奔主 ...

  6. 如何理解软件的测试覆盖率?

    测试覆盖率通常用来衡量测试的充分性和完整性. 从广义来讲,大致分为业务层面的需求覆盖率和技术层面的代码覆盖率. 一.需求覆盖率 通常通过需求管理工具,来建立需求和测试用例的对应关系,并以此来计算测试覆 ...

  7. 测试覆盖率是软件测试的重要组成部分?当然是,必须是啊!

    摘要: 就软件质量而言,测试覆盖率是软件测试中的重要指标.接下来一起了解测试范围.测试技术,测试标准以及如何改进它.由于软件中普遍存在的错误,全世界都见证了一些灾难性事件.2008年在英国希思罗机场5 ...

  8. 测试覆盖率之一——测试覆盖率分类(转)

    转一篇,别人写的关于覆盖率的文章,没事常看看琢磨琢磨 测试覆盖率之一--测试覆盖率分类(转) 关于覆盖率,网络上最常见的两个词应该是"测试覆盖率"(Test Coverage)和& ...

  9. Jest 学习04 - DOM 测试、快照测试、测试覆盖率

    DOM 测试 官方文档:DOM Manipulation 直接操作 DOM 的代码通常被认为难以测试,因为操作 DOM 就要使用浏览器环境的 DOM Api,而 Jest 是运行在 Node 环境中的 ...

最新文章

  1. 深入浅出Spring Security(一):三句话解释框架原理
  2. C# Lambda表达式 基础
  3. GetWindowText和GetDlgItemText的区别
  4. 科普:什么是IPV4?什么是IPV6?
  5. 如何免费申请博客 用WordPress建设网站
  6. 小凯的疑惑(Noip 提高组 2017 d1 1)+[USACO4.1]麦香牛块Beef McNuggets
  7. Win10设置每天定时运行某程序(关注不迷路,加星不糊涂哦~)
  8. 计算机浏览器无法上网怎么办,电脑有网络,但是浏览器不能上网怎么办
  9. 条形码的正确使用方法和技巧
  10. 变速器--中英文翻译
  11. submit()和onsubmit()的区别
  12. android nfc公交,安卓手机怎么刷公交、地铁 移动NFC手机交通业务介绍
  13. android 手电筒开发,Android之实现手电筒实例
  14. 第十六届全国大学生智能车竞赛浙江赛区选拔赛成绩汇总
  15. 计算机硬件技术基础课程主要内容,计算机硬件技术基础课程设计.doc
  16. 计算机操作系统-操作系统概述
  17. 可以定制专属的外卖跑腿配送系统吗?OEM定制是什么?
  18. 【Python】根据地名获取经纬度
  19. c语言将图像转换成字符画,25行Java代码将普通图片转换为字符画图片和文本的实现...
  20. 计算机组成原理-中央处理器-控制器功能和原理

热门文章

  1. 天谕手游会长大人与司空望月,谁的人气更高?都是NPC,别比了
  2. 六耳猕猴并不存在,真假猴王的六耳原来是他!
  3. 利用超链接<a>标签的【href】与【onclick】的优先级做提示窗判断,降低删除误操作次数
  4. Python基础之(面向对象初识)
  5. python做基本的图像处理
  6. golang的缓存io简单的使用
  7. 写给大家的编程书(2)
  8. C#使用BackgroundWorker实现多线程
  9. 谈谈DictionaryT1,T2和ListT的问题
  10. php72w redis,docker php7安装php-redis