论文部分内容阅读
故障注入技术作为一种常用的技术广泛应用于软件测试领域。它通过有意识地向待测系统中施加特定的故障,来观察系统对于异常状况的处理与反应。代码故障注入作为故障注入的一种,以其成本低、实现简单、可移植性强等优点受到了研究者们的青睐。但是,目前代码故障注入大多数是通过手动注入实现的。手动注入方法具有效率低下、工作量大以及故障文件可用率不高等不足,而自动注入方法恰好可以弥补这些不足,因此自动故障注入问题非常具有研究意义。论文围绕如何向C代码中自动注入故障以及注入什么样的故障这两个问题进行研究,提出了基于程序变异的C代码自动故障注入方法。该方法通过静态分析获取程序结构信息,然后利用分析抽象语法树的方式对故障注入点定位,接着对变异体进行语义检查,缩小变异范围,最后进行程序变异,生成故障文件。以上就是本文所设计的注入方法的基本流程。在使用传统变异算子时,故障文件存在无法应用于自动化测试的情况,因此本课题设计了基于语义检查的变异算子,来作为故障注入的参照模型。本课题使用了基于字符串编辑距离的候选变异体选择算法,从而令产生的故障更加符合真实编程环境的要求。在以上研究成果的基础之上,本文作者依托于代码测试系统Code Test System (CTS),开发了一款基于程序变异的C代码故障注入器。该注入器实现了C代码的自动故障注入,并且保证了故障注入结果文件适用于故障定位以及变异测试等研究领域。