论文部分内容阅读
软件测试是软件开发周期中重要的一环,用于检测软件存在的故障和缺陷,是保证软件健壮性和安全性的主要途径之一。随着软件的复杂性和规模的增加,软件测试的开销也进一步上升,自动化测试的需求更加强烈。动态符号执行是一种基于搜索的自动测试方法,可以自动生成测试数据和测试用例。但是,动态符号执行存在着不可避免的路径爆炸问题,执行路径的数量会随着程序规模的增大呈指数级上升,严重影响了动态符号执行的可用性。本文为了解决路径爆炸问题,提出了一种基于多测试点的动态符号执行方法(MPDSE),通过分析程序的依赖关系,搜索程序中只与测试点关联的路径条件,减少不相关路径的搜索,实现路径的约简。该方法首先通过对程序的静态分析,获取控制流和数据流,采用程序切片方法找出测试点和判定语句之间的依赖关系。然后依据程序依赖关系生成测试点关联图,利用关联图获得并删除冗余测试点,得到精简的测试点集合。为了实现MPDSE,本文设计了一种新的路径搜索算法MTPExplore。该算法在精简的测试点集合上构建对应数量的执行树,并将路径执行收集到的约束条件根据依赖关系添加到执行树中,实现了只对关联约束条件的取反,减少不相关路径的搜索。实验结果表明,MPDSE相较于传统的动态符号执行,能够有效减少执行路径的数量,节约路径搜索和执行的时间,提高了测试的效率。