使用代码覆盖率工具有啥好处? [关闭]

Posted

技术标签:

【中文标题】使用代码覆盖率工具有啥好处? [关闭]【英文标题】:What are the benefits of using a code coverage tool? [closed]使用代码覆盖率工具有什么好处? [关闭] 【发布时间】:2011-05-10 01:03:10 【问题描述】:

鉴于似乎没有关于good level of code coverage for unit tests 是什么的硬性规定,那么使用诸如 NCover 之类的代码覆盖工具有什么好处?

【问题讨论】:

【参考方案1】:

在您的测试套件上运行覆盖率工具的主要优点是可以找到测试不佳的代码区域。我经常按程序集、命名空间和类查看我的覆盖率数字,以查找尚未测试但确实应该测试的代码。

【讨论】:

是的......只是不要太相信这个工具。它们很容易出现误报,尤其是当它们检查语句覆盖而不是分支覆盖时。 您必须了解您使用的工具。覆盖工具有相当数量的旋钮可以扭转。使用 NCover,您可以选择基于方法(执行的方法)、分支或序列点的覆盖率报告。其他覆盖工具提供相同或相似的选项。 (不,我不为 NCover 工作。我只是不时使用他们的工具。)【参考方案2】:

正如您所指出的,仅根据代码覆盖率来衡量软件质量是错误的。但是 NCover 允许您准确检查代码库的哪些部分被单元测试忽略了。由于您应该知道代码的哪些部分执行频率最高,哪些部分最容易出错,因此 NCover 有助于确保它们至少正在被测试。

【讨论】:

我同意。涵盖的代码并没有说明涵盖该代码的测试的质量。但是,代码覆盖工具可以帮助您发现软件中根本没有经过测试的部分。【参考方案3】:

代码覆盖率,作为一个指标,为您提供了两个重要的信息: 首先,它告诉您单元测试涵盖了哪些内容以及未涵盖的内容。如果您将其与代码的静态分析一起使用,您可以轻松找到经常使用且未经测试的复杂代码。当前未测试的复杂、常用代码是您希望为其添加测试的代码。

其次,如果您遵循代码覆盖率的趋势,您可以检测您是否在测试代码方面变得“更好”,或者正在引入遗留代码(即未经测试的代码);您可能希望让您的自动构建运行代码分析,让您知道覆盖率是否正在下降(表明有人正在签入未经测试的代码)。

【讨论】:

【参考方案4】:

即使您有约定的覆盖率水平,代码覆盖率也只会告诉您是否达到了该水平,而不是测试是否良好。但即使覆盖范围有限(以及您可以从中得出的统计数据,例如CRAP(覆盖复杂性,Clover 可以显示与标签云相同的数据,非常整洁)仍然有助于获得粗略的想法代码的测试效果如何以及潜在的错误是否隐藏在哪里。

不存在灵丹妙药,但这并不意味着您不应该使用所有能找到的常规子弹。将它们绑定在一起(CI 的代码覆盖率、趋势和复杂性的覆盖率,可能还有一些代码突变),您最终会得到一种强大的方法来快速通知您潜在的问题。

【讨论】:

以上是关于使用代码覆盖率工具有啥好处? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

中文版编写php代码的工具有那些?

代码覆盖率是个啥概念?

代码覆盖率是个啥概念?

软件测试都用哪些工具?各工具有啥特点?

Angular 单元测试中业力代码覆盖率报告中的 1x 3x 等是啥意思?

有啥方法可以从 Visual Studio 2017 中的 Catch C++ 测试中获取代码覆盖率指标?