Bri*_*n G 254 testing computer-science code-coverage
什么是代码覆盖率以及您如何衡量它?
我被问到有关我们自动化测试代码覆盖率的问题.似乎在自动化工具之外,它更多的是艺术,而不是科学.有没有关于如何使用代码覆盖的实际示例?
Fra*_*nov 228
代码覆盖率是在自动化测试运行时执行代码的行/块/弧数的度量.
通过使用专用工具收集代码覆盖率来检测二进制文件以添加跟踪调用并针对已检测产品运行全套自动化测试.一个好的工具不仅可以为您提供执行代码的百分比,还可以深入了解数据并查看在特定测试期间执行的代码行.
我们的团队使用Magellan - 一套内部代码覆盖工具.如果您是.NET商店,Visual Studio已集成了用于收集代码覆盖率的工具.您也可以滚动一些自定义工具,如本文所述.
如果您是C++商店,英特尔有一些适用于Windows和Linux的工具,但我还没有使用它们.我也听说有GCC的gcov工具,但我对此一无所知,也无法给你一个链接.
至于我们如何使用它 - 代码覆盖率是我们每个里程碑的退出标准之一.我们实际上有三个代码覆盖度量标准 - 来自单元测试(来自开发团队),场景测试(来自测试团队)和组合覆盖的覆盖范围.
顺便说一句,虽然代码覆盖率是衡量您正在进行多少测试的一个很好的指标,但它并不一定是您测试产品的良好指标.您应该使用其他指标以及代码覆盖率来确保质量.
aza*_*arp 174
代码覆盖率基本上测试了测试中涵盖了多少代码.因此,如果你有90%的代码覆盖率,那么有10%的代码不在测试范围内.我知道你可能会认为90%的代码都被覆盖了,但你必须从不同的角度来看.什么阻止您获得100%的代码覆盖率?
一个很好的例子是:
if(customer.IsOldCustomer())
{
}
else
{
}
Run Code Online (Sandbox Code Playgroud)
现在,在上面的代码中有两个路径/分支.如果您总是点击"是"分支,那么您不会覆盖其他部分,它将显示在代码覆盖率结果中.这很好,因为现在您知道未涵盖的内容,您可以编写测试来覆盖其他部分.如果没有代码覆盖,那么你只是坐在定时炸弹上爆炸.
NCover是衡量代码覆盖率的好工具.
dbr*_*dbr 59
请记住,拥有"100%代码覆盖率"并不意味着所有内容都经过了全面测试 - 虽然这意味着每行代码都经过测试,但并不意味着它们在每种(常见)情况下都经过测试.
我会使用代码覆盖来突出显示我应该为其编写测试的代码.例如,如果任何代码覆盖工具显示myImportantFunction()在运行我当前的单元测试时没有执行,那么它们应该可以改进.
基本上,100%的代码覆盖率并不意味着您的代码是完美的.使用它作为编写更全面(单元)测试的指南.
小智 49
补充以前许多答案中的几点:
代码覆盖率意味着您的测试集覆盖源代码的程度.即,测试用例集涵盖的源代码的程度.
如上面的答案所述,有各种覆盖标准,如路径,条件,功能,陈述等.但是要涵盖的其他标准是
注意:静态代码分析将查找是否存在任何无法访问的代码或挂起的代码,即任何其他函数调用未涵盖的代码.还有其他静态覆盖.即使静态代码分析报告涵盖100%代码,如果测试了所有可能的代码覆盖率,它也不会提供有关测试集的报告.
Viv*_*ira 13
在以前的答案中已经很好地解释了代码覆盖率.所以这更像是对问题第二部分的回答.
我们使用了三种工具来确定代码覆盖率.
我们使用这些工具
代码覆盖率只是测试代码的度量.可以测量多种覆盖标准,但通常是程序中的各种路径,条件,功能和语句构成总覆盖范围.代码覆盖率指标只是执行每个覆盖标准的测试的百分比.
至于如何跟踪我的项目的单元测试覆盖率,我使用静态代码分析工具来跟踪.
对于Perl ,我经常在我的模块上使用优秀的Devel :: Cover模块.
如果构建和安装由Module :: Build管理,您可以简单地运行./Build testcover
以获得一个漂亮的HTML站点,该站点告诉您每个子,行和条件的覆盖率,使用漂亮的颜色可以轻松查看未覆盖的代码路径.
归档时间: |
|
查看次数: |
174374 次 |
最近记录: |