论文部分内容阅读
软件测试自动化的关键技术之一在于测试用例的生成。运用启发式搜索算法进行软件测试用例生成已被证实是一种有效的方法,其中,遗传算法是使用最为广泛的技术。然而,遗传算法作为一种基于自然选择的搜索算法仍然存在早熟收敛、后阶段收敛速度低等不足,而传统标准遗传算法使用固定的交叉率和变异率作为遗传算子,进化后期个体的趋同化程度越来越高,种群多样性急剧降低,不利于全局寻优,阻碍了其应用于分支覆盖测试用例生成效率的提高。另外,将遗传算法应用于路径覆盖的结构测试中,传统方法在评价函数设计方面不够理想,没有考虑待覆盖目标路径的分支结构性差异,影响了路径覆盖测试生成效率。为此,本文分别对分支覆盖和路径覆盖问题提出基于自适应遗传算法的测试用例生成方法,其主要研究内容概括如下:(1)为维持种群多样性,缓解算法早熟收敛问题,本文利用海明距离计算个体的相似度,结合种群进化过程中个体的适应度差异性,提出一种度量种群多样性的函数,以此作为调节因子,动态调整交叉率和变异率,使遗传算法自适应化。(2)在分析遗传算法和软件测试生成技术的理论基础上,提出一种基于自适应遗传算法的分支覆盖测试用例生成框架,对算法设计过程中的相关算子进行了改进与分析,使其更好地应用于分支覆盖测试用例生成问题。(3)针对目标路径覆盖的测试用例生成这一具体问题,通过程序静态分析,考虑分支嵌套深度对分支谓词的权重影响,结合层接近度和分支距离,提出一种新的适应度函数,动态调整个体的评价值,提高了路径覆盖测试用例的生成效率。为了验证本文方法的有效性,分别选取了一系列基准程序进行实验,实验结果表明:对于分支覆盖测试用例生成问题,当测试用例集规模一定时,本文提出的自适应遗传算法比原始算法加快了收敛速度,提高了分支覆盖率;对于目标路径覆盖测试用例生成问题,本文提出的改进方法比传统方法减少了进化代数和时间开销,且具有更高的路径覆盖成功率。