温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用覆盖率指标来度量测试套件Test Suite的质量

发布时间:2022-01-04 15:15:34 来源:亿速云 阅读:138 作者:柒染 栏目:大数据

今天就跟大家聊聊有关如何使用覆盖率指标来度量测试套件Test Suite的质量,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

使用覆盖率来度量测试套件Test Suite的质量

有两种比较流行的测试覆盖率的度量方法:

  • 代码覆盖率

  • 分支覆盖率

覆盖率度量会显示一个测试套件(Test Suite)会执行多少代码,范围从 0 至 100%。

除了上述两种方法之外,还有很多其它的度量方法。它们都是被用来评估一个测试套件的质量的。

通常人们会认为,这个覆盖率越高越好。不幸的是,这没那么简单,覆盖率度量确实能提供非常有价值的反馈,但是它们无法有效的评估出测试套件的质量。这一点与代码可进行单元测试的能力一样:覆盖率度量是一个非常好的负向指示(能评估出测试套件是否较差),但它无法评估出测试套件是否很好。

代码覆盖率度量

第一种,也是使用最多的度量方式就是代码覆盖率(code coverage,也叫测试覆盖率 test coverage)。它的公式如下:

如何使用覆盖率指标来度量测试套件Test Suite的质量

例如:

如何使用覆盖率指标来度量测试套件Test Suite的质量

如何使用覆盖率指标来度量测试套件Test Suite的质量

可以看到有效代码行数变成了 3 行(8、9、10),它们都是绿色,说明都被覆盖了。从工具也可以看到覆盖率变成了 100%:

如何使用覆盖率指标来度量测试套件Test Suite的质量

想要使用复制覆盖率,你得想办法把代码里所有可能的分支求和,然后再检测测试走了多少分支。

例子:

如何使用覆盖率指标来度量测试套件Test Suite的质量

还是之前的例子,IsStringLong 方法里面一共有两种情况,也就是两个分支。而测试只会运行小于等于 5 这种情况,所以分支覆盖率为 50%:

如何使用覆盖率指标来度量测试套件Test Suite的质量

如何使用覆盖率指标来度量测试套件Test Suite的质量

如何使用覆盖率指标来度量测试套件Test Suite的质量

而我们只考虑了其中一种。所以您可能会遇到许多极端情况,并且无法查看测试是否将所有情况都考虑在内。

这并不是说覆盖率度量应该考虑外部库的代码路径(它们不应该),而是说明你不能指望这些度量来评估单元测试的质量好坏。覆盖率度量无法判断您的测试是否详尽无遗; 也不能说明是否有足够的测试。

特定的覆盖率数字

要把覆盖率度量当成一个指标,而不是一个目标。

就如同生病住院的病人,体温高可能表示发烧,它是一个有用的观察。但是医院不能把不择手段降低病人的体温当成治病的目标。

通常,如果系统核心某块的测试的覆盖率较高的话是很好的,但是如果把高覆盖率当成目标就不好了。

就个人而言:我认为覆盖率低于 60% 肯定不好,这说明有大量的代码未测试。但是更高的覆盖率数字并不能代表什么。所以度量覆盖率只是验证测试套件质量的第一步而已。

看完上述内容,你们对如何使用覆盖率指标来度量测试套件Test Suite的质量有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI