29、自动放松目标模型以应对不确定性及基于约束测试提升搜索式测试

自动放松目标模型以应对不确定性及基于约束测试提升搜索式测试

在软件开发中,应对不确定性和高效进行测试是至关重要的环节。下面将分别介绍自动放松目标模型应对不确定性以及利用约束测试提升搜索式测试的相关内容。

自动放松目标模型应对不确定性

在不确定环境的实验中,定义了两个原假设:
- 原假设 H10 :放松(RELAXed)和未放松(unRELAXed)的目标模型之间没有差异。
- 原假设 H20 :AutoRELAX 生成的放松目标模型与需求工程师手动创建的放松目标模型之间没有差异。

通过对生成的 AutoRELAX 模型、手动创建的放松目标模型和未放松目标模型的适应度值进行箱线图分析(如图 5 所示),结果表明:
|模型类型|适应度值比较结果|
| ---- | ---- |
|放松目标模型与未放松目标模型|放松目标模型的适应度值显著高于未放松目标模型(p < 0.001,Welch 双样本 t 检验),这使我们拒绝原假设 H10,得出 RELAX 确实能减少应对系统和环境不确定性时的适应次数。|
|AutoRELAX 生成的放松目标模型与手动创建的放松目标模型|AutoRELAX 生成的放松目标模型的适应度值显著高于手动创建的模型(p < 0.001,Welch 双样本 t 检验),拒绝原假设 H20,说明 AutoRELAX 能生成更好应对特定不确定性来源的放松目标模型。|

同时,图 6 展示了三种模型的适应成本箱线图,测量了 RDM 网络组件在重新配置期间处于活动、被动和静止模式的时间。放松目标模型表现更优的关键原因在于,通过谨慎降低非不变目标的满足标准,减少了适应次数,也减少了组件在重新配置期间处于被动和静止模式的时间。

分析自动生成的放松目标模型可知,其适应度值和适应成本与手动模型存在差异的主要原因有两点:
1. 手动放松目标模型对目标 (C)、(D)、(F)、(I) 和 (J) 进行了放松,而 AutoRELAX 主要对目标 (F)、(I) 和 (J) 引入了放松运算符,从而略微提高了适应度值。
2. 手动放松目标模型中的一些目标放松过于受限,例如 AutoRELAX 能将目标 (F) 的满足边界扩展到手动模型之外,使其能容忍更多临时网络分区,同时让组件在网络中持续积极分发数据。

该研究是概念验证性研究,有效性的威胁在于该技术在其他目标模型和应用中是否能取得类似结果。积极的结果促使将对人类有效性的研究作为未来工作的一部分。

相关工作主要涉及障碍缓解、需求中表达不确定性和需求监控:
- 障碍缓解 :van Lamsweerde 等人提出了一套策略来系统地识别、分析和解决障碍,但未明确目标在不影响其他目标的情况下可被不满足的程度。AutoRELAX 能自动确定目标在运行时可被不满足的情况和程度,对其策略进行了补充。Letier 和 van Lamsweerde 引入了概率框架来指定目标被满足的概率,但该框架将需求视为严格满足或不满足,AutoRELAX 可在识别可能从放松中受益的目标时利用这些概率。
- 需求中表达不确定性 :模糊集理论用于表示和分析需求中的不确定性。Whittle 等人引入 RELAX 来识别和分析动态自适应系统(DAS)中的不确定性来源,Cheng 等人将其扩展以支持在 KAOS 目标模型中对放松目标进行建模,Baresi 等人提出了 FLAGS 框架,引入了通过模糊逻辑函数评估满足度的模糊目标概念。但这些都依赖需求工程师手动确定可能不满足的目标和满足标准的灵活性,AutoRELAX 实现了这一过程的自动化。Welsh 等人引入了 Claims 作为不确定性标记,若 Claim 在运行时被证明为假,DAS 会重新配置到更理想的目标实现策略。AutoRELAX 专注于放松功能性非不变目标的满足,也可扩展到自动放松软目标的满足标准。
- 需求监控和反思 :Feather 等人开发了需求监控框架,可检测障碍的发生并在必要时重新配置系统。Sawyer 等人建议将需求提升为实时运行实体,其满足度可用于支持适应决策,这与 Souza 等人提出的反馈循环意识需求(AwReqs)结构类似。但这些方法都不支持对放松需求的管理或运行时监控。若这些框架扩展以支持放松需求,AutoRELAX 可用于自动指定放松目标的满足标准,而这些框架负责运行时监控其满足情况。

利用约束测试提升搜索式测试

在软件测试中,证明软件系统符合规范或发现其实现中的隐藏错误是耗时且繁琐的过程,占总软件成本的 50%。测试用例生成是软件测试阶段最昂贵的部分之一,因此自动化测试能显著降低软件成本、开发时间和上市时间。

目前,基于约束的测试(CBT)和搜索式测试(SBT)是测试用例生成的主流方法:
- CBT 方法
- 优点 :测试数据生成精度高,能证明某些路径不可达。
- 缺点 :无法处理被测单元的动态方面(动态结构、本地函数调用和与外部环境的通信),由于源代码复杂性或不可用性,并不总是能生成精确的测试输入。
- SBT 方法 :能处理任何类型的程序,但依赖搜索空间大小、初始种群的多样性和适应度函数的有效性。在大搜索空间中,若没有多样化的种群或足够的指导,使用进化测试效率低下,例如在包含布尔变量条件语句的程序中,进化测试可能缺乏必要信息来引导搜索。尽管 SBT 在行业中广泛使用,但仍存在许多问题,可通过结合 CBT 来解决。

为解决上述问题,提出了一种混合方法 CSBT,结合 CBT 和 SBT 来生成测试数据:
1. 定义新的 CBT 框架 :替换 SBT 方法中的随机生成。CBT 对被测单元(UUT)的松弛版本进行建模并求解,生成 SBT 的测试输入候选。
2. SBT 框架处理 :SBT 框架获取这些输入候选并生成实际测试输入。

实现了该混合方法的原型,并将其应用于一组程序以生成实现分支覆盖的测试输入数据。通过对 CBT、SBT 和 CSBT 进行比较,结果表明 CSBT 技术优于其他方法,能减少达到给定测试目标所需的工作量,并实现比单独使用每种方法更高的分支覆盖。

该方法的贡献包括:
- 一种结合搜索式和基于约束技术生成测试输入数据的新方法。
- 一个将 UUT 的松弛版本建模为约束满足问题的框架。
- 对一些程序上的 CBT、SBT 和 CSBT 进行的实证比较。

下面是 CSBT 方法的流程图:

graph TD;
    A[开始] --> B[CBT 建模 UUT 松弛版本];
    B --> C[CBT 生成测试输入候选];
    C --> D[SBT 框架获取输入候选];
    D --> E[SBT 生成实际测试输入];
    E --> F[测试并评估分支覆盖];
    F --> G[结束];

综上所述,无论是自动放松目标模型应对不确定性,还是利用约束测试提升搜索式测试,都为软件开发中的关键环节提供了有效的解决方案和改进思路,有助于提高软件的质量和开发效率。

自动放松目标模型以应对不确定性及基于约束测试提升搜索式测试

自动放松目标模型应对不确定性的总结与展望

自动放松目标模型(AutoRELAX)在应对系统和环境不确定性方面展现出了显著的优势。通过实验对比,我们明确了 RELAX 能够有效减少适应次数和成本,并且 AutoRELAX 生成的放松目标模型在性能上优于手动创建的模型。

从实验结果来看,AutoRELAX 不仅能够根据特定的不确定性来源自动引入目标放松,还能通过分析目标模型,识别出受不确定性影响较大的目标并进行针对性处理。例如,在实验中,AutoRELAX 总是放松目标 (J),并根据网络链接故障和消息丢失的可能性对目标 (F) 进行放松,而目标 (I) 由于受多种不确定性因素影响,AutoRELAX 也能自动识别并引入放松运算符来减轻其影响。

未来,我们可以从以下几个方面对 AutoRELAX 进行扩展和优化:
1. 优化模糊逻辑函数形状 :目前的研究可以进一步扩展搜索参数,优化定义放松目标满足标准的模糊逻辑函数的底层形状,如三角形与梯形的选择,以更好地适应不同的应用场景和不确定性情况。
2. 支持非功能目标放松 :将 AutoRELAX 扩展到支持非功能目标的自动放松,从而更全面地应对软件系统中的各种不确定性。

利用约束测试提升搜索式测试的详细分析与应用

在利用约束测试提升搜索式测试的研究中,我们提出的混合方法 CSBT 结合了 CBT 和 SBT 的优势,有效解决了两种方法各自存在的问题。

为了更清晰地展示 CSBT 的优势,我们可以通过一个表格对比 CBT、SBT 和 CSBT 的特点:
| 方法 | 优点 | 缺点 | 适用场景 |
| ---- | ---- | ---- | ---- |
| CBT | 测试数据生成精度高,能证明某些路径不可达 | 无法处理被测单元的动态方面,不一定能生成精确测试输入 | 对测试数据精度要求高,且被测单元动态性较低的场景 |
| SBT | 能处理任何类型的程序 | 依赖搜索空间大小、初始种群多样性和适应度函数有效性,大搜索空间中效率低 | 对程序类型无限制,但搜索空间较小或有足够指导的场景 |
| CSBT | 结合两者优势,减少达到测试目标的工作量,提高分支覆盖 | - | 各种类型的程序测试,尤其是需要高效覆盖分支的场景 |

在实际应用 CSBT 方法时,具体的操作步骤如下:
1. CBT 建模 UUT 松弛版本 :对被测单元(UUT)进行分析,构建一个松弛版本的模型,将其转化为约束满足问题。
2. CBT 生成测试输入候选 :基于上述模型和测试目标,使用 CBT 方法生成满足一定约束条件的初始测试输入候选。
3. SBT 框架获取输入候选 :SBT 框架接收 CBT 生成的输入候选,作为初始种群。
4. SBT 生成实际测试输入 :利用进化算法和约束进化运算符(CEO),对输入候选进行进化,生成实际的测试输入。
5. 测试并评估分支覆盖 :使用生成的测试输入对程序进行测试,并评估分支覆盖情况。如果未达到预期的覆盖目标,可以调整参数并重复上述步骤。

通过对三个开源程序的实验验证,我们发现使用约束种群生成器(CPG)或约束进化运算符(CEO)可以将 SBT 的分支覆盖性能提高 11%,同时减少计算时间。这充分证明了 CSBT 方法在实际应用中的有效性和实用性。

总结与未来研究方向

自动放松目标模型和利用约束测试提升搜索式测试这两项技术为软件开发中的不确定性应对和测试效率提升提供了重要的解决方案。AutoRELAX 为动态自适应系统的自我评估能力提供了有效的支持,而 CSBT 则为软件测试用例的生成提供了一种更高效的方法。

未来的研究可以进一步探索这两项技术的结合应用,例如在动态自适应系统的测试中,使用 CSBT 方法生成测试用例,同时利用 AutoRELAX 对系统目标进行放松,以更好地应对系统运行过程中的不确定性。此外,还可以深入研究如何提高这两项技术的通用性和可扩展性,使其能够应用于更多类型的软件系统和应用场景。

总之,随着软件系统的不断发展和复杂化,应对不确定性和提高测试效率将始终是软件开发领域的重要研究课题。我们相信,通过不断的研究和创新,这些技术将为软件行业的发展做出更大的贡献。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值