什么是代码覆盖率?你如何衡量它?
有人问我这个关于自动化测试代码覆盖率的问题。似乎在自动化工具之外,它更像是艺术而不是科学。是否有任何关于如何使用代码覆盖的实际示例?
什么是代码覆盖率?你如何衡量它?
有人问我这个关于自动化测试代码覆盖率的问题。似乎在自动化工具之外,它更像是艺术而不是科学。是否有任何关于如何使用代码覆盖的实际示例?
当前回答
在前面的回答中,已经很好地解释了代码覆盖率。我只是补充了一些与工具相关的知识,如果你在iOS和OSX平台上工作,Xcode提供了测试和监控代码覆盖率的工具。
参考链接:
https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/07-code_coverage.html
https://medium.com/zendesk-engineering/code-coverage-and-xcode-6b2fb8756a51
两者都是学习和探索Xcode代码覆盖率的有用链接。
其他回答
代码覆盖率只是对所测试代码的度量。有多种可以度量的覆盖标准,但通常是程序中的各种路径、条件、函数和语句构成了总覆盖。代码覆盖率度量是执行每种覆盖率标准的测试的百分比。
至于我如何跟踪项目中的单元测试覆盖率,我使用静态代码分析工具来跟踪。
对于Perl,有优秀的Devel::Cover模块,我经常在我的模块上使用它。
如果构建和安装由Module:: build管理,你可以简单地运行./ build testcover来获得一个漂亮的HTML站点,它告诉你每个子、行和条件的覆盖率,漂亮的颜色可以很容易地看到哪些代码路径没有被覆盖。
代码覆盖率是在自动化测试运行时执行代码的行数/块数/弧数的度量。
代码覆盖率是通过使用专门的工具来检测二进制文件,以添加跟踪调用,并对检测的产品运行一整套自动化测试来收集的。好的工具不仅可以告诉您执行的代码的百分比,还可以让您深入数据,并查看在特定测试中执行了哪些代码行。
我们的团队使用Magellan——一套内部代码覆盖工具。如果你是一个。net商店,Visual Studio有集成的工具来收集代码覆盖率。您还可以滚动一些定制工具,就像本文所描述的那样。
如果你是一个c++商店,英特尔有一些工具可以运行在Windows和Linux上,尽管我没有使用过它们。我也听说GCC有gcov工具,但我对它一无所知,也不能给你一个链接。
至于我们如何使用它——代码覆盖率是我们每个里程碑的退出标准之一。我们实际上有三个代码覆盖率指标——来自单元测试的覆盖率(来自开发团队)、场景测试的覆盖率(来自测试团队)和组合覆盖率。
顺便说一句,虽然代码覆盖率是衡量你做了多少测试的一个很好的指标,但它不一定是衡量你测试产品的好坏的一个很好的指标。除了代码覆盖率,您还应该使用其他指标来确保质量。
对于PHP,你应该看看Sebastian Bergmann的Github
提供PHP代码覆盖率信息的收集、处理和呈现功能。
https://github.com/sebastianbergmann/php-code-coverage
代码覆盖率基本上告诉您测试中覆盖了多少代码。例如,如果您有90%的代码覆盖率,这意味着测试中没有覆盖10%的代码。
我知道您可能会想,如果覆盖了90%的代码,就已经足够好了,但是您必须从不同的角度看问题。是什么阻止您获得100%的代码覆盖率?
一个很好的例子是:
if(customer.IsOldCustomer())
{
}
else
{
}
现在,在上面的代码中,有两个路径/分支。如果你总是点击“YES”分支,你没有覆盖“else”部分,它将显示在代码覆盖结果中。这很好,因为现在您知道了没有覆盖的内容,并且可以编写一个测试来覆盖“else”部分。如果没有代码覆盖,您就只是坐在一个定时炸弹上,等待爆炸。
NCover是一个衡量代码覆盖率的好工具。