C / C ++有哪些突变测试框架?

时间:2011-01-17 17:16:35

标签: c++ testing mutation-testing

Mutation testing已经出现了一段时间,似乎至少有一两个商业变异测试框架用于C / C ++。你用过它们了吗?你有什么经历?有没有开源替代品?

7 个答案:

答案 0 :(得分:8)

简短搜索导致:

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

在我看来,有更多既定方法可以分析代码的健壮性。

答案 1 :(得分:4)

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

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

答案 2 :(得分:3)

可以在以下位置找到用于改变c程序的直接python脚本:

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

作者说,如果被测试的代码被解除注释并缩进,那么它会更好。

它也是免费的和开源...我认为这正是你要找的。

答案 3 :(得分:2)

  • Mull基于LLVM,并且似乎正在积极开发并且易于使用。
  • dextool mutate也是基于LLVM的,并且是积极开发的,使用起来更复杂,但是具有更多功能,例如重新运行有生命的突变体,并且仅基于git diff突变引入的更改

答案 4 :(得分:1)

我当前正在使用:

该工具帮助我揭示了一些不会杀死任何突变体的测试用例。其中一个断言已被注释掉。

我还发现了一些杀死相同突变体的测试案例。在使用参数化测试时,这尤其常见。

答案 5 :(得分:1)

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

Mutate++ - A C++ Mutation Test Environment

答案 6 :(得分:0)

现有框架的设置和使用都非常耗时,因此我自己进行了实现,这是一种快速简便的解决方案,适用于任何计算机。有适用于MacOSX,Windows和RaspberryPi(Linux)的二进制文件:

https://github.com/RagnarDa/dumbmutate

希望它对任何人都有帮助!