其他分享
首页 > 其他分享> > c – cpp中的变异测试,无需修改/重新编译代码

c – cpp中的变异测试,无需修改/重新编译代码

作者:互联网

目前我有一些测试被指责不能很好地捕获错误.我想进行突变测试以检测它们(并防止添加新的无用的),但没有时间效率低的循环:更改代码 – >重新编译 – >运行测试 – >更改代码 – >重新编译 – >运行测试…等

最初我想直接改变二进制elf文件(没有重新编译),但正如后面的帖子建议的那样,没有任何意义.

解决方法:

好吧,通过将突变测试分为4个主要阶段,我能够部分地解决它:

>使用python / clang-tooling检测所有突变中的代码(选定的C表达式包含在一个特殊的宏中,它将调用委托给一个突变类,它为每个突变生成ID,控制变异操作符的激活等)
>重新编译代码(只有一次)
>并行运行测试,所有突变都处于非活动状态,并获取所有突变的ID(如果测试失败,将它们放在忽略列表中),
>在运行时切换突变时并行运行测试(通过上一步获得的ID),并收集统计数据(突变体杀灭率等)

实现是在python和C中完成的,它在生产代码(CMake和gtest main.cpp文件)中约有大约1700行代码(带有测试)的小修改.它只支持几个简单的突变,但它仍然很有趣:)

标签:c,testing,mutation-testing
来源: https://codeday.me/bug/20190831/1778432.html