我是新手使用代码覆盖而不是他们的行为方式。我试过的工具似乎都想运行整套单元测试来进行分析。虽然我曾经以某种方式静态地分析代码,也就是说,无需运行单元测试。
我的假设不正确吗?
答案 0 :(得分:1)
通常的开源工具,如Cobertura,Emma等,需要运行测试。他们使用诸如字节码操作或AOP之类的东西来检测代码并跟踪在测试运行时执行哪些行,然后生成结果报告。它的简单性使它成为一个非常有吸引力的解决方案。
使用静态分析可以近似测试覆盖率非常有趣,但对于运行测试不切实际的情况,它似乎是最后的选择。引自Ira Baxter's answer引用的论文摘要:
测试覆盖率是单元测试质量的重要指标。工具 例如Clover计算覆盖率,首先使用代码检测代码 记录功能,然后记录执行哪些部分 在单元测试运行期间。由于测试覆盖率的计算是动态的 分析,它预先假定软件的工作安装。在 由独立的第三方进行软件质量评估的背景 派对,通常没有工作装置。评估员 可能无法访问所需的库或硬件平台。 安装过程可能不会自动化或记录在案。在这 在论文中,我们提出了一种估算方法测试覆盖率的技术 仅通过静态分析。该技术使用切片 静态调用图来估计动态测试覆盖率。我们解释一下 技术及其实施。我们验证了结果 通过统计比较静态估计得到的值 使用Clover进行动态分析。我们发现之间的相关性很高 静态覆盖估计和系统级实际覆盖但是 对包装和班级的进一步分析揭示了机会 进一步改进。
答案 1 :(得分:0)
标准测试覆盖率工具,在运行时收集信息,必然需要一些东西来运用代码,而测试套件至少具有覆盖所有功能的目的。如果你没有测试套件,你可以运行临时测试,但你的覆盖范围可能不太好,当然这是一个难以重复的实验。
但您不一定要使用动态分析。这个paper显示了如何通过静态分析获得非常好的近似测试覆盖率。我个人非常了解作者,对他们的工作非常尊重。