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

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



                                                               T
                                                     P N T +1 = φ(T,L ,P N T )                       (15)
                    具体来说, 根据     DRT  的基本思想, 若当前测试用例         t 的输出结果能够逼近测试目标, 那么新测试剖面的调
                 整方向就应趋向于更容易生成当前测试用例                t, 即做正向调整; 相反, 若当前测试用例         t 偏离了测试目标, 则测试剖
                 面的调整方向就应趋向于避免生成当前测试用例                  t, 即做负向调整. 现假设当前生成的测试用例为              t N T , 执行该测
                                                   t
                 试用例   N repeat   次得到的输出路径集合为  PTH N T  , 通过公式  (12) 计算的失效度为  S (t N T ). 那么当  S (t N T ) 大于等于上一
                                                                               ∗
                                                                    ∗        S (t )  时, 我们进行正向调整, 记为
                 次执行的测试用例        S (t N T −1 ), 或是大于等于当前最优测试用例     t  的失效度
                        +   T                                                   P N T +1 = φ (T,L ,P N T ). 具体的测
                                                                                           T
                                                                                       −
                 P N T +1 = φ (T,L ,P N T ); 反之, 当   S (t N T ) 小于  S (t N T −1 ) 时, 则我们进行负向调整, 记为
                 试剖面更新策略将在第        2.4  节中进行详细介绍.
                    综上所述, DRT-PP   的执行流程如下.
                                                                                    T
                    Step 1. 初始化测试任务. 令已经生成的测试用例集              T = ∅, 生成测试用例数量      N = 0, 测试用例输出集合
                  T                                                     ∗                 S (t ) = −∞. 令初始
                                                                                            ∗
                 L = ∅; 设上一个测试用例失效度         S (t 0 ) = −∞, 当前最优的测试用例为   t = None, 其失效度为
                 测试剖面为纯随机, 即对任意场景          t, 有  P(t) = 1/|T |.
                                         T
                                              T
                    Step 2. 测试用例生成. 令   N = N +1, 根据公式    (14), 从当前测试剖面    P N T  生成当前测试用例   t N T . 并将  t N T  加
                 入测试用例集合      T, 即令  T = T ∪{t N T }.
                                                                                                   t
                    Step 3. 测试用例执行. 执行测试用例         t N T (假设重复执行  N repeat   次), 得到  t N T  的输出的路径集合  PTH N T  . 将
                                      T
                                          T
                                                 t
                              t
                     t
                 PTH N T   加入  PTH N T  , 即令  L = L ∪{PTH N T  }.
                    Step 4. 测试结果评估. 根据公式     (12) 计算生成路径的失效度       S (t N T ).
                                                             ∗   S (t N T ) > S (t N T −1 ), 则进行正向调整, 生成新的测试剖
                    Step 5. 测试剖面更新. 调整测试剖面, 若       S (t N T ) > S (t ) 或
                          +   T                                           −   T
                 面  P N T +1 = φ (T,L ,P N T ); 若  S (t N T ) > S (t N T −1 ), 则进行负向调整, 即  P N T +1 = φ (T,L ,P N T ).
                                                                                       ,
                                                                               ∗
                                                                       ∗     S (t ) = S (t N T ) t = t N T .
                                                                                        ∗
                    Step 6. 更新最优结果. 更新当前的最优测试用例, 即若           S (t N T ) > S (t ), 则令
                                                                                T
                    Step 7. 停止条件判定. 若已经执行的测试用例数量达到测试资源的上限, 即                   N = N limit , 则停止测试, 输出生成
                 的测试用例集     T、测试结果    L 、最优的测试用例  ; 反之, 若       N < N  limit , 则继续进行测试, 返回  Step 2.
                                        T
                                                                 T
                                                        ∗
                                                       t

                 2.3   测试剖面设计
                    面向智能体路径规划算法构建测试剖面就是要找到一个概率分布                       P 来表征每个场景被选为测试用例的概率.
                 作为最为基础的测试策略, 随机测试           RT  理论上应该可以在整个可能的威胁分布空间               O 中按均匀概率分布随机选
                 取某个威胁分布      Obs 作为测试用例, 此时每个场景被选中的概率为              1/|O|. 然而在路径规划测试中, 即使是纯随机
                 策略也不易实现, 因为我们必须在考虑每个场景中包含威胁的数量、形状、位置的同时, 满足等概率选取. 此外,
                 威胁分布空间     O 中包含大量的无效测试用例. 图          4  就描绘了一个典型的无效测试用例: 多个威胁把无人机起始点
                 完全包围, 导致可行路径不存在. 如果大量生成这样的测试用例, 不仅无法对算法性能做出有效的评估, 还会浪费
                 大量测试资源.

                                                               E
                                                              p (目标位置)
                                                 obs 1
                                                 (障碍物)
                                                      obs 2
                                                          obs 3
                                                               obs 4
                                                 p (起始位置)
                                                  B
                                                         M (任务空间)
                                                 图 4 没有解的无效测试用例
   193   194   195   196   197   198   199   200   201   202   203