Page 132 - 《软件学报》2025年第5期
P. 132

2032                                                       软件学报  2025  年第  36  卷第  5  期


                 矩阵  (行  1  和行  2); 然后, 形成面向每条目标子路径的样本集, 并用于训练相应的代理模型                  (行  3–6); 最后, 合并和
                 返回所有的代理模型       (行  7  和行  8).

                 算法  2.   Surr_Model_Set_Train(P ) .
                                         ∗
                                         np
                 输入:   P ∗   ;
                       np
                 输出:   SurrModelSet .
                 1. 采样具有代表性的测试输入集合          InputSet
                 2. 基于  InputSet 计算覆盖程度矩阵   CovMat
                       p = p → p   DO
                                ∗
                        ∗
                            ∗
                 3. FOR    j  1  N
                             ∗
                 4.  形成对应   p  的训练样本集    SampleSet j
                             j
                                          ∗
                 5.  基于  SampleSet j  , 训练对应   p  的代理模型  SurrModel j
                                          j
                 6. END FOR
                 7. 合并  SurrModel j  至  SurrModelSet
                 8. RETURN   SurrModelSet

                 2.3   候选测试用例形成
                                                        ∗                               ∗   内每条目标子路径
                    已知的是, 本文的目标是生成覆盖目标路径               P (np = 1,2,...,N)  的测试用例, 而面向  P np
                                                        np
                  ∗
                                                          ∗
                                                                              ∗
                 p ( j = 1,2,...,N) 的优化任务   task j  是为了生成覆盖   p  的测试用例. 显然, 覆盖  p  的测试用例并无法保证能够覆盖
                  j                                       j                   j
                 P ∗   . 鉴于此, 本节需要从面向   P ∗   内  p  的测试用例生成优化任务中选择最优进化个体, 并形成候选测试用例集, 用
                                              ∗
                  np                     np   j
                 于覆盖目标路径      P ∗   .
                               np
                                        task j  中选择最优进化个体之前, 需要基于第
                    在测试用例生成优化任务                                           2.2 节中训练好的代理模型来估计          task j
                                                     SurrModelSet(EvoPop j ) , 其函数实施细节如算法  3  所示: 一方面, 在
                 内种群中每一进化个体的适应值, 即运行函数
                                                    j
                 task j  中调用代理模型集合    SurrModelSet  内第   个代理模型  SurrModel j  (行  1); 另一方面, 以  task j  内种群   EvoPop j
                 中每一进化个体为输入, 运行代理模型            SurrModel j  , 估计出所有进化个体的适应值集合, 记为         EstFit j  (行  2–6). 注
                                      l                     l    EvoPop j  中第   个进化个体, PopSize 表示种群内进
                 意, 这里定义   EvoPop j = {X |l = 1,2,...,PopSize} , 其中,   X  表示   l
                                      j                     j
                                                                              l                     ¯ F j (X )
                                                                                                       l
                 化个体数. 相应地, 所有进化个体的适应值集合             EstFit j  也表示为   EstFit j = { ¯ F j (X )|l = 1,2,...,PopSize} , 其中,    j
                                                                              j
                      l
                 表示  X  的估计适应值.
                      j
                 算法  3.   SurrModelSet(EvoPop j ) .
                                           l
                 输入:  SurrModelSet EvoPop j = {X |l = 1,2,...,PopSize} ;
                                ,
                                           j
                 输出:   EstFit j  .
                                     j
                 1. 调用  SurrModelSet 内第   个代理模型  SurrModel j
                            1
                        l
                 2. FOR   X = X → X  PopSize   DO
                        j   j   j
                                                         l
                                             l        ¯ F j (X )
                 3.  基于  SurrModel j  估计进化个体   X  的适应值   j
                                             j
                        l              l
                 4.  将   X  的估计适应值   ¯ F j (X ) 保存至   EstFit j
                        j
                                       j
                 5. END FOR
                 6. RETURN    EstFit j
                                                                  Best_Ind_Select(EstFit j ) , 其函数实施步骤如算法  4:
                    得到  EstFit j  后, 这里给出最优进化个体选择策略, 对应函数
                 一方面, 基于种群     EvoPop j  中每一进化个体对应的估计适应值, 提取最大估计适应值对应的索引号                    (行  1–6); 另一
                                                                                   j
                                                                         BestInd j = {x |i = 1,2,..., M} (行  7 和行  8).
                 方面, 基于提取的索引号, 选择相应的进化个体, 以作为最优进化个体, 记为                            i
   127   128   129   130   131   132   133   134   135   136   137