论文部分内容阅读
软件测试是保证软件质量的重要手段.随着软件技术的发展,软件的规模越来越大,程序的复杂度也逐渐增加.软件测试也由原来的人工操作逐渐走向自动化.自动化软件测试已经成为国内外软件工程研究的热点之一。
本文研究了自动软件测试中的两个问题,它们分别属于自动测试数据生成和错误查找两方面.主要贡献如下:
本文提出了一种对含有字符串和字符串函数调用的C语言程序自动生成测试数据的方法,具体做法是将C语言程序中的字符变量看成是取值范围在0255之间的整数,并使用字符数组来表示字符串,同时将字符串函数建模成一阶逻辑公式和赋值语句.通过使用前置条件和后置条件来描述函数调用语句,将程序中的字符串函数调用语句替换成逻辑公式和赋值语句,之后使用路径分析技术自动生成程序的测试数据.此外,本文还实现了一个自动化工具,能够为真实的C程序自动生成测试数据。
另一方面,本文还提出了一种自动检查程序中是否含有死循环的方法.该方法基于静态代码分析,结合了循环展开和路径可行性分析技术.具体做法是首先通过遍历控制流图生成待查循环的检验路径,之后通过分析检验路径的可行性以及路径之间的联系,判断这些路径是否符合死循环模式.在此基础上,本文实现了原型工具,并对一组基准程序进行测试.实验结果表明,工具能高效地检测出C语言程序中的死循环,准确率较高.工具的自动化程度较高,能处理复杂的控制流以及嵌套的循环。