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

C++ C/C+有哪些突变测试框架+;?,c++,testing,mutation-testing,C++,Testing,Mutation Testing,现在已经有一段时间了,似乎至少有一到两个针对C/C++的商业突变测试框架。你用过吗?你的经历是什么?有开源的替代方案吗?一个简短的搜索结果是: 丛测试: 保险+++: 米卢(可能仅适用于C): 话虽如此,你需要意识到突变测试并不是特别有用(至少从我以前读过的一些东西来看)。当面对硬(比喻地说)断言时,它是一个有趣的工具,用于确保数据需求得到重视(当处理当且仅当情况时) 在我看来,有很多更成熟的方法可以分析代码的健壮性。请注意,Parasoft的工具只生成等效的突变。这与维基百科关于突变

现在已经有一段时间了,似乎至少有一到两个针对C/C++的商业突变测试框架。你用过吗?你的经历是什么?有开源的替代方案吗?

一个简短的搜索结果是:

  • 丛测试
  • 保险+++
  • 米卢(可能仅适用于C):
话虽如此,你需要意识到突变测试并不是特别有用(至少从我以前读过的一些东西来看)。当面对硬(比喻地说)断言时,它是一个有趣的工具,用于确保数据需求得到重视(当处理
当且仅当
情况时)


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

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


我尝试了另一个有趣的工具,它能自动发现仪器C和C++代码中的不变量——它被称为“Daikon”。本质上,它和生成等价突变的工具做的是相同的事情,但它并没有识别有问题的代码,而是提供了一组不变量,比如“a==B+1”。我认为不变式更有用,因为当您查看发现的不变式时,它可以确保您的代码是正确的(如果不变式有意义),然后您可以将不变式转换为断言,这在您更改代码时为您提供了更大的信心。

用于变异c程序的直接python脚本位于:

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


而且它也是免费和开源的。。。我想这就是你想要的。

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

希望它能帮助任何人

  • 是基于LLVM的,似乎是积极开发和易于使用的
  • 此外,LLVM是基于LLVM的,并且是积极开发的,使用起来更复杂,但有更多的功能,比如重新运行活着的变种,并且只根据
    git diff

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


问得好,因为我不知道突变测试。好主意^^看看Parasoft(Insure++)称之为“变异测试”的东西和其他人称之为变异测试的东西不太一样。他们对它进行了“革命”,使其面目全非@杰森:这看起来很有趣,但想法还是一样的。。以代码为例,更改一些操作符(使它们“错误”或“等效”),看看这些东西是否有效。查找代码中的歧义有时是有用的,但说实话,你可以编写自己的变异测试工具(这并不难)并节省一些钱。这是谷歌上出现的第一个结果,所以我认为指出MILU链接导致404仍然是相关的。我真的认为这句话“突变测试不是特别有用”,应该是合格的,或者直接从答案中删除。很容易找到流行的java工具。为什么很难找到C++的流行工具?实际上我喜欢C++(我也喜欢java)。我想做一些严肃的C++开发,我在寻找能帮助我编写高质量代码的工具。我们有java等工具,如EcErMMA、PITEST、SONARLILT、JProfiler、VisualVM等等。有人能给C++提供这样的流行的和经过验证的工具吗?我需要专家的建议。