论文部分内容阅读
软件测试是保障软件质量的关键手段,在软件开发的各个阶段具有至关重要的作用。设计测试用例是测试的首要步骤也是关键一步。如今软件测试朝着自动化方向发展,通过自动化脚本或者工具来执行测试,大大节省了人力资源和时间成本,同时也避免了人的主观性错误。但是现有的自动化工具在测试用例的自动生成上还做的不够完善,大部分测试用例还是需要测试人员手动设计和生成。随着软件规模的扩大和程序路径变得越来越复杂,传统的手工设计测试用例无法满足需求,无法全面覆盖测试路径,更容易出错。本文针对如何提高测试效率、减少测试成本和提高软件测试自动化能力,对测试用例自动生成进行了研究。本文主要工作是对应用于测试用例自动生成中遗传算法进行研究,基于现有的软件测试技术和测试用例生成方法,提出了一种改进的模拟退火遗传算法应用到测试用例的自动生成技术之中,改善现有遗传算法生成测试用例时效率低下的缺陷。论文首先在国内外研究的基础上,对软件测试相关理论进行阐述分析,重点分析了面向结构的测试数据自动生成技术以及现有的一些可用方法。文中对各种方法及相关技术做了系统的总结与比较,而后指出在这一领域人工智能技术将能发挥很大作用。其次,本文对遗传算法和模拟退火算法进行详细的介绍,并分析标准遗传算法在测试用例自动生成上的可行性。针对遗传算法容易陷入局部最优解和目标路径覆盖率低的缺点,本文引入混合模拟退火遗传算法,确定了SA引入GA的方式,并将其用于测试用例的自动生成中。然后,本文介绍了模拟退火遗传算法应用在测试用例自动生成上的系统框架,对模拟退火遗传算法的关键技术进行了改进:针对能准确评价个体的优劣,对适应度函数进行改进,即提出一种新的面向路径相似度计算方法,并结合分支距离作为适应度函数;对交叉算子采取多点交叉技术;对变异算子进行改进,采用自适应变异。再在此基础上提出混合模拟退火遗传算法。改进后的算法能够快速收敛,达到最优,避免了陷入局部最优。最后在实验和结果分析部分,设计了基于改进后模拟退火遗传算法的测试数据辅助工具。并采用3个基准程序和1个实际程序进行实验,对标准遗传算法、自适应遗传算法和改进模拟退火遗传算法从最优迭代次数、运行时间和产生最优解的个数进行分析和总结,还在不同变异概率和种群规模下对算法进行分析。最后得出实验结论:改进的模拟退火遗传算法在产生最优测试用例的数目上有很大的优势并且收敛性好,表明了改进算法的可行性。