问题标签 [mutation-testing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
758 浏览

mutation - 无法找到或加载主类 org.pitest.coverage.execute.CoverageMinion

我尝试了所有可用的答案,但在运行坑突变测试时仍然出现此错误。它在具有相同配置的其他系统上运行良好,对此错误的任何帮助将不胜感激。谢谢。

控制台日志

0 投票
1 回答
3811 浏览

java - 突变测试 - 在 for-each 循环上否定条件?

我们只是在玩一些突变测试,但有一件事我不明白。为什么它总是试图在我的 for-each 循环上应用“否定条件修改器”,如下所示:

如果我看一下 mutator 的描述(http://pitest.org/quickstart/mutators/#NEGATE_CONDITIONALS),那么它应该只是改变条件,比如!=to==<to >=。所以我真的不明白为什么在那里使用它以及为什么它有时会失败而有时不会。

有人可以向我解释一下吗?

0 投票
2 回答
1714 浏览

python - 基于属性的测试和突变测试有什么区别?

我对这个问题的上下文是在 Python 中。

假设检验库(即基于属性的检验): https ://hypothesis.readthedocs.io/en/latest/

突变测试库: https ://github.com/sixty-north/cosmic-ray

0 投票
1 回答
82 浏览

java - 如何知道一个项目是否以编程方式在 SonarQube 中实施了突变测试?

我正在为我公司的 SonarQube 仪表板添加插件。他们希望我在仪表板上贴上 2 个标签,即进行突变测试的项目总数需要突变测试的项目

我正在使用SonarQube Java API,AngularJS for UI 沿着它使用。我正在寻求有关如何执行此操作的帮助。先感谢您。

0 投票
1 回答
4911 浏览

c# - C#中的变异测试工具

我正在用 c# 开始一个新项目,我正在寻找一个可以帮助我进行突变测试的工具。我之前在java中使用pitest做过变异测试,非常喜欢它。现在我正在为 C# 寻找这样的工具,而我能找到的唯一工具要么在过去几年没有更新,要么仍处于 alpha/beta 版本(creamninjaTurtlesNester)。

是否有任何可用的工具可靠且可与 2010 年之后出现的工具一起使用?

编辑:有人可能会说这个问题与存在哪些突变测试框架?[关闭]。只有那个问题目前已有 8 年的历史,并且那里讨论的大多数工具都无法使用,因为它们中的大多数在过去 6 到 8 年没有更新。

0 投票
1 回答
65 浏览

unit-testing - 如何通过删除或替换代码行来测试程序的正确性?

我知道这个问题非常模糊,但我认为在您的帮助下我们可以改进它。几个月前,在一次关于 TDD 和单元测试的采访中,有人问我是否知道我的特定方法(不幸的是我忘记了名字),通过删除或更改某些行(自动,可能使用特定的工具)。正如你可以想象的那样,我没有得到这份工作,我不能直接向他们提问,但这似乎是一个有趣的话题,而且他们似乎也在使用它。有人听说过吗?

0 投票
2 回答
2014 浏览

java - 突变杀戮

我被困在 1 点,需要建议。

在为我的代码编写 junit 时,我无法杀死 ValidateArgument.notNull(arg1) 突变!
需要建议。

代码如下..

得到

## 删除了对 com/nokia/oss/configurator/rac/common/util/ValidateArgument::notNull → SURVIVED 的调用

作为返回类型void,杀死这种突变的可能方法是什么?

0 投票
1 回答
296 浏览

java - 为 Guava 设置 PITest

我正在尝试为 Guava ( http://pitest.org/ )设置 PIT以进行突变充分性测试,但在尝试运行它时出现以下错误。这是我得到的错误:

基本上,要么 PIT 没有检测到测试,要么测试没有在 PIT 中正常运行并且所有测试都失败了。我读了这篇文章:JUnit 测试通过但 PIT 说套件不是绿色的,我认为“你的代码库是否包含可变静态状态?(例如在单例中)”是问题,但我不知道如何解决它。如果测试套件具有一些隐藏的顺序依赖关系,如何制作它以便我可以在其上运行 PIT?还是测试套件与 PIT 根本不兼容?

0 投票
0 回答
247 浏览

ruby - 尝试添加突变测试

我正在尝试将突变测试添加到 Rails 项目中,使用

在 Gemfile 中,它似乎使用 bundler 正确安装了它

但是在尝试对突变体做任何事情之后,我总是在尝试启动突变体时遇到这个错误:

我认为我的安装缺少一些东西,但我无法弄清楚:缺少什么?

0 投票
1 回答
247 浏览

chronicle - 使用新的类定义重新编译以进行突变测试

我正在尝试使用openHFT/java-runtime-compiler来改进我的变异测试工具,从大量使用磁盘访问到仅使用内存中编译。

在变异测试中,有两种类: A. 变异类,它的定义将不断被操纵/改变和重新编译的类。 B. 其他类,定义不会改变的类,即测试用例类,或者变异类需要的其他类。

通过使用 openHFT/java-runtime-compiler,可以使用下面的代码轻松完成,它是通过为变异类和其他类的每次重新编译创建一个新的类加载器。

这很好用,每次编译 A 类的新定义时,AClass都会适应新定义。

但是,如果顺序颠倒,这将不起作用,就像下面的代码(首先加载BClass然后AClass),有时需要,比如当AClass使用BClass时。类 A 的重新编译,不会适应新的定义,并且将始终使用用于编译类 A 的第一个定义。

我怀疑我需要修改openHFT/java-runtime-compiler 库中的loadFromJava类(代码如下)。我已经尝试省略这些行

我希望每次调用loadFromJava时总是重新编译所有源代码(甚至是已经编译的源代码) 。但它给出了错误的结果。

请帮助我指出使其生效所需的更改。

非常感谢您的帮助。

已编辑

谢谢彼得劳里,我已经尝试过你的建议,但它给出了相同的结果,A 类坚持使用的第一个定义(在第一次迭代中),并且无法更改/使用新定义(在下一次迭代中) .

我收集了症状,可能的解释是第一次迭代(第一次编译/加载类)与下一次迭代有一些不同的处理。从那里我尝试了几件事。

第一个症状

那是当我在 loadFromJava 中放置一个输出行(System.out.println)(下)

输出给出:

在第一次迭代中,它给出了正确的输出,“loadClasses Null”(加载 B 时),因为 loadedClassesMap 没有 classLoader,并给出“clazz Null”(加载 A 时),因为 loadedClassesMap 有 classLoader 但没有t 具有 A 类名。

但是在下一次迭代中,(加载 A 时)它输出“clazz Not Null”,似乎 A 类名已经存储在 loadedClassesMap.get(classLoader) 中,这是不应该发生的。我试图在 CachedCompiler 构造函数中清除加载的ClassesMap。

但它给出了 LinkageError: loader (instance of main/Utama$2): 尝试重复的类定义。

第二个症状

第一次迭代中更强烈的差异症状是当我检查 s_fileManager 缓冲区时。

第一次迭代正如预期的那样,但在下一次迭代中,s_fileManager 缓冲区似乎已经达到了 2 的大小,并且没有重置为 0。

我试图在 CachedCompiler 构造函数(如下)中清除 FileManager 缓冲区,

但它给出了ExceptionInInitializerError。