测试用例生成方法、装置、设备、存储介质和程序产品与流程
本技术涉及软件测试,特别是涉及一种测试用例本生成方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
背景技术:
1、在软件工程领域,软件测试是为了发现和修复软件中的缺陷,验证软件是否符合设计需求,是软件开发过程中的一个至关重要的环节,而测试用例则是软件测试的核心部分,影响着软件产品的质量和可靠性。
2、相关技术中的测试用例的生成方法,存在测试用例生成效率与路径覆盖率低的问题。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种能够提高测试用例生成效率与路径覆盖率的测试用例生成方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
2、第一方面,本技术提供了一种测试用例生成方法,方法包括:
3、获取待测程序对应的目标路径集合;目标路径集合中的各目标路径为待测程序中实际可执行的定义使用路径;
4、根据初始测试用例集合中各初始测试用例的实际执行路径和目标路径,确定各初始测试用例的适应度;
5、对初始测试用例集合的各子集中最劣适应度对应的初始测试用例进行局部优化,获得第一测试用例集合,针对第一测试用例集合中满足预设条件的各第一测试用例,更新各目标路径的信息素,根据各目标路径的更新后信息素,对各第一测试用例进行全局优化,获得第二测试用例集合;
6、将第二测试用例集合作为初始测试用例集合,对初始测试用例集合继续进行局部优化和全局优化,直至满足优化终止条件,将满足优化终止条件的初始测试用例作为目标测试用例。
7、在其中一个实施例中,根据初始测试用例集合中各初始测试用例的实际执行路径和目标路径,确定各初始测试用例的适应度,包括:
8、针对各初始测试用例,获取初始测试用例的实际执行路径与各目标路径中节点处于相同位置的第一节点数量以及包含连续相同节点的第二节点数量;
9、计算第一节点数量与各目标路径的总节点数量的第一比值、第二节点数量与各目标路径的总节点数量的第二比值,对第一比值和第二比值进行加权融合,获得初始测试用例的实际执行路径与各目标路径之间的单路径适应度;
10、获取初始测试用例的最大单路径适应度,并计算初始测试用例的所有单路径适应度的平均值,将最大单路径适应度与平均值相减,获得初始测试用例的适应度。
11、在其中一个实施例中,对第一比值和第二比值进行加权融合,获得初始测试用例的实际执行路径与各目标路径之间的单路径适应度,包括:
12、利用蒙特卡洛算法,对第一比值对应的第一权重和第二比值对应的第二权重进行随机抽样模拟,计算权重评估指标;权重评估指标基于路径覆盖成功率和收敛迭代次数确定;
13、根据权重评估指标达到最优时的第一权重和第二权重,对第一比值和第二比值进行加权求和,获得初始测试用例的实际执行路径与各目标路径之间的单路径适应度。
14、在其中一个实施例中,在对初始测试用例集合的各子集中最劣适应度的初始测试用例进行局部优化的步骤之前,方法还包括:
15、在初始测试用例的实际执行路径与第一目标路径之间的单路径适应度为预设数值的情况下,将第一目标路径从目标路径集合中删除;第一目标路径为目标路径集合的其中一个目标路径。
16、在其中一个实施例中,对初始测试用例集合的各子集中最劣适应度的初始测试用例进行局部优化,获得第一测试用例集合,包括:
17、针对各子集,获取子集中最劣适应度的初始测试用例的当前位置、最优适应度与预设阈值的乘积结果;预设阈值是基于随机数和预设系数确定,预设系数随迭代次数非线性递减;
18、将乘积结果与最劣适应度相减,获得差值;
19、将差值与随机数相乘,获得位置移动步长;
20、根据位置移动步长,更新最劣适应度的初始测试用例的当前位置,以迭代优化最劣适应度的初始测试用例,直至迭代结束,合并各个迭代后的子集,获得第一测试用例集合。
21、在其中一个实施例中,更新各目标路径的信息素,包括:
22、针对各目标路径,获取第一测试用例集合中各精英测试用例对目标路径的信息素增量;各精英测试用例为第一测试用例集合中适应度高于预设适应度阈值的第一测试用例;各精英测试用例对目标路径的信息素增量基于各精英测试用例的实际执行路径与目标路径之间的单路径适应度确定;
23、根据各精英测试用例对目标路径的信息素增量,对目标路径的当前信息素进行更新。
24、在其中一个实施例中,根据各目标路径的更新后信息素,对各第一测试用例进行全局优化,获得第二测试用例集合,包括:
25、利用蚁群算法,根据各目标路径的更新后信息素和预设的蚁群状态转移规则,生成新的测试用例集合;
26、针对新的测试用例集合的每个新测试用例,计算新测试用例与第一测试用例集合的每个第一测试用例之间的汉明距离,将汉明距离大于或等于预设距离阈值的新测试用例作为候选测试用例;
27、将候选测试用例替换第一测试用例,获得第二测试用例集合。
28、在其中一个实施例中,获取待测程序对应的目标路径集合,包括:
29、获取待测程序对应的控制流图以及待测程序被执行时的路径覆盖信息;
30、根据控制流图,获取待测程序包含的定义使用路径;
31、根据路径覆盖信息,构建分支覆盖表和关联树;分支覆盖表用于表征待测程序的各程序分支是否被所路径覆盖信息包含的实际执行路径经过,关联树的各节点用于表征各程序分支,关联树的边用于表征连接的两个节点之间的传递关系;
32、根据分支覆盖表和关联树,生成假设路径;假设路径为存在程序分支冲突的定义使用路径;
33、将假设路径与定义使用路径进行匹配,以剔除实际不可执行的定义使用路径,获得目标路径集合。
34、第二方面,本技术还提供了一种测试用例生成装置,装置包括:
35、目标路径集合获取模块,用于获取待测程序对应的目标路径集合;目标路径集合中的各目标路径为待测程序中实际可执行的定义使用路径;
36、适应度确定模块,用于根据初始测试用例集合中各初始测试用例的实际执行路径和目标路径,确定各初始测试用例的适应度;
37、初始测试用例优化模块,用于对初始测试用例集合的各子集中最劣适应度对应的初始测试用例进行局部优化,获得第一测试用例集合,针对第一测试用例集合中满足预设条件的各第一测试用例,更新各目标路径的信息素,根据各目标路径的更新后信息素,对各第一测试用例进行全局优化,获得第二测试用例集合;
38、目标测试用例获得模块,用于将第二测试用例集合作为初始测试用例集合,对初始测试用例集合继续进行局部优化和全局优化,直至满足优化终止条件,将满足优化终止条件的初始测试用例作为目标测试用例。
39、第三方面,本技术还提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现第一方面的方法步骤。
40、第四方面,本技术还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现第一方面的方法步骤。
41、第五方面,本技术还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现第一方面的方法步骤。
42、上述测试用例生成方法、装置、计算机设备、计算机可读存储介质和计算机程序产品,通过获取待测程序对应的目标路径集合;目标路径集合中的各目标路径为待测程序中实际可执行的定义使用路径;根据初始测试用例集合中各初始测试用例的实际执行路径和目标路径,确定各初始测试用例的适应度;对初始测试用例集合的各子集中最劣适应度对应的初始测试用例进行局部优化,获得第一测试用例集合,针对第一测试用例集合中满足预设条件的各第一测试用例,更新各目标路径的信息素,根据各目标路径的更新后信息素,对各第一测试用例进行全局优化,获得第二测试用例集合;将第二测试用例集合作为初始测试用例集合,对初始测试用例集合继续进行局部优化和全局优化,直至满足优化终止条件,将满足优化终止条件的初始测试用例作为目标测试用例;如此,本技术通过获取待测程序对应的目标路径集合,该目标路径集合中的目标路径为待测程序中实际可执行的定义使用路径,从而可以避免无效的定义使用路径消耗算法资源;通过确定各初始测试用例的适应度,并根据适应度,对初始测试用例进行局部优化和全局优化,可以增强算法对路径覆盖的引导性,从而提高了目标测试用例的生成效率和路径覆盖率。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com