C / C ++有什么突变testing框架?

突变testing已经出现了一段时间,似乎至less有一个或两个商业突变testing框架的C / C + +。 你用过吗? 你有什么经验? 有没有开源的替代品?

简短的search导致:

  • PlexTest : http : //www.itregister.com.au/products/plextest_detail.htm
  • 保证++ : http : //www.parasoft.com/jsp/products/insure.jsp; jsessionid=baacpvbaDywLID?itemId=63
  • MILU (可能只适用于C): http : //www.dcs.kcl.ac.uk/pg/jiayue/milu/

这就是说,你需要认识到,突变testing并不是特别有用(至less从我之前读过的一些东西)。 当遇到困难(隐喻地)断言并且确保数据需求被注意到(当if and only if情况处理时)时,这是一个有趣的工具。

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

请注意,Parasoft的工具只产生相同的突变。 这与维基百科有关突变检测的文章中所描述的问题相呼应 – 很难区分等价和非等价突变,所以他们决定坚持等同。

我尝试了另一个有趣的工具,可以自动发现仪器化的C和C ++代码中的不变式 – 它被称为“Daikon”。 从本质上说,它和生成等价变异的工具做的是一样的事情,但是不是识别有问题的代码,而是给你一组不variables,比如“A == B + 1”。 我认为不variables更有用,因为当你看到发现的不variables时,如果不variables是有意义的,那么就保证了你的代码是正确的,然后你可以把不variables转换成断言,并且在你改变代码时给你更多的信心。

一个简单的python脚本可以在c程序中进行变异:

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

作者说,如果被testing的代码被去评论和缩进,它会更好。

它也是免费的,开源的…我认为这是你在找什么。