Page 239 - 《软件学报》2024年第6期
P. 239
钱忠胜 等: 结合 SVM 与 XGBoost 的链式多路径覆盖测试用例生成 2815
表 5 本文模型与其他链式模型在不同程序上的各指标对比
待测 目标 评价指标 对比链式模型 改进程度 (%)
程序 路径数 C-SVMRF C-SVMBP C-XGBRF C-XGBBP C-RFBP C-SVMXGBoost 最小 最大
覆盖率 (%) 100 100 100 100 100 100 0 0
进化代数总量 904 897 922 895 937 875 2.23 6.62
PG1 2
平均进化代数 6.81 6.63 6.97 6.85 8.19 6.23 6.03 23.91
执行时间 (s) 58.43 58.27 61.24 60.86 65.22 57.27 1.70 12.19
覆盖率 (%) 100 100 100 100 100 100 0 0
进化代数总量 4 990 5 023 5 231 5 206 8 442 5 051 −1.22 40.17
PG3 2
平均进化代数 34.27 35.32 37.10 36.78 65.31 35.63 −4.00 45.44
执行时间 (s) 62.89 63.02 65.11 65.07 74.42 64.40 −2.40 13.46
覆盖率 (%) 92 90 95 95 79 100 5 21
进化代数总量 132 714 148 017 121 736 117 969 249 326 89 534 24.10 64.09
PG6 57
平均进化代数 124.63 129.12 94.51 93.13 253.29 65.10 30.10 74.30
执行时间 (s) 257.00 270.33 261.54 260.19 284.02 163.72 36.30 42.36
覆盖率 (%) 77 75 86 83 68 95 9 27
4.51%, 最大改进程度可达
进化代数总量 539 480 557 125 329 419 371 842 591 075 195 410 40.68 66.94
PG8 123
平均进化代数 309.74 312.54 190.53 225.18 453.20 98.69 48.20 78.22
执行时间 (s) 862.15 872.32 845.95 850.74 924.82 807.83 4.51 13.65
覆盖率 (%) 85 82 79 75 69 97 12 28
进化代数总量 91 472 115 745 136 172 145 975 227 101 50 230 45.09 77.88
PG10 20
平均进化代数 182.65 231.09 268.34 291.80 388.22 70.33 61.49 81.88
执行时间 (s) 134.08 141.62 137.48 145.51 160.26 117.11 12.66 26.93
注: 本文链式模型C-SVMXGBoost (用灰底表示)与其他链式模型在各评价指标上的最小改进程度用粗体表示, 而最大改进程度
用粗体加下划线表示, 并在对比链式模型的对应数据上用同样方式进行标注
对于简单程序 PG1 和 PG3, 这 6 种链式模型在覆盖率方面均达到 100%, 但在进化代数总量、平均进化代数
和执行时间方面, 链式模型 C-RFBP 相比于其他模型结果较差. 与个别模型相比, 本文模型 C-SVMXGBoost 优势
不明显. 例如, 在程序 PG1 上, 本文模型略优于 C-SVMBP 与 C-XGBBP; 在程序 PG3 上, 本文模型仅次于 C-SVMRF
模型, 是由于该程序输入数据维度较高, 在 C-SVMRF 链式模型中仅选择 SVM 子模型即可达到较高精度, 但 SVM
与 RF 在求解因存在难覆盖节点而导致样本不均衡问题上均不及 XGBoost, 故在我们的链式模型 C-SVMXGBoost
中包含了 XGBoost 子模型, 这需花费一定的初始融合时间, 而且由于 PG3 程序本身较为简单, 难覆盖节点较少,
XGBoost 在该程序上的作用不明显, 从而导致本文模型在 PG3 程序上比 C-SVMRF 模型稍差.
对于稍复杂程序 PG6, PG8 和 PG10, 链式模型 C-SVMXGBoost 在 4 种评价指标下均优于其他几种模型, 且优
势明显; 在程序 PG6 和 PG8 中, 链式模型 C-XGBRF 和 C-XGBBP 的结果优于 C-SVMRF, C-SVMBP 和 C-RFBP;
在程序 PG10 中, 链式模型 C-SVMRF 和 C-SVMBP 的结果优于 C-XGBRF, C-XGBBP 和 C-RFBP. 对比以上几种
模型在这些程序上的改进程度, C-SVMXGBoost 的覆盖率最小可提升 5%, 最大可提升 28%; 进化代数总量上, 最
小改进程度为 24.10%, 最大改进程度可达 77.88%; 平均进化代数上, 最小改进程度为 30.10%, 最大改进程度可达
81.88%; 执行时间上, 最小改进程度为 42.36%. 得以改进的主要原因是, 无论是针对输
入数据类型为数值型程序 (如 PG6), 还是针对非数值型程序 (如 PG8), 在链式融合过程中, 将 SVM 和 XGBoost 分
别作为初始预训练模型, 使得链式模型精度较高, 为模型融合节省时间; 而分别将 SVM, XGBoost 与 RF, BP 两两
融合的模型不能很好地应对上述程序特点, 对于涉及高维数据处理以及样本不均衡等问题的测试程序, 不能准确
地将其路径节点状态分类. 因此, 相比于将 SVM 与 XGBoost 融合的 C-SVMXGBoost 模型, 其他链式模型的精度
有所下降, 在遗传变异过程中, 使得路径预测的准确率降低. 此外, 由于融合 RF 和 BP 的链式模型精度较低, 导致
需进行插桩验证的次数增多, 同时排除了较多的优秀个体, 从而使得进化代数总量、平均进化代数、执行时间也
远多于本文的链式模型 C-SVMXGBoost. 所以, 为适应不同测试程序的特征以及需求, 选择合适的子模型进行链
式融合对提升测试效率十分关键.