论文部分内容阅读
软件测试用例生成技术和优先级排序技术是软件测试自动化的两个关键技术,元启发式搜索算法被广泛应用于解决测试用例自动生成与优先级排序问题。本文系统学习并总结了目前国内外已有的在相关技术方面的研究成果,发现元启发式搜索算法在测试用例生成技术和优先级排序技术中的应用尚未成熟,普遍存在算法收敛速度慢、考虑影响因素单一、难以收敛至全局最优等问题。为此,本文主要对元启发式搜索算法用于解决测试用例生成和优先级排序的问题进行了研究,分别提出了一种基于遗传优化算法的动态引导测试用例生成策略,以及一种基于蚁群优化算法的动态约简的多目标优先级排序方法。本文主要研究内容以及具体贡献主要为以下三个方面:(1)在基于路径覆盖的测试用例生成技术方面,本文使用被应用较广泛的遗传算法进行求解。考虑到初始测试数据对路径节点的覆盖情况,先是区分出难易覆盖路径,然后设计了一种路径相似度的计算公式,分析出难易覆盖路径间的启发信息并用于替代遗传算法的部分初始种群。(2)在遗传算法的改进方面,增加考虑了分支权重对种群适应度的影响,分别根据不同程序的特征为各影响因子赋予权重,构造了一种带有权重影响因子的适应度评价函数,并以此设计自适应遗传概率,定向引导个体交叉变异,以快速得到满足路径覆盖的高质量测试数据。(3)在测试用例优先级排序技术方面,本文使用鲁棒性较强的蚁群算法求解这一问题,在排序过程中结合一种动态约简的思想,根据需求覆盖情况对测试用例进行初始约简,然后考虑到测试用例实际执行过程中是否能检测出的错误以及错误的等级,设计测试用例失效度的判别方法对迭代过程中的测试用例进行二次约简,通过两次约简大幅度减少蚁群迭代的时间消耗。在蚁群算法的信息素更新策略上,本文综合考虑了测试用例重要度、失效度以及有效执行时间三个因素对信息素的影响,在线指导蚁群信息素的更新,提升蚁群算法的求解精度和收敛速度。为了验证本课题在测试用例生成与优先级排序这两个方面提出的改进方法的有效性,选取多个基准和工业程序进行编程实验,将本文提出的基于元启发式搜索算法的测试用例生成和多目标优先级排序方法分别与其他方法进行对比,仿真实验结果表明,本选题研究的基于遗传算法的测试用例生成方法在收敛速度、路径覆盖率、已有测试数据的利用率上有明显优势,提出的基于蚁群优化算法的多目标优先级排序方法在语句覆盖率、缺陷检测效率和有效执行时间等方面均优于其他方法。