6

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

4

7 回答 7

4

我找到了我非常喜欢的 PIT 突变测试工具。使用 MuJava 我有由 @Override 注释引起的异常。似乎它不支持 Java 5/6。

于 2011-06-27T17:40:31.147 回答
3

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

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

Mu Java - 不支持 Java 5

朱迪 - 除了它存在之外,对此知之甚少

Lava - 听起来很基础,我认为它不支持 java 5

从更下方的答案中,我看到您现在正在使用 PIT。我认为这确实是一个很好的选择(我写它可能有一定的偏见),但它是一个字节码突变系统。

于 2011-06-28T18:42:02.610 回答
3

当我在 GMU 参加关于测试的软件工程课程时,我们使用 Mu Java作为其中一章。高温高压

于 2011-06-27T01:11:10.353 回答
3

这是开源测试覆盖工具Jester使用的技术。如果您找不到合适的工具并想自己构建一个,查看它的源代码可能会有所帮助。

于 2011-06-27T02:01:06.733 回答
2

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

于 2013-12-12T17:34:09.177 回答
1

这是一个基准:

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

于 2012-03-10T10:57:08.033 回答
1

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

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

  1. 在编译期间生成并嵌入所有突变体
  2. 生成突变体并导出突变源文件
于 2014-06-18T09:00:46.220 回答