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
   128   129   130   131   132   133   134   135   136   137   138