2011-09-02 165 views
4

我们将单元测试之前未经测试的代码,在必要时修改代码。由于任何软件包中的大多数代码已知未经测试,因此很难获得有用的覆盖指标。差代码覆盖率

是否有任何可用于衡量的工具差异代码覆盖率,即由单元测试涵盖的给定变更集中修改的代码百分比?像詹金斯

+0

用于.NET我使用NCoverCop http://sourceforge.net/projects/ncovercop/其中ncover的XML输出进行比较。也许它可以适应你的Java输出或有一个Java等价物。 –

回答

1

持续集成工具可以让你保持测试覆盖率的历史,告诉你,包括覆盖面的趋势相比以前的版本的图形。例如:Cobertura Jenkins Plugin

+2

我们使用的是Cobertura和Jenkins,它对一个点很有帮助。但我们希望能够看到新代码/已更改代码的覆盖范围(即80%的代码代码,相比于所有代码的1%)。能够挖掘单独的包/类也有一些帮助,但前提是你知道哪些包/类已被修改。 –

0

看看到声纳,真正的好工具来分析整个应用程序的质量和覆盖面。

2

使用pycobertura。这是一个通过区分两个覆盖报告来防止代码覆盖回归的命令行工具。它会告诉您新代码是否比以前的版本更好或更差,覆盖范围。

$ pycobertura diff ./master/coverage.xml ./myfeature/coverage.xml 

它是语言不可知的,因为它只依赖于您的测试/覆盖工具生成的Cobertura报告(XML文件)。

Pycobertura还可以生成适合在很好CI/CD的工具,如詹金斯HTML报告。

enter image description here

https://github.com/SurveyMonkey/pycobertura

0

我最近确实做到了,用JaCoCo和代码分析ConQAT框架。该方法如下:

  1. 负荷从基线版本的源代码和头版本(和潜在的中介者,如果你也做了测试,在两者之间)
  2. 的方法比较节目历史方法以确定发生了变化
  3. 注释覆盖信息给每个测试版本
  4. 的方法
  5. 搜索,因为他们上次更改

没有被覆盖有人因此blog post包含更详细的说明,包括可视化和更高级的主题(如重构检测),以仅识别值得测试的更改。