论文部分内容阅读
回归测试是指修改了程序后,需要重新进行测试来确保修改程序没有引入新的错误或导致原有程序产生错误,为确保软件的可靠性,软件在迭代开发的过程中通常需要进行多次回归测试。在回归测试的过程中,测试人员为了覆盖软件的修改和新增部分,需要对原有测试数据集进行扩增。与传统的测试数据生成技术相比,测试数据扩增技术在分析软件修改影响的基础上,针对软件变化产生新的测试数据,有效的提高了软件的测试效率。本文针对在回归测试中原有测试数据集往往难以满足新版本软件测试需求的问题,分别从面向行为和面向覆盖的角度阐述回归测试数据集扩增技术,并分析它们各自的适应场景;主要工作如下:1、面向行为的测试数据扩增技术;提出了一种基于谓词引导的测试数据集扩增方法,首先从原有的测试数据集中选择经过程序修改节点的测试数据作为初始测试数据集,并提取程序中的谓词信息;然后根据K-MEANS聚类算法的特性,以待覆盖的目标路径为虚拟中心点,根据已选择的测试数据集的谓词距离进行聚类划分;最后在随机生成的测试数据集中选取针对各个中心点的局部孤立的测试数据作为扩增数据,进而达到引导测试数据扩增的目的。2、面向覆盖的测试数据扩增技术;提出了一种基于自适应粒子群算法的回归测试数据集扩增方法,首先,根据原有测试数据在新版本程序上的穿越路径与目标路径的相似度,在原有的测试数据集中选择合适的测试数据,作为初始种群的进化个体;然后,利用初始测试数据的穿越路径与目标路径之间的不同子路径,确定造成两者路径偏离的输入分量;最后,根据路径相似度构建的适应度函数,利用自适应粒子群算法操作输入分量,生成新的测试数据。3、测试数据扩增任务的并行化;实现了一种基于Hadoop平台的测试数据集并行扩增方法,首先将待覆盖目标路径所对应的测试数据进行聚类分簇;然后根据MapReduce框架的生命周期,将测试数据集扩增任务进行分解,保持各个阶段之间的数据通信,最终提高测试数据集扩增的效率。4、开发了一个面向回归测试的测试数据扩增原型工具。最后,针对基准程序分别利用本论文提出的方法进行测试数据扩增,通过实验验证了本文扩增方法各自的有效性和适用场景。