46

突变测试已经存在一段时间了,似乎至少有一个或两个用于 C/C++ 的商业突变测试框架。你用过它们吗?你有什么经验?有没有开源替代品?

4

6 回答 6

10

一个简短的搜索结果是:

话虽如此,您需要意识到突变测试并不是特别有用(至少从我以前读过的一些东西来看)。当面对困难的(隐喻的)断言时,它是一个有趣的工具,用于确保注意数据需求(在处理if and only if情况时)。

在我看来,有很多更成熟的方法来分析代码的健壮性。

于 2011-01-19T23:44:18.953 回答
4

请注意,Parasoft 的工具仅生成等效突变。这与维基百科关于突变测试的文章中描述的问题相呼应——很难区分等效突变和非等效突变,因此他们决定坚持使用等效突变。

我尝试了另一个有趣的工具,它可以自动发现检测的 C 和 C++ 代码中的不变量——它被称为“Daikon”。本质上,它与生成等效突变的工具做同样的事情,但它不是识别有问题的代码,而是为您提供一组不变量,例如“A == B + 1”。我认为不变量更有用,因为当您查看发现的不变量时,它可以确保您的代码在不变量有意义的情况下是正确的,然后您可以将不变量转换为断言,这让您在更改代码时更有信心。

于 2011-01-23T05:49:58.003 回答
3

用于变异 c 程序的直接 python 脚本可在以下位置获得:

https://github.com/parunbabu/mutate.py

作者说,如果被测代码被取消注释和缩进,效果会更好。

而且它也是免费和开源的......我认为这就是你正在寻找的。

于 2012-07-01T04:18:31.687 回答
2
  • Mull是基于 LLVM 的,并且似乎正在积极开发且易于使用。
  • dextool mutate也是基于 LLVM 并积极开发的,使用更复杂,但具有更多功能,例如重新运行活着的突变体,并且仅 mutate 引入了基于git diff
于 2020-03-15T14:04:18.213 回答
1

我没有这方面的经验,但 Mutate++ 似乎是已经提到的选项中缺少的选项。

Mutate++ - 一个 C++ 变异测试环境

于 2020-05-07T10:48:23.040 回答
0

现有框架的设置和使用太耗时,所以我自己实现了一个快速简单的解决方案,可以在任何机器上运行。有适用于 MacOSX、Windows 和 RaspberryPi (Linux) 的二进制文件:

https://github.com/RagnarDa/dumbmutate

希望它可以帮助任何人!

于 2019-03-05T10:05:07.477 回答