Mutation testing已经出现了一段时间,似乎至少有一两个商业变异测试框架用于C / C ++。你用过它们了吗?你有什么经历?有没有开源替代品?
答案 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
作者说,如果被测试的代码被解除注释并缩进,那么它会更好。
它也是免费的和开源...我认为这正是你要找的。 p>
答案 3 :(得分:2)
git diff
突变引入的更改答案 4 :(得分:1)
我当前正在使用:
该工具帮助我揭示了一些不会杀死任何突变体的测试用例。其中一个断言已被注释掉。
我还发现了一些杀死相同突变体的测试案例。在使用参数化测试时,这尤其常见。
答案 5 :(得分:1)
我没有经验,但是Mutate ++似乎是已经提到的选项中缺少的一个选项。
答案 6 :(得分:0)
现有框架的设置和使用都非常耗时,因此我自己进行了实现,这是一种快速简便的解决方案,适用于任何计算机。有适用于MacOSX,Windows和RaspberryPi(Linux)的二进制文件:
https://github.com/RagnarDa/dumbmutate
希望它对任何人都有帮助!