【发布时间】:2011-06-10 14:17:27
【问题描述】:
Mutation testing 已经存在一段时间了,似乎至少有一两个用于 C/C++ 的商业突变测试框架。你用过它们吗?你有什么经验?有没有开源替代品?
【问题讨论】:
-
好问题,因为我不知道突变测试。好主意^^
标签: c++ testing mutation-testing
Mutation testing 已经存在一段时间了,似乎至少有一两个用于 C/C++ 的商业突变测试框架。你用过它们吗?你有什么经验?有没有开源替代品?
【问题讨论】:
标签: c++ testing mutation-testing
简单的搜索结果:
话虽如此,您需要意识到突变测试并不是特别有用(至少从我以前读过的一些东西来看)。当面对困难的(隐喻的)断言时,它是一个有趣的工具,用于确保注意数据要求(在处理if and only if 情况时)。
在我看来,分析代码稳健性的方法要成熟得多。
【讨论】:
请注意,Parasoft 的工具仅生成等效突变。这与维基百科关于突变测试的文章中描述的问题相呼应——很难区分等效突变和非等效突变,因此他们决定坚持使用等效突变。
我尝试了另一个有趣的工具,它可以自动发现插装的 C 和 C++ 代码中的不变量——它被称为“Daikon”。本质上,它与生成等效突变的工具做同样的事情,但它不会识别有问题的代码,而是为您提供一组不变量,例如“A == B + 1”。我认为不变量更有用,因为当您查看发现的不变量时,它可以确保您的代码在不变量有意义的情况下是正确的,然后您可以将不变量转换为断言,这让您在更改代码时更有信心。
【讨论】:
用于变异 c 程序的直接 python 脚本可在以下位置获得:
https://github.com/parunbabu/mutate.py
作者说,如果被测代码取消注释和缩进,效果会更好。
而且它也是免费和开源的......我认为这就是您正在寻找的。p>
【讨论】:
现有框架的设置和使用过于耗时,因此我自己进行了实现,这是一个可以在任何机器上运行的快速简单的解决方案。有适用于 MacOSX、Windows 和 RaspberryPi (Linux) 的二进制文件:
https://github.com/RagnarDa/dumbmutate
希望对大家有所帮助!
【讨论】:
git diff 进行突变引入更改
【讨论】:
我没有这方面的经验,但 Mutate++ 似乎是已经提到的选项中缺少的选项。
【讨论】: