Page 202 - 《软件学报》2025年第7期
P. 202

张逍怡 等: 面向智能体路径规划算法的动态随机测试方法                                                     3123


                 可以有很多种, 这里我们选择经典的二叉树结构.

                 3.2.2    DRT-PP  设置
                    对于  DRT-PP  方法, 我们将任务空间      M  的分割份数设为     20, 即令  D 1 = D 2 = D = 20. 如图  5  所示, 当对任务空
                 间  M  做足够细致的划分时, 我们就能够涵盖多样的威胁分布, 如当                  D = 20 时可能的威胁分布情况       (即测试用例)
                 就有  2 400   种. 在测试开始时, 我们将初始测试剖面的特征矩阵设为            Q 0 = (0.5) 20×20 , 即每个子区域包含威胁的概率为
                 0.5, 即纯随机测试   (见公式   (17)). 此外, DRT-PP  的可调参数就是每次测试用例执行过后测试剖面的更新幅度                  ε, 根
                 据已有   DRT  相关工作   [18] , 我们分别考察  0.05、0.1、0.15、0.2  这  4  个参数, 即测试剖面的融合率为      5%、10%、
                 15%、20%. 这里, 我们用   DRT-05、DRT-10、DRT-15、DRT-20   分别代表这     4  个参数下的  DRT-PP  方法.

                 3.2.3    基线方法设置
                    本文采用随机测试       RT  作为  DRT-PP  的对比方法. 具体来说, 我们将测试剖面始终设置为             Q 0 = (0.5) 20×20 , 这样
                 就能对离散化的输入空间进行纯随机采样. 目前, 现有工作并没有针对路径规划算法提出整体性的测试方法, 而为
                 了进一步凸显     DRT-PP  的优势, 我们基于自适应随机测试思想, 设计一种面向路径规划算法的自适应随机测试方
                 法  ART, 并将其同样作为测试策略. 具体来说, 每当生成下一个测试用例                  t N T +1  时, 我们先通过随机方法生成  N  Can  个
                 候选测试用例, 并计算各测试用例到已生成测试用例集的距离, 最后选择距离已生成测试用例集最近的测试用例
                                                                            c
                                               c
                 作为  t N T +1 . 这里, 在计算候选测试用例  t  和已经生成测试用例集      T  的距离  dis(t ,T) 时, 我们分别计算  t 与 c  T  包含的
                            t ∈ T  的距离, 并将距  c                         c                             t 2  的
                 所有测试用例                     t 最近的测试用例的距离作为          dis(t ,T) 的值. 而在计算两个测试用例     t 1  和
                 距离时, 我们先根据公式       (19) 计算它们的威胁分布矩阵        A  和  A , 并将这两个矩阵差的     1-范数  (见公式   (18)) 作为
                                                                  t 2
                                                             t 1
                 t 1  和  t 2  的距离. 可以看出, ART  同样旨在提升生成测试用例的多样性, 但其没有考虑场景威胁分布的连续性以及测
                 试过程中对于失效测试用例的寻优性. 对于              ART  算法, 候选集的数量是可以调整的参数, 本文采用较为通用的配
                 置, 即候选测试用例集包含的测试用例数量为              3 (记为  ART3), 同时我们也考察了候选测试用例集的数量为              5  时的
                 情况  (记为  ART5).

                 3.2.4    测试过程设置
                    为了计算失效度      S (t), 我们在实验过程中将每个测试用例          t 执行  10  次, 即令  N repeat  = 10, 并保存每次执行后的
                        PTH = {pth , pth ,..., pth }. 进一步地, 对于每一种测试策略   (包括  RT、ART、DRT-PP) 的每一次测试
                                  t
                            t
                                     t
                                            t
                 输出路径             1  2      10
                 过程, 我们生成并执行      1 000 个测试用例   t 1 ,t 2 ,...,t 1000 , 并计算它们的失效度  S (t 1 ),S (t 2 ),...,S (t 1000 ), 即令  N  limit  = 1000.
                 无论是   RT  还是  DRT-PP  都具有随机性, 此外, 在执行     DRT-PP  时, 测试剖面的演变过程还受初始测试剖面下纯随
                 机测试生成的测试用例        t 1  的影响, 因此, 对于每一个测试策略, 我们都重复执行           10  次, 并观测整体的测试效果. 总
                 的来说, 包括   RT、ART (包含   ART3、ART5) 和  DRT-PP (包含  DRT-05、DRT-10、DRT-15、DRT-20) 在内, 共有
                 7  种测试配置, 每个配置下, 我们进行        10  次测试流程, 每次测试流程生成        1 000  个测试用例, 并且每个测试用例要
                 被  RRT  算法执行  10  次, 因此, 路径规划算法总共被执行的次数为           700 000  次. 据统计, 每次  RRT  算法的执行时间
                 约为  2 s, 执行一个测试用例的时间       (即重复   10  次) 约为  20 s, 因此, 单线程运行实验的总时间约为       16.2  天  (实际我
                 们采用并行方式运行实验). 这里需指出, DRT-PP           方法在测试剖面更新时的计算时间通常小于               5 ms, 因此, DRT-PP
                 的计算时间远远小于测试用例的执行时间               (见第  2.4  节的讨论), 因此本节不对    DRT-PP  的效率做进一步讨论.

                 3.2.5    评价指标设置
                    本文通过计算失效度        S (t) 来评价测试用例质量, 即我们希望生成失效度较大的测试用例. 因此, 一个测试流程
                 完成时, 我们会得到      1 000  个测试用例的   S (t) 值, 而我们通过计算失效度    S (t) 的平均值来评价生成测试用例集的整
                 体质量. 假设某测试策略生成的测试用例集为              T = {t 1 ,t 2 ,...,t 1000 }, 则  S (t) 平均值可由公式  (23) 计算.

                                                            1000
                                                            ∑
                                                              S (t i )
                                                       S  avg  =  i=1                                (23)
                                                             1000
                    此外, 对于每次测试, 我们同样考察          S (t) 的最大值, 因为失效度    S (t) 最大的测试用例最有可能暴露被测算法的
                 失效风险. 同样对于测试用例集         T,  S (t) 的最大值可由公式   (24) 计算.
   197   198   199   200   201   202   203   204   205   206   207