ZBLOG

Equivalent Program Mutation. In MetaFuzz, we carefully design and implement six identically equivalent mutation rules, which is also the main technical challenge of MetaFuzz. Table 2 shows the details of the six mutation rules, including a brief ...

等价程序突变。在MetaFuzz中,我们精心设计和实现了六个完全相同的突变规则,这也是MetaFuzz的主要技术挑战。表2展示了这六个突变规则的细节,包括每个规则的简要描述和演示示例。这六个突变规则涉及三种不同的粒度,即函数粒度(规则1)、块粒度(规则2-4)和表达式粒度(规则5-6)。所有这些突变规则都应用于所选种子程序对应的AST,这不仅可以减轻对各种程序分析工具(例如构建控制流图的工具)的依赖,而且还可以增加这些突变规则的通用性,因为AST是大多数编程语言的基础和共同点。特别是,在MetaFuzz中还考虑了一些常见的突变规则的思想,例如死代码注入[21]。 在突变过程中,MetaFuzz随机从突变规则集合中选择一个突变规则,然后将其应用于所选种子程序,从而生成一个等效测试程序。对于每个等效突变规则,不是所有的位置都适用于种子程序。因此,MetaFuzz首先搜索所有适用于所选突变规则的位置,然后随机选择一个位置应用该突变规则。例如,如果选定的突变规则是反转if条件(即规则4),MetaFuzz首先搜索种子程序中的所有if语句,然后随机选择一个if语句进行突变。如果种子程序中没有if语句,则MetaFuzz必须随机选择另一个突变规则。 特别是,插入if或循环语句(规则2-3)的应用是不同的,因为MetaFuzz需要进一步选择if或循环语句的代码体(除了突变位置)。如果if语句的条件为false或循环语句的循环次数为0,则意味着代码体永远不会被执行。因此,MetaFuzz随机从代码片段池中选择一个代码片段作为插入的代码体,并确保变异测试程序的有效性与SynFuzz相同(在2.1.2节中介绍)。如果if语句的条件为true或循环语句的循环次数为1,则表示代码体将被确定地执行。因此,MetaFuzz随机选择从所选种子程序中提取的代码片段,然后进行突变。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=467

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?