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

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



                                                       S  max  = maxS (t)                            (24)
                                                             t∈T
                    此外, 为了回答     RQ2, 我们对不同测试方法生成测试用例的多样性进行评价. 由公式                   (19) 可知, 一个测试用例
                            t
                 t 可以用矩阵   A = (a ij ) 20×20   表示, 其中, 每个   a i j  表示该测试用例中子区域  M i j  是否包含威胁. 基于此, 我们通过  1-范
                 数  (即两个测试用例间不同元素的数量) 来度量两个测试用例之间的差异, 即两个测试用例差异可由公式                                  (25)
                 计算.


                                                             
  t 1  t 2
                                                     Dis(t 1 ,t 2 ) = 
A − A 
                       (25)
                    对于整个测试用例集        T  的多样性, 我们先考虑那些       S (t) 不为  0  的测试用例, 因为  S (t) = 0 意味着该测试用例没
                 有可行解, 是无效测试用例. 因此定义测试用例集               T  ,0  = {t ∈ T|S (t) > 0} 为  T  中那些  S (t) 不为  0  的测试用例所组成
                 的子集, 即:

                                                     T  ,0  = {t ∈ T|S (t) > 0}                      (26)
                 则测试用例集     T  的多样性程度    Div 被定义为有效测试用例间差异和的平均值, 即:

                                                          ∑
                                                               Dis(t i ,t j )
                                                        i,j, t i ,t j ∈T ,0
                                                    Div =                                            (27)
                                                           ,0
                                                                ,0
                                                         (|T |)·(|T |−1)
                    由于无效测试用例不存在可行解, 因此即使无效测试用例与其他测试用例间存在差异, 也不能为被测算法的
                 评估提供帮助, 因此我们将生成无效测试用例所浪费的测试资源考虑进去后, 得到整体测试用例集的多样性程度
                   all
                 Div , 其计算公式如下:

                                                          ∑
                                                               Dis(t i ,t j )
                                                        i,j, t i ,t j ∈T ,0
                                                   Div =             .
                                                          (|T|)·(|T|−1)
                    最后由于所有的测试方法都会运行             10  次, 我们还会通过    t 检验来观察不同测试方法之间的有效性差异是否
                 显著. 需指出, 在软件测试领域, 通常通过需求的违反程度、测试用例多样性等指标来评价生成测试用例集的质
                 量. 本文基于路径规划算法这一问题领域设计了失效度及多样性指标, 其本质是软件测试领域的评价指标在路径
                 规划算法这一具体问题上的体现. 例如, 在路径规划算法中, 路径长度需求是基本的性能需求, 而公式                             (23) 和公式
                 (24) 通过计算同一个测试用例生成路径长度的差异, 反映了测试用例的输出与最优路径的长度的距离下限, 进而
                 反映了需求违反程度, 类似评价指标也在现有工作中被使用                   [13,19,52] . 在软件测试领域, 测试多样性通常可以通过量
                 化同一测试用例集中不同测试用例间的差异来计算                  [53] , 而公式  (25) 计算了不同测试用例在输入空间的差异性, 进
                 而得到多样性度量, 现有工作也使用了类似评价指标                [48] .

                 3.3   实验结果与分析
                    本节展示    DRT-PP、ART  和  RT  的对比实验结果, 分析其有效性及相关因素的影响分析, 并依次回答第                    3.1 节
                 中提出的   3  个研究问题.

                 3.3.1    有效性分析
                    表  1  展示了不同测试方法在测试         RRT  路径规划算法时的有效性. 表格第          1  列为测试方法: RT    为随机测试;
                 ART  为自适应随机测试, 其中, ART3 和      ART5 分别表示候选测试集中包含测试用例数量为               3 和  5 两种配置; DRT-
                 XX  为本文提出的    DRT-PP  方法, 其中, DRT-05、DRT-10、DRT-15、DRT-20 分别表示测试剖面更新幅度为            0.05、
                 0.1、0.15、0.20. 表格每一列代表不同的评价指标, 其中,          S  avg  表示测试过程中的平均失效度,     S  max  表示得到的最大
                 失效度, “>40”表示测试过程中失效度大于           40  的测试用例个数, “=0”表示测试过程中失效度为           0  的个数.
                    从表  1  可以看出, 在所有配置参数下, DRT-PP       方法的各种评价指标均优于           RT. 具体来说, DRT-PP  生成测试
                 用例的平均失效度为       16.4, 约为  RT (平均失效度为   6.5) 的  2.5  倍. 这说明, 整体上与  RT  相比, DRT-PP  能够生成失
                 效度较高的测试用例. 在软件测试环节, 测试人员通常会将最能够暴露失效风险的测试用例选出来优先进行检查
                 和分析, 因此我们分析整个测试过程中得到的最大失效度                  S  max . 从表中可以看出, 大多数   DRT-PP  实例都能够得到
   198   199   200   201   202   203   204   205   206   207   208