今天就跟大家聊聊有关如何使用覆盖率指标来度量测试套件Test Suite的质量,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
专注于为中小企业提供网站设计制作、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业惠来免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
有两种比较流行的测试覆盖率的度量方法:
代码覆盖率
分支覆盖率
覆盖率度量会显示一个测试套件(Test Suite)会执行多少代码,范围从 0 至 100%。
除了上述两种方法之外,还有很多其它的度量方法。它们都是被用来评估一个测试套件的质量的。
通常人们会认为,这个覆盖率越高越好。不幸的是,这没那么简单,覆盖率度量确实能提供非常有价值的反馈,但是它们无法有效的评估出测试套件的质量。这一点与代码可进行单元测试的能力一样:覆盖率度量是一个非常好的负向指示(能评估出测试套件是否较差),但它无法评估出测试套件是否很好。
第一种,也是使用最多的度量方式就是代码覆盖率(code coverage,也叫测试覆盖率 test coverage)。它的公式如下:
例如:
可以看到有效代码行数变成了 3 行(8、9、10),它们都是绿色,说明都被覆盖了。从工具也可以看到覆盖率变成了 100%:
想要使用复制覆盖率,你得想办法把代码里所有可能的分支求和,然后再检测测试走了多少分支。
例子:
还是之前的例子,IsStringLong 方法里面一共有两种情况,也就是两个分支。而测试只会运行小于等于 5 这种情况,所以分支覆盖率为 50%:
而我们只考虑了其中一种。所以您可能会遇到许多极端情况,并且无法查看测试是否将所有情况都考虑在内。
这并不是说覆盖率度量应该考虑外部库的代码路径(它们不应该),而是说明你不能指望这些度量来评估单元测试的质量好坏。覆盖率度量无法判断您的测试是否详尽无遗; 也不能说明是否有足够的测试。
要把覆盖率度量当成一个指标,而不是一个目标。
就如同生病住院的病人,体温高可能表示发烧,它是一个有用的观察。但是医院不能把不择手段降低病人的体温当成治病的目标。
通常,如果系统核心某块的测试的覆盖率较高的话是很好的,但是如果把高覆盖率当成目标就不好了。
就个人而言:我认为覆盖率低于 60% 肯定不好,这说明有大量的代码未测试。但是更高的覆盖率数字并不能代表什么。所以度量覆盖率只是验证测试套件质量的第一步而已。
看完上述内容,你们对如何使用覆盖率指标来度量测试套件Test Suite的质量有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。