Page 247 - 《软件学报》2024年第6期
P. 247

向毅 等: 基于多样性     SAT  求解器和新颖性搜索的软件产品线测试                                          2823


                 器所处理对象的标准输入形式. 为了提高所生成测试用例的多样性, 研究人员针对                          SAT  求解器本身的改进或者其
                 灵活运用开展了持续性研究. 例如, Henard         等人  [20,35] 提出了  SAT4J [36] 求解器内部参数的随机化策略    (本文称这种
                 改造后的求解器为       rSAT4J); Luo  等人  [34] 提出了一种面向软件产品线测试的随机局部搜索             SAT  求解器, 即  LS-
                 Sampling; Xiang  等人  [33] 建议同时运用两类求解器, 即冲突驱动的子句学习         (conflict-driven clause learning, CDCL)
                 求解器和随机局部搜索        (stochastic local search, SLS) 求解器. 文献  [33] 所采用的求解器为  rSAT4J (属于  CDCL  求
                 解器) 和  ProbSAT [37]  (属于  SLS  求解器), 但仅前者是一种多样化的    SAT  求解器. 若将后者也进行多样化处理, 是
                 否有助于进一步改善测试效果? 这是一个有待探索的问题. 针对后者, 既往工作                       [20,34] 并未予以足够重视. 事实上, 若
                 采用多样化    SAT  求解器生成的测试用例无法在最终测试集得以保留, 那么多样性                    SAT  求解器的作用也将大打折
                 扣. 文献  [33] 首次采用新颖性搜索      (novelty search, NS) 算法  [38] 中的归档策略维护测试集的多样性, 取得了较好的
                 效果. 但是, 该归档策略仅从全局的角度出发考虑测试集的多样性, 而忽略了新测试用例所在区域的局部信息                                  (如
                 新测试用例与其最近邻的距离等). 同时提升测试集的全局和局部多样性对测试效果带来怎样的影响? 这也是一个
                 有待回答的问题.
                    在既往工作     [33] 的基础上, 本文提出了一种基于多样性         SAT  求解器和新颖性搜索的软件产品线测试算法              (命名
                                通过最大化测试用例的多样性来模拟
                 为  dSATNS), 它同时采用了两种不同类型的多样化            SAT  求解器产生测试用例, 并且运用         NS  算法的两种   (全局和
                 局部) 归档策略维护测试集的多样性. 为了提高              SLS  求解器的多样性, 本文提出了一种基于概率向量的通用策略
                 为该类求解器产生多样的候选解/种子             (详细介绍见第    4.2  节). 在  50  个真实软件产品线上的实验结果表明, 采用两
                 类多样性   SAT  求解器的确有助于提高软件产品线测试的覆盖率和缺陷检测率. 实验结果还发现, 仅采用全局和局
                 部归档策略分别适合测试集规模较大和较小的情形, 而同时采用两种策略则能获得折衷效果. 最后, 对比实验结果
                 揭示, 本文所提出的算法较主流算法具有显著优势: 无论测试集规模的大小, dSATNS                       总是排名第一. 特别地, 当测
                 试集规模较小时, dSATNS     的优势愈明显. 在测试资源        (时间、成本等) 有限的情况下, 测试人员往往希望通过运行
                 尽可能少的测试用例以发现尽可能多的缺陷, 而本文所提出的算法为生成这样的测试用例的集合提供了一种行之
                 有效的解决方案.
                    本文的主要贡献包括: 1) 提出了一种基于概率向量的通用策略为                    SLS  求解器生成多样化的种子. 该策略简单
                 易实现, 可在不改变现有       SLS  求解器内部搜索机理的情形下, 辅助求解器生成多样化的测试用例. 2) 根据                    NS  算法
                 的思想, 设计了一种局部归档策略维护测试集的多样性. 该策略与现有的全局归档策略                            [33] 形成互补效应. 3) 综合
                 运用两类多样性求解器和两种归档策略, 提出了一种面向软件产品线测试的                         dSATNS  算法, 其性能显著优于当前
                 主流算法.
                    本文第   2  节回顾基于相似性的软件产品线测试方法. 第              3  节介绍本文所需的基础知识, 包括特征模型和软件
                 产品线测试相关概念. 第       4  节详细介绍本文提出的软件产品线测试算法               dSATNS. 第  5  节通过消融和对比实验验
                 证各算法构件的有效性以及本文算法较其他主流算法的优越性, 并探讨关键参数对算法性能的影响. 第                                 6  节总结
                 全文.

                  2   基于相似性的软件产品线测试相关工作

                    Henard 等人  [20]                          t-组合测试. 具体地, 他们提出了一种基于相似性的适应
                 度函数并采用遗传算法        (genetic algorithm, GA) 进行优化. 这样做的目的是生成一组尽可能不相似           (多样) 的测试
                 用例, 从而潜在地覆盖更多的特征组合            (或软件缺陷). 此外, 为提高      SAT4J 求解器  [36] 所生成测试用例的多样性, 作
                 者建议随机化该求解器的内部参数, 即为变量赋值的策略                   (包括正文字优先、反文字优先和随机文字). 实验结果

                 表明, Henard  等人的方法可处理大规模和高交互强度的情形, 是              t-组合测试的一种可拓展的、灵活的替代方案. 测
                 试用例生成工具      PLEDGE [30] 实现了上述方法. 随后, Fischer 等人  [29] 的实验结果表明, Henard  等人  [20] 的方法能有效
                 地检测出软件产品线        Drupal [39] 的真实缺陷. 上述方法可取得与     CASA [14] 相当的  t-组合覆盖率. 这些研究结果充分
                 说明, 相似性指标是      t-组合覆盖率的一种恰当的替代.
   242   243   244   245   246   247   248   249   250   251   252