1.一种多路径覆盖测试用例生成方法,其特征在于,所述方法包括如下步骤:获取用例遗传种群,并将所述用例遗传种群中的测试用例输入预训练后的适应度预测模型进行预测,得到预测适应度;
若任一所述预测适应度大于验证阈值,则将所述预测适应度对应的测试用例进行程序插桩,得到插桩适应度和第一覆盖路径;
若所述插桩适应度等于目标适应度,则将所述插桩适应度对应的测试用例确定为目标优秀用例,并在目标路径集中删除所述第一覆盖路径;
若所述目标路径集未满足迭代条件,则对所述用例遗传种群进行用例抽取,得到第一抽取用例,并对所述第一抽取用例进行用例变异,得到变异用例种群,该步骤的条件设置为判断目标路径集中的目标路径是否都已经被覆盖,也即目标路径集中的目标路径均已经删除,若目标路径集中的目标路径均已经删除,则判定目标路径集满足迭代条件;
根据所述变异用例种群对所述用例遗传种群进行种群迭代,并根据更新后的所述用例遗传种群返回执行输入预训练后的适应度预测模型进行预测的步骤,直至所述目标路径集满足迭代条件;
若所述目标路径集满足迭代条件,则输出所述目标优秀用例;
获取用例遗传种群,包括:
对初始测试用例集进行聚类,得到用例簇,并对各用例簇中的测试用例进行程序插桩,得到第二覆盖路径;
根据各第二覆盖路径生成路径覆盖矩阵,并根据所述路径覆盖矩阵确定路径相似度矩阵;
根据所述路径相似度矩阵确定各测试用例的用例潜能和路径覆盖值,并根据各测试用例的用例潜能和路径覆盖值生成所述用例遗传种群;
根据所述路径覆盖矩阵确定路径相似度矩阵采用的公式包括:;
其中, 为所述路径覆盖矩阵,所述路径覆盖矩阵的行表示一条第二覆盖路径,表示第 个第二覆盖路径的第 个节点的状态,为所述第二覆盖路径中的节点总数;
;
其中, 表示第二覆盖路径 与目标路径 的相似度, 用于记录第二覆盖路径 与目标路径 之间第 个路径节点状态是否相同,相同记为1,不相同记为
0, 表示第 个第二覆盖路径的第 个节点的状态, 表示第 个目标路径的第 个节点的状态;
;
其中, 为所述路径相似度矩阵,所述路径相似度矩阵的行表示对应第二覆盖路径与目标路径的相似度, 为所述目标路径集对应的目标路径矩阵, 为路径覆盖矩阵中第个第二覆盖路径, 为所述目标路径矩阵中第 个目标路径, 为 与 的相似度;
根据各测试用例的用例潜能和路径覆盖值生成所述用例遗传种群,包括:在各用例簇中,根据所述用例潜能对测试用例进行排序,得到潜能排序表,并分别计算各用例簇的约简数值;
针对各用例簇,获取所述潜能排序表中约简数值内的测试用例,得到第一约简用例;
根据各测试用例的路径覆盖值进行排序,得到覆盖排序表,并获取所述覆盖排序表中前第一预设值内的测试用例,得到第二约简用例;
根据所述第一约简用例和所述第二约简用例生成所述用例遗传种群;
根据所述路径相似度矩阵确定各测试用例的用例潜能和路径覆盖值采用的公式包括:;
其中, 表示测试用例 的第二覆盖路径与目标路径的相似度大于第一相似度阈值的个数, 表示测试用例 的用例潜能, 表示目标路径的总数;
路径覆盖值 ;
其中, 表示与第 个目标路径相似的第二覆盖路径对应的测试用例的个数,表示测试用例的总个数。
2.如权利要求1所述的一种多路径覆盖测试用例生成方法,其特征在于,将所述用例遗传种群中的测试用例输入预训练后的适应度预测模型进行预测之前,还包括:分别对所述初始测试用例集中的测试用例进行程序插桩,得到第三覆盖路径,并分别计算各第三覆盖路径与各目标路径之间的路径相似度,得到覆盖相似度;
分别获取各测试用例的第三覆盖路径与各目标路径之间覆盖相似度大于第二相似度阈值的个数,得到路径相似数;
根据所述路径相似数和目标路径总数,分别计算各测试用例的个体适应度,并根据所述个体适应度对所述适应度预测模型进行训练,直至所述适应度预测模型收敛,得到预训练后的适应度预测模型。
3.如权利要求2所述的一种多路径覆盖测试用例生成方法,其特征在于,对所述第一抽取用例进行用例变异,得到变异用例种群,包括:根据所述个体适应度对各测试用例进行排序,得到适应度排序表,并获取所述适应度排序表中前第二预设值内的测试用例,得到初始优秀集;
对所述初始优秀集中的测试用例进行抽取,得到第二抽取用例,并分别对所述第一抽取用例和所述第二抽取用例进行二进制转换;
将二进制转换后的所述第一抽取用例和所述第二抽取用例进行交叉变异,得到所述变异用例种群。
4.如权利要求1所述的一种多路径覆盖测试用例生成方法,其特征在于,若所述目标路径集未满足迭代条件之后,还包括:若所述目标优秀用例的用例数量大于数量阈值,则根据所述目标优秀用例对所述适应度预测模型进行更新,并删除所述目标优秀用例。
5.一种多路径覆盖测试用例生成系统,其特征在于,应用权利要求1至4任一项所述的多路径覆盖测试用例生成方法,所述系统包括:适应度预测模块,用于获取用例遗传种群,并将所述用例遗传种群中的测试用例输入预训练后的适应度预测模型进行预测,得到预测适应度;
程序插桩模块,用于若任一所述预测适应度大于验证阈值,则将所述预测适应度对应的测试用例进行程序插桩,得到插桩适应度和第一覆盖路径;
若所述插桩适应度等于目标适应度,则将所述插桩适应度对应的测试用例确定为目标优秀用例,并在目标路径集中删除所述第一覆盖路径;
用例变异模块,用于若所述目标路径集未满足迭代条件,则对所述用例遗传种群进行用例抽取,得到第一抽取用例,并对所述第一抽取用例进行用例变异,得到变异用例种群;
优秀用例输出模块,用于根据所述变异用例种群对所述用例遗传种群进行种群迭代,并根据更新后的所述用例遗传种群返回执行输入预训练后的适应度预测模型进行预测的步骤,直至所述目标路径集满足迭代条件;
若所述目标路径集满足迭代条件,则输出所述目标优秀用例。