• 我的订阅
  • 科技

有必要追求 100% 的单测覆盖率吗?

类别:科技 发布时间:2023-07-05 12:00:00 来源:CSDN

【编者按】本文主要讨论了一个项目的开发过程中对测试覆盖率的要求以及其带来的挑战,强调了 100% 的测试覆盖率的重要性和好处,尤其是在避免隐藏错误和减少回归问题方面的作用,在团队规模扩大时尤为重要。

原文链接:https://brandur.org/fragments/100-percent-coverage

作者 | brandur 译者 | 明明如月

责编 | 夏萌

出品 | CSDN(ID:CSDNnews)

有必要追求 100% 的单测覆盖率吗?

我们正在开发一个项目,该项目不仅要求达到 100% 的测试覆盖率,还要求达到 100% 的分支覆盖率。这个过程颇为艰难。你的任何一次改动都可能无意中影响到测试覆盖率。

因此,如果一个标准的开发流程是:

1. 添加功能

2. 编写测试/修复bug,那么在这个项目中,你需要遵循一种三步流程:添加功能;编写测试/修复bug;追踪每一个未被覆盖的分支,并编写逐渐复杂的测试用例以覆盖这些分支。

我清楚地知道并非只有我对此持有怀疑态度。业务代码覆盖率的要求是开发人员常见的抱怨之一,与测试组件运行速度缓慢或繁琐的管理问题一样常见。

然而,100% 的测试覆盖率无疑是有益的,尤其是在如 Ruby 这样的语言中。未执行的分支可能隐藏着严重的错误,这些错误虽然能够被解释器接受,但一旦执行,就可能导致生产环境崩溃。

在思考 100% 覆盖率是好是坏的过程中,我突然意识到,人们往往忽视了一个重要的方面,那就是它具有棘轮效应,一旦实现 100% 测试覆盖率的习惯形成,就具有不可逆性,很难再回到之前的状态。我们还有一个项目,是由一个只有两人的小团队来支持,不要求达到 100% 的覆盖率。它的测试组件运行得很好,我们采取了一种非正式的策略,即尽可能详尽的测试,但并不强求 100% 的覆盖率。而保证这一点的唯一方法就是依赖每个开发者的良好自觉性,以及一定程度的代码审查。如果我们要添加第三个成员,我们希望他们能分享我们对测试的审美偏好,或者至少能学会模仿,但最终会发现这通常无法保证。如果这个第三个成员在他们任职的几个月后还常常忽视测试,未经充分测试的功能将变得越来越多,由更改带来的风险也随之增大,我们预见到回归问题将变得更多。(注:回归问题指:在进行软件开发过程中,对已有功能或代码的更改可能引入新的错误或导致已有功能的失效。)

虽然我在上面用一个团队从两个人扩展到三个人的情况说明这个问题,但一旦你的团队规模达到 10人甚至 100 人,你必然会碰到一些对测试理解不深的人。

尽管追求 100% 的测试覆盖率可能会让人感到不愉快,但我还是更倾向于认为它是有益的。测试本身对防止回归问题非常有效,在更大的团队中,设定严格的测试基准可能更为重要。

你们认为追求 100% 的单测覆盖率有必要吗?

▶仅用 5 小时!中国团队推出「全球首颗」AI 全自动设计 CPU,性能比肩 Intel 486!

▶ “盗窃”而来的 3000 亿单词?ChatGPT 摊上事了,遭索赔 30 亿美元!

▶ QQ 用 Electron 重构后,终实现 Linux、macOS、Windows 三端架构统一! 返回搜狐,查看更多

责任编辑:

以上内容为资讯信息快照,由td.fyun.cc爬虫进行采集并收录,本站未对信息做任何修改,信息内容不代表本站立场。

快照生成时间:2023-07-05 14:45:12

本站信息快照查询为非营利公共服务,如有侵权请联系我们进行删除。

信息原文地址:

制定整体数字测试计划
...程,只要代码发生更改,该流程就会自动运行测试。代码覆盖率分析:创建一个测试计划,其中包括使用JaCoCo和SonarQube等工具来分析代码覆盖率并确定未测试的代码区域。测试
2023-04-16 18:11:00
nextgenios系统的可靠性和稳定性
...分析,更快进行调试;通过访问全球备库最大化提高测试覆盖率。“自动化压力测试揭示了蓝牙配对和连接问题,而这些问题在我们的标准测试中没有被发现。ATAM是一个很好的工具。” N
2023-09-27 04:41:00
致敬“她”力量|浪潮海岳GS Cloud测试团队:质量保障“半边天”,见证“她们”的不凡故事
...可实现众多被测服务器的自动更新;自动化测试达到功能覆盖率100%,重点流程覆盖率90%,在兼容庞大工作量的前提下实现回归测试自动化,让不可能成为了可能。 另一方面,团队着力
2024-03-14 12:15:00
优维科技解构CI/CD本质:很强大但并不万能
...一个好的CI流程依赖于一组好的测试。维护一组具有足够覆盖率且不脆弱的测试并非易事,高测试覆盖率通常需要更长的时间才能运行,这会影响开发人员的生产力。这是一个艰难的平衡操作,但
2023-05-29 18:00:00
用Playwright 进行组件测试
...根源,而不是必须搜索整个系统才能找到它。更好的测试覆盖率:通过测试单个组件,开发人员可以确保系统的每个部分都经过彻底测试,这有助于提高整体测试覆盖率。预先请求节点已安装。VS
2023-04-23 15:38:00
ui自动化测试技术发展历程
...本依赖图像和文字识别,界面元素识别不受限,测试场景覆盖率提升了近40%。人效分析方面,以手机银行为例,每2周进行一次全量回归测试
2024-04-04 02:40:00
一汽-大众id.6crozz电池安全测试
...第二款产品,将进一步提升一汽-大众ID.家族的纯电市场覆盖率,同时承担一汽-大众品牌向上的重任,强化ID.家族纯电动技术领先形象,助力一汽-大众在即将到来的智能电动时代持续保
2023-03-12 12:58:00
引领未来交通 | Parasoft 携手 eVTOL迈入软件安全智能化时代
...供针对需求双向可追溯性、源代码测试、目标代码测试、覆盖率分析、专用的遵从性仪表盘等解决方案,在源代码测试执行中,提供包括静态分析(MISRA
2024-09-25 16:22:00
codeartssnap智能编程插件已上线
... 单元测试用例生成:自动创建单元测试用例,提高测试覆盖率,确保每个功能和场景都被测试到。告别繁杂的手动编写,实现单元测试用例自动创建,有效提高测试覆盖率。代码生成:根据自然
2023-12-28 21:47:00
更多关于科技的资讯: