代码覆盖工具是否必须进行RUN单元测试才能进行分析?

时间:2013-01-29 15:06:56

标签: unit-testing code-coverage

我是新手使用代码覆盖而不是他们的行为方式。我试过的工具似乎都想运行整套单元测试来进行分析。虽然我曾经以某种方式静态地分析代码,也就是说,无需运行单元测试。

我的假设不正确吗?

2 个答案:

答案 0 :(得分:1)

通常的开源工具,如Cobertura,Emma等,需要运行测试。他们使用诸如字节码操作或AOP之类的东西来检测代码并跟踪在测试运行时执行哪些行,然后生成结果报告。它的简单性使它成为一个非常有吸引力的解决方案。

使用静态分析可以近似测试覆盖率非常有趣,但对于运行测试不切实际的情况,它似乎是最后的选择。引自Ira Baxter's answer引用的论文摘要:

  

测试覆盖率是单元测试质量的重要指标。工具   例如Clover计算覆盖率,首先使用代码检测代码   记录功能,然后记录执行哪些部分   在单元测试运行期间。由于测试覆盖率的计算是动态的   分析,它预先假定软件的工作安装。在   由独立的第三方进行软件质量评估的背景   派对,通常没有工作装置。评估员   可能无法访问所需的库或硬件平台。   安装过程可能不会自动化或记录在案。在这   在论文中,我们提出了一种估算方法测试覆盖率的技术   仅通过静态分析。该技术使用切片   静态调用图来估计动态测试覆盖率。我们解释一下   技术及其实施。我们验证了结果   通过统计比较静态估计得到的值   使用Clover进行动态分析。我们发现之间的相关性很高   静态覆盖估计和系统级实际覆盖但是   对包装和班级的进一步分析揭示了机会   进一步改进。

答案 1 :(得分:0)

标准测试覆盖率工具,在运行时收集信息,必然需要一些东西来运用代码,而测试套件至少具有覆盖所有功能的目的。如果你没有测试套件,你可以运行临时测试,但你的覆盖范围可能不太好,当然这是一个难以重复的实验。

但您不一定要使用动态分析。这个paper显示了如何通过静态分析获得非常好的近似测试覆盖率。我个人非常了解作者,对他们的工作非常尊重。