Page 173 - 《软件学报》2026年第5期
P. 173
2052 软件学报 2026 年第 37 卷第 5 期
<t 2 , t 3 , t 1 , t 8 , t 7 , t 5 , t 4 , t 6 >, 即为一轮迭代产生的优先级排序序列.
拼接完成后, 用 P tem 的测试用例进行故障检测, 根据故障检测结果可得到最佳优先级排序序列 P. 面向两阶
p
段分组的具体过程见算法 3.
算法 3. 面向两阶段分组的测试用例优先级排序过程.
输入: 关键用例集 K, 普通用例集 N, 主用例序列 P', 迭代阈值 M, 用例标记表 T cov ;
输出: 最佳优先级排序序列 P.
Begin
1. 获得关键用例集 K 和普通用例集 N // 见算法 1
2. m = 0;
3. while T cov .include(0)
4. if m ≤ M then
5. P' = TP_Additional(K); // 对关键用例集 K 的部分用例排序, 见算法 2
6. m = m + 1;
7. Update T cov ; // 将已排序的用例在用例标记表 T co 中标记为“已标记”
v
8. else
9. for i = 1 to |T cov |
10. if T cov [i] = 0 then
11. R k ← R k ∪K[i]; // 关键用例中剩余未排用例加入待排序列 R k
12. end if
13. end for
14. end if
15. R = R k ∪N; // 合并关键用例中剩余未排用例集 R k 与普通用例集 N
16. P'' = Total(R); // 对 R 中所有用例使用 Total 策略排序
17. P temp = P'.append(P''); // 将 P''中的所有用例拼接在 P'后
18. Result ← Fault_test(P temp ); // 用优先级序列 P tem 对故障进行检测
p
19. end while
20. P ← Best_P(Result); // 根据故障检测结果 Result 输出最佳优先级排序序列 P
21. Output P;
End
在算法 3 中, 第 1 行根据基于邻接表的粗粒度用例分组算法获得关键用例集 K 和普通用例集 N. 第 2 行迭代
次数初始化为 0, 第 3–19 行对测试用例进行优先级排序. 其中, 第 3–7 行根据迭代阈值 M 对部分关键用例 K 使用
基于 TP_Additional 策略排序得到主序列 P', 并将已排序用例在用例标记表 T co 标记为“已标记”. 第 8–14 行将关
v
键用例中剩余未排用例加入待排序列 R k . 第 15 行合并关键用例中剩余未排用例 R k 与普通用例集 N. 第 16 行对合
并后的用例使用 Total 策略排序得到次序列 P''. 第 17 行将次序列 P''中的所有用例拼接在主序列 P'后. 第 18 行用
优先级序列 P tem 对故障进行检测, 用 Result 记录每轮检测结果. 第 20 行根据故障检测结果得到最佳优先级排序
p
序列 P, 并在第 21 行输出.
3 实验设计与分析
3.1 问题提出
为验证 TPG-TCP 方法的有效性与高效性, 本节通过多种综合实验进行验证与对比分析, 主要回答以下 3 个方

