2011-03-29 67 views
2

代码覆盖率和性能分析的区别是什么?代码覆盖率和性能分析的区别

这是代码覆盖率最好的开源工具。

+0

您使用哪种语言和平台? – 2011-03-29 05:58:22

+0

我正在寻找Java和J2EE。我认为差异应该与语言和平台无关。当然,工具必须针对语言和平台。 – Kamahire 2011-03-29 09:59:26

回答

1

覆盖范围对于查看代码的哪些部分没有运行很重要。 根据我的经验,它必须在多个用例上累积,因为任何一次软件运行只会使用一些代码。

分析在不同的时间意味着不同的事物。有时它意味着衡量绩效。有时它意味着诊断内存泄漏。有时候它意味着要了解多线程或其他低级活动。

当目标是提高软件性能时,通过找到所谓的“瓶颈”并修复它们,不要仅仅满足任何分析器,甚至不一定是高度推荐或可敬的分析器。 使用那种能够获得正确信息并以正确的方式呈现给您的类型是非常重要的,因为这方面存在很多混淆。 More on that subject.

加入: 对于覆盖工具,我一直都是自己做的。在几乎每个常规和基本块中,我插入一个这样的调用:Utils.CovTest("file name, routine name, comment that tells what's being done here")。 例程记录它被调用的事实,当程序结束时,所有这些注释都被附加到文本文件中。 然后有一个后处理步骤,从完整列表中“减去”该文件(由类似grep的程序获取)。 结果是还没有的测试列表,需要额外的测试用例。

当没有进行覆盖测试时,Utils.CovTest什么都不做。无论如何,我会将它从最内层的循环中排除出去,所以它不会影响性能。 在C和C++中,我使用一个在正常使用时扩展为无的宏。

1

代码覆盖率是您的代码已运行多少的评估。这用于了解您的测试如何执行您的代码。

分析用于查看代码的各个部分如何执行。

这些工具取决于您使用的语言和平台。我猜你正在使用Java,所以建议CodeCover。虽然您可能会发现NoUnit更易于使用。