bash实现一个简单的错误(mutation)注入工具

来源:互联网 发布:矩阵a与b相似,其中a= 编辑:程序博客网 时间:2024/06/04 23:46

最近在做一个测试工具的测试(拗口吧),这个工具生成了大量的测试用例,用来检测编译器是不是有错误。生成方法有学术上的价值(创新性),但是实现的原型工具很难检测出来实际的错误。像是GCC这样的编译器测试用例已经很多,所以我们需要另外一种方式来检测测试用例的测试能力。这个技术称为mutation test,就是把正确的GCC代码中故意写错一个地方,然后看看测试用例能否测试出来编译器注入了错误。

常见的错误都是很简单的单行错误,分为这三类:&& 写成了 || ,+ 写成了 -,以及 off by one 错误。自己手工注入很无聊并且耗费时间。

下面这个脚本实现了 && 和 || 之间的随机替换,以达到错误注入的效果。使用了gcc的gcda文件(用HTML格式将就了下,.gcda格式文件删掉了)来分析其覆盖率,提高mutation被检测的概率(没有执行到的代码肯定不会检测出来,也就不用测试了。)

效果:

对gcc源代码目录下gcc子目录所有的脚本执行此脚本,生成mutation 2786个,编译通过2000+个,效果还是不错的。

原创粉丝点击