算法

输入:参数集L,参数取值集Li,风险元素约束集R,待覆盖组合集O,覆盖强度t

输出:t阶(混合)覆盖矩阵MCA

01 # 初始化已经生成的测试用例集合

02 MCA_i = []

03 # 初始化所有参数组合的集合

04 O = generate_all_parameter_combinations()

05 # 循环直到每个参数至少有一个取值在测试用例集合中

06 while 存在MCA_i中没有值的参数:

07 if存在未覆盖的组合,且不包含在R中:

08 将一个未覆盖的组合o添加至MCA_i

09 将该未覆盖组合涵盖的所有组合标记为已覆盖

10 else:

11 # 找到O中的Q子集,涵盖至少一个在其余j个参数值中没有表示的参数

12 uncovered_parameters = get_uncovered_parameters(O, MCA_i)

13 Q=select_parameter_interactions_covering_uncovered_parameters(O,uncovered_parameter

s)

14 查看Q中与其余j个参数值中已经选择的值一致的组合

15 if 存在未覆盖的组合:

16 #选择涵盖其余j个参数值中最多未覆盖组合的组合q,且结果部分测试用例MCA_i

中不包含R中的组合

17 slot = select_slot_with_most_uncovered_combinations(valid_uncovered_combinations)

18 combination = slot.get_combination()

19 else:

20 # 选择一个已覆盖的重要度顺序最高的组合且不包含R中的组合,将其添加到其余j个参数值中

21 covered_combinations = get_covered_combinations(Q, last_test_case)

22 valid_covered_combinations=get_valid_covered_combinations(covered_combinations)

23 combination select_highest_weight_covered_combination(valid_covered_combinations)

24 # 将选择的组合的值添加到MCA_i

25 MCA_i.append(combination)

26 # 将O中选择的组合标记为已覆盖

27 mark_slot_as_covered(O, combination)

28 endwhile