算法 |
输入:参数集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 |