论文部分内容阅读
随着信息化的不断深入,软件产品的应用日益广泛,规模越来越大,复杂程度越来越高,软件质量问题日益成为软件技术领域研究的重点和热点问题。软件测试作为保证软件质量和可靠性的重要手段已经成为国内外软件行业研究的重点方向之一。 本文主要研究的是路径测试数据的自动生成方法。在软件测试中,路径测试数据生成问题描述为:给定一个程序P和P中的一条路径W,设P的输入空间为D,求(?)D,使得P以(?)为输入运行,所经过的路径为W。路径测试是一个NP问题,是对程序进行结构测试的重要方法。研究测试数据的自动生成,可以降低手工测试的高额成本,减轻测试人员所必须付出的大量劳动,同时提高测试过程的可信赖程度。因此路径测试数据自动生成方法的研究,对实现软件测试过程自动化,有着十分重要的现实意义。 本文首先总体介绍了路径测试数据自动生成方法的几个步骤:程序分析、路径选择、测试数据自动生成。介绍了每个步骤的主要工作内容,以及现阶段所使用的主要方法。重点总结归纳了测试数据自动生成的方法:随机法、符号执行法、程序直接执行法、遗传算法。最终确定使用遗传算法作为实现路径测试数据自动生成的核心算法。 随后,对遗传算法、模拟退火遗传算法、免疫遗传算法各自的特点进行了分析和研究,针对简单遗传算法容易产生早熟收敛、个体多样性差等问题,本文提出了退火免疫遗传算法(AIGA)作为测试数据自动生成的核心算法,该算法使用期望繁殖率代替适应度来决定个体的繁殖机会,同时使用退火温度T对期望繁殖率进行调节,并建立了路径存储库,以减轻系统反复计算相同路径的适应度的压力。 最后使用三角形分类程序TRITYP作为例子,生成了该程序的测试数据,并对实验数据进行了分析。实验结果表明,该算法通过对浓度高的个体的抑制,避免了适应度高的少数个体迅速大量繁殖,导致群体的多样性明显降低,遗传算法过早丧失进化能力的现象的发生,从而取得了较好的效果。