有没有专门测量有用代码覆盖率的工具?

时间:2011-12-14 11:35:37

标签: unit-testing tdd code-coverage

虽然适得其反,但可能会编写执行某些代码的单元测试,并断言真相。这是一个刻意的极端和简化的例子 - 我敢肯定,大多数人都遇到过执行代码的测试而没有实际使用它。

是否有任何代码覆盖工具可以评估所覆盖的代码是否实际用作测试断言的一部分?

3 个答案:

答案 0 :(得分:1)

你真正想要的是计算覆盖代码与覆盖测试中断言的 backward code slice(减去单元测试本身)之间的交集。

如果该交集为空,则断言不会测试应用程序的任何部分。

大多数代码覆盖率工具都不会计算切片,所以我猜你问题的答案是“不”。

答案 1 :(得分:0)

您需要某种依赖性分析,即找出断言所依赖的语句。然后,必须与覆盖范围进行交叉检查。 CodeSurfer是一种商业工具,可以对C进行依赖性分析。

答案 2 :(得分:0)

我再一次调查为什么会这样?仅仅为了增加覆盖率而增加的测试通常是更严重原因的症状。教育每个人而不是挑选特定的罪犯通常会更好。

用于识别已经发生的错误:您可以使用检查

的静态代码分析工具
  • 每个测试至少有一个断言。当然,这也可能被流氓断言所击败。
  • 没有未使用的返回值。

我在RoyOsherove看到了第一个名为TestLint的东西,第二个看到Parasoft或类似的东西。 这仍然不是一种万无一失的方法,并且会在SCA报告的问题中花费大量时间。但这是我能想到的最好的。