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

3120                                                       软件学报  2025  年第  36  卷第  7  期


                    因此, 在实际测试过程中我们有如下希望.
                    (1) 构建某种测试剖面, 并将其作为测试策略来选取测试用例, 以生成符合特定概率分布的测试用例, 并且相
                 似的测试用例被选中的概率也应该相似, 这样可以防止生成一些意料之外的无效场景.
                    (2) 对于同一测试用例      t, 相似的测试剖面生成      t 的概率也应该相似, 这样方便我们设计测试剖面更新策略, 使
                 测试剖面能够更趋向于生成          t 或避免生成   t.
                    基于此, 本节通过离散化思想提出一种基于为威胁区域离散化的测试剖面                          (threat area discretization based
                 profile, TAD  剖面).
                    假设智能体的任务空间         M       X ×Y  的矩形区域, 将  M  离散化为若干格子样式的子区域           (如图  5  所示):
                                         为一个
                                                            ∪
                                                    M =            M i j                             (16)
                                                        i=1,2,...,D 1 ; j=1,2,...,D 2
                 其中, D 1 、D 2 分别为任务空间横向与纵向划分的份数. 每个子区域               M i j  就可以看成是长为   X/|D 1 |, 宽为  Y/|D 2 | , 中
                     (    (   )    (    ))
                      X      1  Y      1
                 心为      · i−  ,   · j−   矩形. 为了简洁, 本文只考虑正方形任务空间, 并且横纵划分的份数相等, 因为任
                      |D 1 |  2  |D 2 |  2
                                                                                          D 1 = D 2 = D.
                 何矩形任务空间都可以通过在正方形场景中填充威胁的方式得到, 因此在后面的论述中我们令


                           200
                           180

                           160

                           140

                           120

                           100

                            80

                            60

                            40

                            20


                             0
                              0     20    40    60     80   100    120   140   160    180   200
                                                    图 5 TAD  剖面矩阵

                                                   M i j  包含威胁的概率来设计测试剖面. 首先, 我们规定, 每个子区域包
                    在此基础上, 我们通过指定每个子区域
                 含威胁的情况是二值的, 即子区域           M ij  不是被某个威胁填满     (即  M i j ∈ Obs), 就等价于不包含威胁  (即  ∀obs ∈ Obs,
                 obs∩ M i j = ∅). 定义  Q = (q ij ) D×D  为任务空间  M  的威胁概率矩阵, 其中  q i j  表示子区域  M i j  中包含威胁的概率, 即
                 q i j = P(M i j ∈ Obs)(如图  5  中每个格子内部的数字所示). 借助威胁概率矩阵     Q, 我们就可以按照概率生成每个子区
                   M i j  的威胁, 进而生成整个测试用例. 因此, 对于每个                               P , 使得在离散化假设下的,
                                                                                    Q
                 域                                          Q, 都可以确定一个测试剖面
                 基于该剖面生成任何威胁分布           Obs 的概率都可以由公式       (17) 计算.
   194   195   196   197   198   199   200   201   202   203   204