论文部分内容阅读
随着近年来软件行业的蓬勃发展,软件测试作为保证软件质量和可靠性的重要保障,在软件开发中起着不可替代的作用,逐渐成为近年来研究的热点之一。传统的手工生成测试数据的方法存在着工作量大等缺点,所以自动生成测试数据成为了提高测试效率的重要手段。本文的主要内容即是对测试数据自动生成系统进行设计和研究。
在本测试数据自动生成系统中,主要包括3个部分:程序分析、路径分析以及测试数据生成。其中测试数据的生成是整个系统的重点。本文采用自适应模拟退火遗传算法作为核心算法。作为此算法的来源和基础的遗传算法是一种模拟生物群体遗传和进化机理的启发式优化算法。其仿照生物进化的原理,通过选择、交叉、变异等操作实现对数据的搜索。虽然遗传算法有着全局、并行搜索等优点,但也存在着容易陷入局部最优等的缺点。针对其缺点,引入了拥有较好局部寻优能力的模拟退火算法。利用这两种算法的优势互补的地方将他们有机的融合,并且为了提高混合算法的性能,对混合算法进行改进,并最终形成自适应模拟退火遗传算法(自适应SAGA算法)。
在得到了关键技术--自适应SAGA算法后,对测试数据自动生成系统进行了设计以及实现。前面提到过系统的框架主要由三个部分构成,首先采用静态的程序分析,得到程序控制流程图,然后对程序的路径进行分析,可以得出系统的全部路径,最后根据需求要求,为满足覆盖某条系统路径,对经过程序插装的被测程序进行相应的测试数据的生成。其中对于测试数据生成模块进行了重点设计和实现。该模块主要内容包括:参数编码、适应度函数的构造、优选父代交换、自适应交叉和变异操作等。
最后,本文采用JAVA语言对自适应模拟退火遗传算法予以实现,针对一个实际的被测程序实例,给出运用测试数据自动生成系统生成的测试数据。实验结果显示出算法正确的执行并达到了预期结果-实现生成的数据正确覆盖指定路径。此外,通过与遗传算法的运行结果比较,还可以看出,自适应SAGA算法确实在执行效率上优于基本遗传算法和自适应遗传算法。当然,本系统还存在着许多缺点,如:时效性差、处理的数据类型单一等缺点。这还需要在以后进一步研究中加以改进。