论文部分内容阅读
软件测试是保证软件产品质量的重要手段。其中,如何生成最少的测试输入数据而能对程序进行最全面的测试,成为了人们研究的一个重要课题。测试方法主要分为动态测试和静态测试。
符号执行是一种静态测试方法,它利用符号值代替具体数值对程序的行为进行模拟,实现对程序的分析测试。传统符号执行中对程序方法的指令处理顺序采用了单一的前向遍历,这样会记录很多的冗余信息,它们对程序的执行路径没有影响;另外,符号执行产生的表达式,会由于不断的符号替换等操作,增加表达式的规模,最终会降低输入数据的求解速度。
本文首先介绍了软件测试的研究背景及现状,包括测试数据自动生成的现有方法。针对符号执行中存在的问题,构建了一个生成测试数据的框架。作为符号执行的前提,该框架首先从字节码文件中提取程序的指令信息,并以此获得程序的控制结构和执行路径;然后对传统的符号执行过程进行了改进,包括对指令的建模,通过结合现有两种访问程序指令的方式,避免对部分冗余信息的记录,提高了获取路径条件表达式的速度。另外,利用现有的计算机代数系统,对路径条件表达式进行了更加彻底的化简,这有助于约束系统更快的求解出测试数据,进而提高整个测试数据生成过程的效率。
文章最后,对新方法进行了代码实现,并选取几个程序进行了简单实验,结果表明了新方法的有效性。