什么是代码覆盖率?你如何衡量它?
有人问我这个关于自动化测试代码覆盖率的问题。似乎在自动化工具之外,它更像是艺术而不是科学。是否有任何关于如何使用代码覆盖的实际示例?
什么是代码覆盖率?你如何衡量它?
有人问我这个关于自动化测试代码覆盖率的问题。似乎在自动化工具之外,它更像是艺术而不是科学。是否有任何关于如何使用代码覆盖的实际示例?
当前回答
代码覆盖率测试的目的是找出有多少代码被测试。代码覆盖工具生成一个报告,其中显示了多少应用程序代码已经运行。代码覆盖率以百分比来衡量,越接近100%越好。这是一个白盒测试的例子。下面是一些用于代码覆盖率测试的开源工具:
Simplecov -用于Ruby Coverlet -用于。net Cobertura -用于Java cover .py -用于Python Jest -用于JavaScript
其他回答
在前面的回答中已经很好地解释了代码覆盖率。所以这更像是对问题第二部分的回答。
我们使用了三个工具来确定代码覆盖率。
JTest - a proprietary tool built over JUnit. (It generates unit tests as well.) Cobertura - an open source code coverage tool that can easily be coupled with JUnit tests to generate reports. Emma - another - this one we've used for a slightly different purpose than unit testing. It has been used to generate coverage reports when the web application is accessed by end-users. This coupled with web testing tools (example: Canoo) can give you very useful coverage reports which tell you how much code is covered during typical end user usage.
我们使用这些工具
检查开发人员已经编写了良好的单元测试 确保在黑盒测试期间遍历所有代码
代码覆盖率是在自动化测试运行时执行代码的行数/块数/弧数的度量。
代码覆盖率是通过使用专门的工具来检测二进制文件,以添加跟踪调用,并对检测的产品运行一整套自动化测试来收集的。好的工具不仅可以告诉您执行的代码的百分比,还可以让您深入数据,并查看在特定测试中执行了哪些代码行。
我们的团队使用Magellan——一套内部代码覆盖工具。如果你是一个。net商店,Visual Studio有集成的工具来收集代码覆盖率。您还可以滚动一些定制工具,就像本文所描述的那样。
如果你是一个c++商店,英特尔有一些工具可以运行在Windows和Linux上,尽管我没有使用过它们。我也听说GCC有gcov工具,但我对它一无所知,也不能给你一个链接。
至于我们如何使用它——代码覆盖率是我们每个里程碑的退出标准之一。我们实际上有三个代码覆盖率指标——来自单元测试的覆盖率(来自开发团队)、场景测试的覆盖率(来自测试团队)和组合覆盖率。
顺便说一句,虽然代码覆盖率是衡量你做了多少测试的一个很好的指标,但它不一定是衡量你测试产品的好坏的一个很好的指标。除了代码覆盖率,您还应该使用其他指标来确保质量。
请记住,拥有“100%代码覆盖率”并不意味着所有内容都被完全测试了——虽然这意味着每一行代码都被测试了,但这并不意味着它们在每种(常见)情况下都被测试了。
我将使用代码覆盖率来突出显示我可能应该为其编写测试的代码。例如,如果任何显示myImportantFunction()的代码覆盖工具在运行我当前的单元测试时没有执行,那么它们可能应该得到改进。
基本上,100%的代码覆盖率并不意味着您的代码是完美的。使用它作为编写更全面(单元)测试的指南。
代码覆盖率测试的目的是找出有多少代码被测试。代码覆盖工具生成一个报告,其中显示了多少应用程序代码已经运行。代码覆盖率以百分比来衡量,越接近100%越好。这是一个白盒测试的例子。下面是一些用于代码覆盖率测试的开源工具:
Simplecov -用于Ruby Coverlet -用于。net Cobertura -用于Java cover .py -用于Python Jest -用于JavaScript
在前面的回答中,已经很好地解释了代码覆盖率。我只是补充了一些与工具相关的知识,如果你在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代码覆盖率的有用链接。