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

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

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

当我参加GMU测试的软件工程课时, 我们使用了Mu Java ,用于其中一章。 HTH

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

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

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

Mu Java – 不支持Java 5

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

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

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

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

这是一个基准:

MμClipse仅支持JUnit 3,不再维护。 Jester就这样,很费力,需要复杂的配置; 加上不再维护。 我能找到的最好的工具是Javalanche, 我写了一篇关于此的文章!

Major变异框架( Major的网站 )为JUnit测试提供了编译器集成的mutator和变异分析器。

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

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