如何实现10亿行代码的测试覆盖率?
图片来自于谷歌,其中彩色标识的行号(用红色矩形框突出显示)用来可视化地查看代码覆盖情况。行号如果被测试覆盖,则为绿色;如果没有被覆盖,则为橙色;如果没有检测该行,则为白色。 在软件开发中,一个称为代码覆盖率的常用度量标准,用于度量部署代码之前,所执行的测试覆盖到的系统代码的百分比。代码覆盖率通常由单独的软件程序自动测量,或者可以从命令行手动启动某些代码覆盖率工具。测试结果准确地显示了在运行测试套件时执行了哪些代码行,并且可以揭示哪些代码行可能需要进一步的测试。 理想情况下,软件开发团队的目标是 100% 的代码覆盖率。但在现实中,这种情况很少发生,因为有些代码块会走到很多不同的执行路径,也因为各种边缘情况,基于系统的需求,应该(或不应该)考虑这些边缘情况。 ,这个问题仍然存在争议。 一些人认为,开发人员可能把焦点放在了数量上,而非质量上,创建测试只是为了满足代码覆盖率,而不是足够健壮地识别高风险或关键的代码区域。其他人则对它的成本效益提出了担忧——它需要宝贵的开发人员时间来评审结果,而且不一定能提高测试质量。 对于像谷歌这样的大型组织(拥有 10 亿行代码,每天接收数万次提交并支持七种编程语言)来说,度量代码覆盖率尤其困难。 谷歌的 AI 研究人员 Marko Ivanković and Goran Petrović最近的一项研究,提供了这家科技巨头代码覆盖率基础设施的幕后情况,它由四个核心层组成。底层组合了针对每种编程语言设计的代码覆盖率库,中间层将代码覆盖自动化流程集成到了公司的开发和构建工作流中。顶层使用代码编辑器和其他的定制工具,将代码覆盖信息可视化显示出来。 作为这项研究的一部分,Ivanković和 Petrović分析代码覆盖率在 5 年期间的采用率。他们发现,尽管谷歌没有强制规定代码覆盖率,但自 2014 年以来,采用率却一直在稳步增长。2018 年第一季度,超过 90% 的项目使用了自动的代码覆盖工具。
研究人员还从 3000 名随机选择的谷歌开发人员和其他非工程人员中,收集了 512 份关于代码覆盖率有用性的调查问卷。在受访者中,只有 45% 的人在代码修改时频繁使用代码覆盖率测试,而 40% 的人在进行代码评审时定期地使用代码覆盖率。 (编辑:衡水站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |