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

钱忠胜 等: 结合   SVM  与  XGBoost 的链式多路径覆盖测试用例生成                                      2797


                 等进化过程中, 引入路径层级深度较大值对应的测试数据, 作为可重用的用例.
                    3) 更新链式模型. 在使用模型过程中, 对优秀个体进一步筛选, 可获取测试数据所对应的精确路径, 将具有精
                 确路径的数据作为新样本, 更新路径预测模型              C-SVMXGBoost.
                    4) 实验对比分析. 从模型性能与测试用例生成效率两方面设计实验. 其中, 模型性能分析主要对比单模型和融
                 合模型的性能; 测试用例生成效率方面主要将本文方法与其他融合模型的测试方法, 以及已有经典方法的测试效
                 率进行对比.

                  2   相关工作

                    在测试用例生成的研究中, 有不少学者从多路径角度提高测试用例效率. Sun                        等人  [2] 利用测试用例间的路径
                 距离设定测试用例的优先级, 进一步提高测试效率, 但该方法计算路径距离时仅考查两个路径集中某一路径集的
                 单向影响, 并未考虑它们间的双向作用, 使得路径距离的计算不够准确. 廖伟志等人                        [3] 改进蚁群算法以求解多路径
                 测试数据生成问题, 但未结合单信息素与多信息素对测试用例生成的影响. Feng                       等人  [4] 将已求解的分支路径对应
                 的测试数据视为启发式信息设计一种覆盖多目标的测试数据生成策略, 其路径信息较为粗糙, 缺乏对相邻路径节
                                                      等人
                 点的权重分析. 范书平等人        [5] 根据测试用例覆盖分支的情况以及均衡度提取关键用例, 提高多路径测试效率, 该方
                 法综合衡量测试用例对完整路径的均衡度, 却忽略了某一关键分支节点对整体的影响. 潘峰等人                               [6] 为提高并行程
                 序的多路径测试数据生成效率, 提出多路径覆盖调度序列排序方法, 仅通过随机采样方式尝试覆盖目标路径, 但并
                 未使用启发式方法, 这对初始用例要求较高, 依赖性强.
                    从上述研究可发现, 为提高多路径用例生成效率, 一般可将辅助用例生成的相关理论运用到测试中, 同时保持
                 测试用例的丰富多样性, 以尽快生成所需测试数据. 为使生成的测试数据具有丰富性和多样性, 可借助启发式算法
                 完成. 而遗传算法利用先验知识进行遗传进化操作, 这丰富种群个体, 极大提升进化速度, 减少迭代次数.
                    我们通过关键字流图检测相似程序, 并将相似程序的优秀用例重用到遗传算法的进化生成中                                [7] , 提高被测程
                 序测试用例生成效率, 该方法仅对存在可重用测试用例的相似程序时有效, 反之则无效, 且研究的是单目标路径.
                 Di Nucci 等人  [13] 提出基于超体积的遗传算法, 以解决使用多个测试覆盖准则的测试用例优先级排序问题, 对于高
                 度冗余测试嵌套的软件系统, 该方法性能有所下降. 夏春艳等人                   [14] 提出基于否定选择遗传算法的路径覆盖测试集
                 生成的方法, 将否定选择的策略融入遗传算法中, 提高了路径覆盖率, 但未考虑否定选择后测试用例的优先级. 我
                 们提出一种依据关键点概率计算种群个体贡献度的多路径覆盖策略                        [15] , 并依此设计适应度函数, 指导个体迁移,
                 进化生成覆盖目标路径的测试数据, 忽略了关键边对个体贡献度的影响. 戚荣志等人                          [16] 通过建立弹性分布数据集,
                 划分子种群, 并将其分布在集群的节点中, 结合遗传算法的适应度值和进化操作完成测试, 但对于高维组合测试算
                 法的性能下降会明显.
                    可见, 遗传算法在测试用例生成方面具有较高的普适性, 在该算法上做相应的改进可优化测试用例, 有效地提
                 高测试效率. 此外, 机器学习方法是辅助测试数据生成的工具之一, 其具有优秀的分类与预测能力, 可改善传统软
                 件测试过程, 因此融入机器学习的软件测试方法, 在近些年受到越来越多学者的关注.
                    姚香娟等人     [8] 将神经网络模型运用到测试中, 减少传统方法上适应度的计算时间, 该方法仅解决单目标路径
                 的用例生成问题, 且测试效率还有待提高. Gong                [9] 提出一种基于代理模型辅助进化的路径覆盖测试数据生成
                 方法, 根据多模态特性将程序样本划分为若干簇, 分别训练各自代理模型, 在对个体进行评估时, 选取合适的代理
                 模型预测个体适应度值, 进而提高模型准确度以及测试效率, 这些代理模型对样本均衡的要求较高, 而在真实测试
                 中往往缺乏难覆盖路径的测试样本, 进而影响代理模型的选择. Skocelas 等人                   [17] 提出一种循环神经网络生成测试
                 用例的方法, 验证依赖于先前网络输入的顺序或时变模式的上下文单元功能.
                    我们提出一种支持向量机回归模型             (SVR) 的测试用例生成与重用方法         [10] , 通过  SVR  模型预测适应度值并重
                 用已有测试数据, 该方法解决单路径覆盖问题, 若求解多路径则需重复执行. 姜慧研等人                          [18] 将  SVM  与蚁群算法结
                 合构造软件缺陷预测模型, 但该方法在参数寻优过程中需要较长的时间. Pradhan                      等人  [19] 提出一种基于聚类的遗
                 传算法, 利用非支配精英选择策略减少在选择父解决方案时的随机性, 以支持多目标测试优化, 但未考虑主题对算
   216   217   218   219   220   221   222   223   224   225   226