如何确保junit测试的质量?

时间:2011-02-28 14:52:51

标签: junit

是否有经过验证的方法来验证junit测试或集成测试的质量?

您的业务分析师应该检查单元测试cerfity吗?或者还有其他方法吗? 在传统的代码优先环境中,同行或领导会审查测试计划,但自动化测试如何?

我查看了this stackflow帖子,但无法提取任何有意义的内容。

思想?

5 个答案:

答案 0 :(得分:8)

Mutation testing 代码覆盖率可以验证测试的质量

首先检查您的代码覆盖率足够高。通过变异测试验证后,测试是好的。变异测试工具在生产代码中进行小的更改并重新运行测试 - 在修改之后,良好的测试应该失败。对于Java中的变异测试工具,请查看PIT Mutation Testing和此博客文章:Introduction to mutation testing with PIT and TestNG

但这仍然不够,测试应该是良好的书面和可读性。因此,您还需要代码审核以及测试的质量规则验证。我推荐关于编写好的测试的好书Practical Unit Testing。第10章:本书中的Maintainable tests免费提供。

答案 1 :(得分:4)

这是一篇很好的链接文章:

http://www.ibm.com/developerworks/java/library/j-cq01316/index.html?ca=drs

良好测试⇒高覆盖率 高覆盖率⇒/⇒良好测试

覆盖工具可用于确定项目的哪些区域需要更多关注,但这并不意味着覆盖良好的区域不需要更多关注。

答案 2 :(得分:2)

代码覆盖率工具是一个良好的开端,但知道给定的行已执行并不意味着它已经过测试。没有断言或expected=Exception.class的臭名昭着的测试用例就是一个例子。

我可以想象这个级别的标准很少:

  • 如果测试线路,对其进行任何更改(反转条件,移除......)至少应进行一次测试
  • 给定的逻辑应该只根据其测试完全重建
  • 测试未反映生产代码
  • 测试不应取决于当前日期,区域设置,时区,其他测试的顺序

有人可能尝试自动化第一个,其他人或多或少主观。

至于进行测试评审的分析师 - 可能只有Fitensse灯具可读性足以满足非开发人员的需求。

答案 3 :(得分:1)

代码审查是确保测试质量的最佳方法。我不会让业务分析师审查测试,因为他们可能没有必要的培训来理解测试。此外,单元测试并非全部都存在于分析师要求的功能级别。分析师可能会说“当用户点击保存时,会保存配置文件”,而您可能需要跨多个层编写n个测试才能获得该功能。

答案 4 :(得分:-2)

您可以考虑使用代码覆盖工具来确保100%的代码行正在测试中。 Emma是一个很好的java工具(http://emma.sourceforge.net/)。