是否有经过验证的方法来验证junit测试或集成测试的质量?
您的业务分析师应该检查单元测试cerfity吗?或者还有其他方法吗? 在传统的代码优先环境中,同行或领导会审查测试计划,但自动化测试如何?
我查看了this stackflow帖子,但无法提取任何有意义的内容。
思想?
答案 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/)。