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 时, 若样本数量继
续增加, 其精度值仍有可提升的空间. 但是, 从每个子模型在不同程序上分类精度的变化趋势可看出, 随着样本数
量的增加, 它们值的变化也趋于缓慢, 部分子模型的精度还呈现下降趋势.