如何对Java程序进行变异测试?

时间:2011-06-27 01:06:36

标签: java testing mutation-testing

任何人都可以提供可用于在源代码(非字节码)级别的Java程序中进行突变的工具的建议吗?我需要为我的源代码添加错误。我更喜欢带有GUI的应用程序,如果存在的话。

7 个答案:

答案 0 :(得分:4)

我找到了PIT Mutation Testing工具,我很喜欢。使用MuJava,我有@Override注释引起的异常。似乎它不支持Java 5/6。

答案 1 :(得分:3)

当我参加GMU的测试软件工程课时,we used Mu Java,其中一章。 HTH

答案 2 :(得分:3)

这是开源测试覆盖率工具Jester使用的技术。如果您无法找到合适的工具并希望自己构建一个工具,那么查看它的来源可能会有所帮助。

答案 3 :(得分:3)

如果您的要求确实是源代码变异,那么我知道的选项是

Jester - 提供有限数量的非常不稳定的变异算子。 Jeff Offutt将其描述为一种非常昂贵的分支测试方法。我相信可以定义你自己的运营商,所以这可能不完全公平。

Mu Java - 不支持Java 5

朱迪 - 除了存在之外,对此不太了解

熔岩 - 听起来非常基本,我不认为它支持java 5

从下面的答案我看到你现在正在使用PIT。我认为这是一个真正伟大的选择(我写的可能有一定的偏见),但它是一个字节码变异系统。

答案 4 :(得分:2)

“这在现实世界中几乎没有应用”。我强烈反对,我在英国一家非常大的媒体公司签约并且PIT(http://pitest.org/)对突变测试非常有用。如果没有85%覆盖PIT突变测试,大多数CI构建都会失败。 回复:“替换一些随机字符......”变异并不一定意味着。 PIT突变仅限于可编译的变化。

答案 5 :(得分:1)

这是一个基准:

MμClipse仅支持JUnit 3,不再维护。 Jester就这样,很费力,需要复杂的配置;加上不再维护。 我能找到的最好的工具是Javalanche I had wrote a entire article about this !

答案 6 :(得分:1)

主要变异框架(Major's website)为JUnit测试提供了编译器集成的mutator和变异分析器。

Major的mutator集成在Java 7编译器中。它提供了几个变异操作符,并支持两种变异源代码的选项:

  1. 在编译期间生成并嵌入所有突变体
  2. 生成突变体并导出突变的源文件