任何人都可以提供可用于在源代码(而不是字节码)级别在 Java 程序中进行突变的工具的建议吗?我需要在我的源代码中植入错误。如果存在的话,我更喜欢带有 GUI 的应用程序。
7 回答
我找到了我非常喜欢的 PIT 突变测试工具。使用 MuJava 我有由 @Override 注释引起的异常。似乎它不支持 Java 5/6。
如果您的要求确实是源代码突变,那么我知道的选项是
Jester - 提供有限数量的非常不稳定的变异算子。Jeff Offutt 将其描述为应用分支测试的一种非常昂贵的方式。但是,我相信可以定义自己的运营商,因此这可能并不完全公平。
Mu Java - 不支持 Java 5
朱迪 - 除了它存在之外,对此知之甚少
Lava - 听起来很基础,我认为它不支持 java 5
从更下方的答案中,我看到您现在正在使用 PIT。我认为这确实是一个很好的选择(我写它可能有一定的偏见),但它是一个字节码突变系统。
当我在 GMU 参加关于测试的软件工程课程时,我们使用 Mu Java作为其中一章。高温高压
这是开源测试覆盖工具Jester使用的技术。如果您找不到合适的工具并想自己构建一个,查看它的源代码可能会有所帮助。
“这在现实世界中几乎没有应用”。强烈不同意,我在英国一家非常大的媒体公司签约,PIT(http://pitest.org/)对于突变测试非常有用。大多数 CI 构建在没有 85% 覆盖率 PIT 突变测试的情况下设置失败。回复:“替换一些随机字符......”突变不一定是那个意思。PIT 突变仅限于可编译的更改。
这是一个基准:
MμClipse 仅支持 JUnit 3,不再维护。至于Jester,很费力,需要复杂的配置;plus 不再维护。我能找到的最好的工具是 Javalanche 我写了一篇关于这个的整篇文章!
Major 变异框架(Major 的网站)为 JUnit 测试提供了编译器集成的变异器和变异分析器。
Major 的 mutator 集成在 Java 7 编译器中。它提供了几个变异操作符,并支持两种变异源代码的选项:
- 在编译期间生成并嵌入所有突变体
- 生成突变体并导出突变源文件