Page 133 - 《软件学报》2025年第5期
P. 133
孙百才 等: 代理辅助多任务进化优化引导的 MPI 程序路径覆盖测试用例生成 2033
算法 4. Best_Ind_Select(EstFit j ) .
输入: EstFit j ;
输出: BestInd j .
1. 设置 MaxEstFit = 0 和 EstIndex = Null
1
l
2. FOR ¯ F j (X ) = ¯ F j (X ) → ¯ F j (X PopSize ) DO
j j j
l
3. IF MaxEstFit < ¯ F j (X ) THEN
j
l EstIndex = l
4. MaxEstFit = ¯ F j (X ) , 且
j
5. END IF
6. END FOR
7. 基于 EstIndex , 选择最优进化个体 BestInd j
8. RETURN BestInd j
通过上述操作, 这里能够得到每一优化任务 task j 中当前种群内的最优进化个体 BestInd j . 虽然, BestInd j 在
∗
覆盖 P ∗ 内目标子路径 p 时具有极大优势, 但是, 从覆盖整条 MPI 程序目标路径 P ∗ 的角度来讲, BestInd j 并不一
np j np
定具备优势. 鉴于此, 这里将基于每一优化任务 task j 中的 BestInd j , 形成一个候选测试用例集, 记为 CTSet , 用于覆
P ∗ .
盖 np
算法 5. CovFlag_CTSet_Etc(BestInd j ) .
BestInd j ;
输入:
,
输出: CovFlag TC CTSet RealFit j .
,
,
1. FOR task j = task 1 → task N DO
2. 添加 BestInd j 至 CTSet
3. END FOR
4. FOR task j = task 1 → task N DO
5. FOR i = 1 → M DO
j
6. 添加 BestInd j 内变量值 x 至 CTSet i
i
7. END FOR
8. END FOR
9. 基于每一 CTSet i , 形成候选测试用例集 CTSet
1
r
10. FOR X = X → X 2N DO
X 执行被测 r
r
11. 基于 MPI 程序, 并计算 F j (X ) , 用于组成 RealFit j
( ) ∑
r
12. IF 1 / N N j=1 F j (X ) == 1 THEN
r ∗
13. X 即为覆盖 P np 的测试用例 TC , 且 CovFlag = 1
14. END IF
15. END FOR
,
,
16. RETURN CovFlag TC CTSet RealFit j
,
CTSet 中; 然后, 运用拉
为此, 首先将每一优化任务 task j ( j = 1,2,...,N) 中的 BestInd j 添加至候选测试用例集
j j
丁超立方采样原理, 将每一 BestInd j ( j = 1,2,...,N) 内变量值 x 组合为一个集合, 记为 CTSet i = {x | j = 1,2,...,N} ;
i i
最后, 依次在每一 CTSet i (i = 1,2,..., M) 中, 不放回随机抽取一个变量值, 用于形成一个候选测试用例, 并添加至
r r
CTSet , 直至 CTSet i 为空. 至此, 能够形成含有 2N 个候选测试用例的集合, 即 CTSet = {X |r = 1,2,...,2N} , 其中, X