[0033] 下面结合附图并通过具体实施方式来进一步描述本发明。
[0034] 图1为本发明方法中实施的OTT策略流程图。
[0035] 本发明所述的组合测试用例优先级方法,将OTT策略、多目标优化思想和组合测试用例优先级排序方法相结合,提出了一种多个优先级排序因素,以及根据实际测试结果调整影响因子取值、测试用例集测试用例序列和覆盖组合的情况的方法,用于组合测试用例优先级排序,如图2所示,包括以下步骤:
[0036] 步骤1:输入组合测试用例集 输入可变力度覆盖矩阵VSCA=(N;λm,n,F,CA(N′,λs,n′,F′)),初始化测试用例序列集 是t0时刻的组合测试用例集, 是t0时刻的测试用例序列集。此时,i=0。
[0037] 步骤2:判断影响因子集F下,测试用例序列 是否覆盖了全部λm元组合。若λm元组合未完全被测试用例序列 覆盖:
[0038] R=F,λ=λm
[0039] 若λm元组合均被测试用例序列 覆盖:
[0040] R=F′,λ=λs
[0041] 其中,λm和λs是可变力度覆盖矩阵VSCA=(N;λm,n,F,CA(N′,λs,n′,F′))中对应的力度,R和λ是新使用变量,为了便于后期优先级的计算和排序因素的调整。
[0042] 步骤3:计算每条尚未执行的测试用例的优先级
[0043]
[0044] 其中,tc是测试用例,ti是当前时刻,λ为组合覆盖力度, 是测试用例tc的局部组合覆盖率。表示测试用例tc,ti时刻下在局部影响因子集R中覆盖所有λ元组合,且这些λ元组合尚未被测试用例序列 覆盖的概率。 是测试用例tc失效
率。表示测试过程中,ti时刻测试用例tc的失效率。I(tc,R)是测试用例tc重要程度。α、β、γ分别表示局部组合覆盖率、测试用例失效率和测试用例重要程度的权值,且α+β+γ=1。
[0045] 步骤3.1:计算测试测试用例tc多重待覆盖率
[0046]
[0047] 其中,CombSet(λ,R)(tc)是测试用例tc在影响因子集R中覆盖所有λ元组合的集合,是测试用例序列 在影响因子集R中未覆盖λ元组合的集合,n为R中影响因子的个数。
[0048] 步骤3.2:计算测试用例tc失效率
[0049]
[0050] 其中, 是参数取值失效率。表示测试过程中,ti时刻测试用例tc在影响因子集R中,fk对应取值为p的失效率。 是参数取值失效个数。表示测试用例tc在影响因子集R中,ti时刻参数取值失效率不为0的参数取值个数,即 的
参数取值个数。
[0051] 步骤3.3:计算测试用例tc重要程度I(tc,R):
[0052]
[0053] 其中,ω(fk,p)是参数取值重要程度。表示影响因素fk中,取值为p的重要程度。n是测试用例tc中参数的个数。
[0054] 步骤3.4:计算测试用例tc的优先级
[0055]
[0056] 步骤3.5:重复步骤3.1~3.4,直到组合测试用例集 中的所有测试用例的优先级计算出结果为止。
[0057] 步骤4:寻找ti时刻优先级最高的测试用例集equalSet。可能存在多个优先级最高的测试用例,将这些优先级相同且优先级最高的测试用例表示成一个优先级最高的测试用例集。
[0058] 步骤5:从测试用例集equalSet随机选取一条测试用例 并执行测试用例 且获取测试结果。
[0059] 步骤6:测试过程中,当前测试用例的执行结果能够反馈SUT存在的问题。根据测试用例 的测试结果,调整测试用例的失效率,即调整参数取值失效率 使得ti时刻的测试用例的失效率能够在测试过程中动态调整。测试用例的执行能够反馈当前可能存在的错误与缺陷,那么测试用例所覆盖的参数取值的失效率需要做出相应的调整,以保证测试用例失效率能够实时计算,确保最终优先级排序的准确性。若ti-1(i≥1)时刻,测试用例 检测出SUT中存在的缺陷,测试结果只能反应软件失效,但无法判断究竟是由哪些参数相互作用引发的失效。因此,只能对 覆盖的所有参数取值的失效率相应增加,其他参数取值的失效率各参数取值失效率可用以下公式:
[0060]
[0061] 其中,Δc为失效率的增加值。
[0062] 若ti-1(i≥1)时刻,测试用例 未检测出SUT中存在缺陷,测试结果能够反应出当前测试用例中所有参数取值不会对SUT造成缺陷,则该测试用例覆盖的所有参数取值的失效率变为0,其他参数取值的失效率保持不变。则ti时刻,各参数取值失效率可用以下公式:
[0063]
[0064] 步骤7:时刻i增加。更新测试用例序列S。将测试用例 插入到测试用例序列集的尾部,公式表示如下:
[0065]
[0066] 更新测试用例集T。将测试用例 从组合测试用例集 中剔除,公式表示如下:
[0067]
[0068] 更新测试用例序列的未覆盖组合集UncovCombSet(λ,R)(S),公式表示如下:
[0069]
[0070] 步骤8:重复步骤2~7,直到已执行的测试用例个数达到测试目标为止。
[0071] 步骤9:输出测试用例序列