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 没有解的无效测试用例

