根据测试路径自动生成测试用例_自动化测试用例生成:一个基于动态目标选择的多目标优化问题...

本文提出了一种名为 DynaMOSA 的新算法,它解决了测试用例生成中的多目标优化问题。DynaMOSA 基于 MOSA 并通过动态目标选择,特别是在控制依赖的基础上,提高了解决覆盖测试问题的效率和效果。在实证研究中,DynaMOSA 在分支和突变覆盖率方面优于现有方法,如 WSA 和 MOSA,显示了其在有限搜索预算下的优越性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

04b917374f19b59f22a9695249525230.png

摘要

测试用例生成本质上是一个多目标问题,因为目标是覆盖多个测试目标。现有基于搜索的方法要么一次考虑一个目标,要么将所有目标聚合成一个适应度函数(完整套件方法,whole-suite approach,WS)。多目标优化算法(MOAs)从来没有应用于这个问题,因为现有算法不能根据实际软件中通常存在的覆盖目标数量进行调整。此外,MOAs 的最终目标是在目标空间中寻找替代的折衷解决方案,而在测试生成中,有趣的解决方案只是那些覆盖一个或多个未覆盖目标的测试用例。

本文提出了一种新的多目标求解器 DynaMOSA(dynamic multi-objective sorting Algorithm,DynaMOSA),它是一种新的多目标求解器,专门用来解决覆盖测试环境下的测试用例生成问题。DynaMOSA 通过使用基于控制依赖层次结构的覆盖目标动态选择来扩展作者以前的多目标技术 MOSA(multi-objective Sorting Algorithm)。这种扩展使得该方法在搜索预算有限的情况下更加有效和高效。

我们对 346 个 Java 类进行了实证研究,使用三个覆盖标准(即语句、分支和变异覆盖率)来评估 DynaMOSA 在完整套件方法(WS)、其基于存档的变体(WSA)和 MOSA 方面的性能。结果表明,DynaMOSA 在 28%的分支覆盖率(平均增加 8%的覆盖率)和 27%的突变覆盖率(平均增加 11%)方面优于 WSA。在语句覆盖率方面,它在 51%的类中优于 WS,平均覆盖率提高了 11%。此外,DynaMOSA 在所有三个覆盖率标准上都优于它的前一代 MOSA,其中 19%的类的代码覆盖率平均高出 8%。

简介

基于搜索的测试用例生成器使用元启发式优化算法,从先前生成的测试用例中生成新的,从而减少并最终消除它们与每个尚未发现的目标的距离。这种距离的实际计算取决于所考虑的覆盖标准类型。在传统进化测试中,一个元启发式算法被多次应用以覆盖所有目标,每次使用不同的目标,直到所有目标都被覆盖或搜索总预算被耗尽。因此,最终的测试套件由覆盖一个或多个目标的所有测试用例组成,包括那些意外覆盖先前未覆盖目标的测试用例。

一次搜索一个目标在几个方面是有问题的。在所有目标上统一分配搜索预算可能在很大程度上是次优的,不可行的目标的存在也完全浪费了搜索时间。测试用例生成的完整套件的方法(WS)是最近解决这些问题的一次尝试。在单目标问题中,将一个复杂的单目标问题重新表述为定义在多个但更简单目标上的多目标问题,可以降低搜索陷入局部最优的概率,最终导致更快的收敛。然而当将多目标优化应用于测试用例生成时,有两个主要挑战需要解决:1、没有一个可用的多目标或多目标解算器能够扩展到覆盖测试中常见的目标数量;2、多目标解算器旨在增加解决方案的多样性,而不仅仅是单独地完全实现每个目标。

为克服上述局限性,我们引入了多目标排序算法(MOSA),一种针对测试用例生成问题而定制的多目标遗传算法。MOSA 有三个主要特点:1、它使用一种新的偏好准则,而不是根据解的帕累托最优性对解决方案进行排序;2、它只将搜索集中在尚未发现的覆盖目标上;3、它将满足一个或多个先前未发现的目标的所有测试用例保存到一个存档中,当搜索结束时,该存档包含最终的测试套件。

最近,Rojas 等人开发了带有归档(archive)的完整套件方法(WSA),这是一种混合策略,将 MOSA 的一些例程合并到传统的 WS 方法中。从经验的观点来看,WSA 在统计学上优于 WS 和一次一个目标的方法。但它产生了以下尚未回答的问题:(1)MOSA 的优势在多大程度上是源于对问题的多目标重新表述,或是源于归档机制的使用?(2) 由于两者都实施了一种归档策略,与 WSA 相比,MOSA 的性能如何?

本文中作者回答了前面提到的开放性问题。首先提出了使用动态目标选择的多目标排序算法 DynaMOSA(multi Objective Sorting Algorithm with Dynamic target selection),它扩展了 MOSA 的能力,使其能够在控制依赖层次的基础上,动态地将搜索集中在尚未发现的目标子集上。由于 DynaMOSA 使用相同的多目标算法和偏好准则对 MOSA 考虑的目标子集进行优化,因此确保 DynaMOSA 与 MOSA 具有同等或更高的效率。

问题表述

单目标表述

问题 1:设 U={u1,…,uk}为被测程序的结构测试目标集。找到一个测试套件 T={t1,…,tn},它使适应度函数最小化:

40d2be4d354977ee4b485c2d0c7bf4aa.png

其中 d(u,T)表示根据特定距离函数的目标 u 的最小距离。

问题 2:让 B={b1,…,bk}是一个类中的一组分支。找到一个覆盖所有可行分支的测试套件 T={t1,…,tn},即最小化以下适应度函数的测试套件:

de111021448d77b3aed3c9cc895522f1.png

其中|M|是方法总数,|MT|是 T 中所有测试用例执行的方法数,d(b,T)表示分支 b∈B 的最小规范化分支距离。

术语|M|−|MT|说明了未由 T 执行的方法的入口边缘。每个分支 b∈B 的最小正规化分支距离 d(b,T)定义为:

4af77644950d982ba1fb71c199d49cfe.png

其中 Dmin(t∈T, b)是最小的非规范化分支距离,根据任何可用的分支距离计算方案进行计算;这里的最小是指控制分支的谓词在一个测试用例中或由不同的测试用例执行多次的可能性。所有此类处决都是最

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值