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

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


                 方面设计对比实验, 由实验结果可知遗传参数设置是合理的. 另外, 根据文献                      [7], 遗传参数设置在合理的区间内对
                 方法效率的影响较小.
                    为便于本文方法有效性验证, 下面给出所需实验程序, 包括                  2  个基础程序和   11  个工业程序, 具体信息见表       1.

                                                    表 1    实验程序信息表

                      程序类型            程序编号               程序名称               代码行数             函数个数
                                        PG1              冒泡排序                  8                1
                      基础程序
                                        PG2              三角形判定                 15               1
                                        PG3              LuhnCheck             24               1
                                        PG4               计算器                 196               5
                                        PG5                Snake              163              11
                                        PG6               Gobang              470              23
                                        PG7               Account             1 670            36
                      工业程序              PG8            Nav Acc Data PP        3 990            155
                                        PG9                Sed                9 341            77
                 量, 综合考虑程序的规模以及测试数据的复杂度
                                        PG10               Flex              14 405            162
                                        PG11               GO                28 547           2 982
                                        PG12             DepSolver            8 988            227
                                        PG13              ClustalW           23 265            468

                    在表  1  中, PG1 (https://blog.csdn.net/s1156605343/article/details/106177863) 和  PG2 (https://www.jb51.net/
                 article/184534.htm) 为基础程序, PG3–PG13 为工业程序. 其中  LuhnCheck 为银行卡号校验算法      (https://blog.csdn.net/
                 weixin_33716557/article/details/91539545); PG4  为简易计算器算法  (https://www.cnblogs.com/quemengqio/
                 p/7799468.html); Snake 为贪吃蛇单人游戏; Gobang  为融入  AI 算法的五子棋赢棋算法; 程序        Account 为登录网站,
                 其功能包括用户登录、注册等; 程序            Nav Acc Data PP  为航海事故数据处理平台. 这几种程序         (PG5–PG8) 均来源
                 于  https://gitee.com/explore. 程序  Sed  和  Flex  均选用其中两个版本  (https://sir.csc.ncsu.edu/php); 程序  GO  是一款抽
                 象策略游戏    (https://blog.csdn.net/chongshangyunxiao321/article/details/50997404); 程序  DepSolver 是一种并行多媒
                 体三维静电解算器       (https://github.com/chef-boneyard/depsolver); 程序  ClustalW  是一种常用的多基因序列比对工具
                 (https://github.com/coldfunction/CUDA-clustalW). 在这几种程序中, 考虑到源代码编程语言的差异, 使用
                 PG1–PG10  验证本文方法的有效性, 并选取其中部分程序, 以及             PG11–PG13  用于与其他方法对比.
                  5.3   模型验证与测试分析
                    链式模型    C-SVMXGBoost 在测试数据生成过程中起到关键作用, 其分类精度与构建时间对提升测试效率至
                 关重要. 此外, 在遗传算法中合理地重用优秀测试用例可提升测试数据质量. 下面先验证本文方法的有效性, 包括
                 子模型精度、链式模型精度、模型构建的时间消耗、测试用例生成效率等方面.
                  5.3.1    子模型样本数量选择
                    SVM、XGBoost、RF (随机森林)、BP (BP      神经网络) 等模型因具有良好分类效果, 可将它们应用于测试方
                 面. 在样本相对均衡的前提下, 其数量对模型的精度具有一定的影响. 就如何合理地选取不同程序的训练样本数
                                                       (即样本的多样性), 分别选取较小规模程序             (以基础程序    PG1  为
                 例) 和较大规模程序      (以工业程序    PG8  为例), 对不同样本数量下的各子模型分类精度与时间进行分析. 考虑到样
                 本数量不宜过大, 故这里分别设置为           1 000, 2 000, 3 000, 4 000. 实验结果如图  4  所示.
                    由图  4(a) 和图  4(b) 可知, 在较小规模程序上, 4    种子模型   SVM, XGBoost, RF, BP  的分类精度峰值分别在样本
                 数量为   3 000, 4 000, 4 000, 4 000; 在较大规模程序上, 它们的分类精度峰值均在样本数量为         4 000  时, 若样本数量继
                 续增加, 其精度值仍有可提升的空间. 但是, 从每个子模型在不同程序上分类精度的变化趋势可看出, 随着样本数
                 量的增加, 它们值的变化也趋于缓慢, 部分子模型的精度还呈现下降趋势.
   226   227   228   229   230   231   232   233   234   235   236