一种应用于可配置软件系统的高测试强度测试集获取方法

专利2026-06-18  4


本发明涉及软件测试,更具体的说是涉及一种应用于可配置软件系统的高测试强度测试集获取方法。


背景技术:

1、软件已成为我国经济发展和工业创新的关键驱动力,尤其在航空航天、城市交通等领域,软件质量保障至关重要。设计缺陷可能导致灾难性后果,危及生命财产安全,并引发巨大经济损失。随着对定制化软件需求的增长,高度可配置软件在满足多变需求中发挥着重要作用,具备丰富的选项供用户定制。然而,尽管这类软件定制能力强,但测试面临巨大挑战,尤其是在应对配置数量的指数增长时。

2、组合测试广泛应用于检测可配置软件中的选项交互故障,通过生成覆盖阵列,系统性地测试各种选项组合,以减少测试用例数量并提高测试效率。覆盖阵列是一组测试用例,保证软件中任意t个选项的所有可能组合至少被一个测试用例涵盖。其中,t表示测试强度。虽然测试强度为2的覆盖阵列常用于工业界,但实证研究表明,测试强度为2的测试集只能检测约77%的缺陷,而测试强度为3的测试集则能识别超过95%的故障。因此,研究如何生成高测试强度的,即测试强度为3的覆盖阵列显得尤为迫切。

3、覆盖阵列的规模直接影响测试效率,因此,生成规模较小的覆盖阵列对减少测试时间至关重要。然而,生成满足复杂约束的覆盖阵列是np难解的组合优化问题,尤其在面对高度可配置软件时,现有方法在处理大规模覆盖阵列时常遇到内存耗尽、程序无法终止等问题。例如,在处理具有上千选项的系统时,生成测试强度为2的覆盖阵列已非常耗时,并产生规模过大的阵列,严重影响测试效率和效果。

4、尽管近期算法解决了测试强度为2的覆盖阵列生成的可扩展性问题,但测试强度为3的覆盖阵列仍面临巨大挑战。特别是,随着t=3所需覆盖的组合数大幅增加,现有算法的效率难以满足需求。总而言之,解决测试强度为3覆盖阵列生成问题的可扩展性,已成为组合测试领域的重要研究课题,对高度可配置软件的有效测试具有重要现实意义。


技术实现思路

1、有鉴于此,本发明提供了一种应用于可配置软件系统的高测试强度测试集获取方法,通过在测试强度为2的初始测试集基础上逐步新增测试用例,成功生成了测试强度为3的测试集,从而有效应对了高测试强度组合测试的可扩展性挑战,并高效地为实际应用中的大规模实例生成了测试强度为3的测试集,以至少解决了上述背景技术中提到的部分技术问题。

2、为了实现上述目的,本发明采用如下技术方案:

3、本发明提供了一种应用于可配置软件系统的高测试强度测试集获取方法,包括如下步骤:

4、步骤s1:基于待测可配置软件系统中各配置项之间的配置约束关系,获取对应的布尔公式;

5、步骤s2:通过组合测试求解器,构建测试强度为2的初始测试集;

6、步骤s3:采用快速无效性检测技术,对所述待测可配置软件系统中的每个待测三元组进行识别,生成未被所述初始测试集覆盖,且满足所述布尔公式的三元组集合;

7、步骤s4:基于所述三元组集合构建测试用例评价函数;

8、步骤s5:基于所述三元组集合构建多个测试用例,并通过所述测试用例评价函数筛选出当前轮次的最优测试用例;

9、步骤s6:将所述最优测试用例添加到所述初始测试集中,形成中间测试集;根据中间测试集对三元组集合进行更新,获得中间三元组集合;

10、步骤s7:基于所述中间三元组集合,重复执行步骤s5-步骤s6,直至生成测试强度为3的最终测试集。

11、优选的,还包括:

12、步骤s8:对所述最终测试集进行规模优化。

13、优选的,所述步骤s3具体包括:

14、步骤s31:针对所述待测可配置软件系统中的任一个由配置项构成的待测三元组,判断其是否被所述初始测试集覆盖;

15、步骤s32:针对未被所述初始测试集覆盖的每个待测三元组,将其分解为多个由该待测三元组的子集组成的二元组;

16、步骤s33:采用快速无效性检测技术,对每个待测三元组对应的多个二元组进行检测:

17、(1)若多个二元组中其中任意一个二元组没有被所述初始测试集覆盖,则判定对应的待测三元组不满足所述布尔公式;

18、(2)若多个二元组均被所述初始测试集覆盖,则采用sat求解器判断相应的待测三元组是否符合所述布尔公式;

19、步骤s33:将未被所述初始测试集覆盖,且满足所述布尔公式的待测三元组作为三元组集合。

20、优选的,所述步骤s5具体包括:

21、步骤s51:对于任意配置项x,统计三元组集合中涉及该配置项的待测三元组内x的0/1分布比例,并根据所述0/1分布比例设置相应的采样概率;依据所述采样概率对每个配置项进行采样,生成一个测试用例;

22、步骤s52:重复步骤s51,生成多个测试用例,从而构建一个测试用例候选集;

23、步骤s53:通过所述测试用例评价函数从所述测试用例候选集内,筛选出当前轮次中能够覆盖三元组集合中最多数量三元组的测试用例,作为最优测试用例。

24、优选的,在所述步骤s6中,所述根据中间测试集对三元组集合进行更新,包括:从当前轮次的三元组集合中去除已经被中间测试集覆盖的三元组。

25、优选的,所述步骤s7具体包括:

26、s71、基于所述中间三元组集合,重复执行步骤s5-步骤s6,直到所构建的测试用例均无法覆盖当前轮次中间三元组集合中的剩余三元组,停止重复过程;

27、s72、针对当前轮次中间三元组集合中剩余的每个三元组,构建对应的能够覆盖的测试用例,记作剩余测试用例;将所述剩余测试用例添加到当前轮次的中间测试集中,获得测试强度为3的最终测试集。

28、优选的,所述步骤s8具体包括:

29、步骤s81:针对最终测试集,保持步骤s2中生成的初始测试集不变,预删除步骤s5至步骤s7中新增的测试用例中的一个;

30、步骤s82:判断预删除处理后的最终测试集是否能够覆盖步骤s3构建的三元组集合中的所有三元组;若能,则将预删除的测试用例彻底删除;若不能,则将预删除的测试用例彻底删除后,对彻底删除处理后的最终测试集进行修改,使其能够覆盖所述三元组集合中的所有三元组;

31、步骤s83:重复执行步骤s81和s82,实现对最终测试集规模的压缩优化。

32、经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种应用于可配置软件系统的高测试强度测试集获取方法,具有如下有益效果:

33、1、本发明基于测试强度为2的测试集构建了测试强度为3的测试集,可以有效减少需要覆盖的三元组数量。相比从头开始构建测试强度为3的测试集的传统方法,本发明显著缩小了问题空间,从而大幅提升了算法的执行效率,特别是在处理大规模、高度可配置软件系统时,能够更加快速地生成所需的高强度测试集。

34、2、本发明引入了一种快速无效性检测技术,以应对三元组验证过程中存在的计算挑战。通过快速无效性检测技术,能够在不减少求解准确性的前提下,显著减少sat求解器的调用次数,从而大幅提高计算效率。这一改进使得处理复杂软件系统的测试变得更加可行和高效。

35、3、本发明采用了一种局部压缩策略,而非对整个测试强度为3的测试集进行全面压缩。在传统方法中,对整个测试强度为3的测试集进行压缩时,必须考虑所有有效的三元组,这将导致问题空间的急剧增大,进而增加计算复杂性。为此,本发明的压缩策略仅对新增的测试用例集合进行优化处理。这一策略有效地缩小了待处理的范围,大幅提高了压缩效率,确保了在不影响覆盖质量的前提下,生成的测试集规模更加精简,减少了实际测试过程中的时间和资源消耗。

36、本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。

37、下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。


技术特征:

1.一种应用于可配置软件系统的高测试强度测试集获取方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的一种应用于可配置软件系统的高测试强度测试集获取方法,其特征在于,还包括:

3.根据权利要求1所述的一种应用于可配置软件系统的高测试强度测试集获取方法,其特征在于,所述步骤s3具体包括:

4.根据权利要求1所述的一种应用于可配置软件系统的高测试强度测试集获取方法,其特征在于,所述步骤s5具体包括:

5.根据权利要求1所述的一种应用于可配置软件系统的高测试强度测试集获取方法,其特征在于,在所述步骤s6中,所述根据中间测试集对三元组集合进行更新,包括:从当前轮次的三元组集合中去除已经被中间测试集覆盖的三元组。

6.根据权利要求1所述的一种应用于可配置软件系统的高测试强度测试集获取方法,其特征在于,所述步骤s7具体包括:

7.根据权利要求2所述的一种应用于可配置软件系统的高测试强度测试集获取方法,其特征在于,所述步骤s8具体包括:


技术总结
本发明公开了一种应用于可配置软件系统的高测试强度测试集获取方法,包括:基于待测可配置软件系统中各配置项之间的配置约束关系,获取对应的布尔公式;通过组合测试求解器构建测试强度为2的初始测试集;采用快速无效性检测技术对待测可配置软件系统中的每个待测三元组进行识别,生成未被初始测试集覆盖,且满足布尔公式的三元组集合;基于三元组集合构建多个测试用例,并通过测试用例评价函数筛选出当前轮次的最优测试用例;将最优测试用例添加到初始测试集中,并基于此对三元组集合进行更新;重复上述过程,直至成功构建出覆盖测试强度为3的最终测试集。该方法大幅提升了算法的执行效率,能够更加快速地生成所需的高强度测试集。

技术研发人员:罗川,吕双羽,胡春明
受保护的技术使用者:北京航空航天大学
技术研发日:
技术公布日:2024/12/17
转载请注明原文地址:https://xbbs.6miu.com/read-31742.html