Page 241 - 《软件学报》2024年第6期
P. 241
钱忠胜 等: 结合 SVM 与 XGBoost 的链式多路径覆盖测试用例生成 2817
C-SVMXGBoost 的预测结果更准确, 且对不同测试程序均有较强适应性.
从以上几种对比方法的结果可看出, 本文方法在规模较小的程序中优势不太明显, 而在规模较大的程序中优
势较为明显. 原因是, 虽然本文模型在不同程序上精度均较高, 但是较小规模程序的分支节点数相对较少, 通过链
式模型预测此类程序的覆盖路径, 在遗传过程中较优个体被排除的概率反而会增加, 这使得测试效率不太高; 而较
大规模的程序则相反, 较优个体被排除的概率会降低, 链式模型可提高覆盖率和减少进化代数.
表 7 6 种方法在不同程序上的多指标对比
对比方法
关键字 关键点
评价指标 待测 本文 待测 本文 待测 否定遗 本文 待测 神经网 本文 待测 SAEO 本文
程序 流图 方法 程序 概率 方法 程序 传法 [14] 方法 程序 络法 [8] 方法 程序 法 [9] 方法
[15]
[7]
法 法
目标路径数 1 21 30 12 125 12 30 20 119 20
覆盖率 (%) PG4 100 100 PG9 100 100 PG9 97 100 PG10 84 97 PG12 100 100
平均进化代数 6.14 43.63 6 292 28.13 200 28.13 - 70.33 - 69.04
△△△△
目标路径数 1 57 20 20 233 20 100 25 227 30
覆盖率 (%) PG6 100 100 PG10 100 97 PG10 86 97 PG11 85 100 PG13 85 94
平均进化代数 8.94 65.10 5 947 70.33 200 70.33 - 82.19 - 125.71
最大覆盖率
差值 0 0 13 15 9
平均进化 最少 –6.28 0.98 0.65 - -
代数差值
比例 最多 –6.11 0.99 0.86 - -
注: ① 因PG9–PG13为非Python代码程序, 为便于本文方法与其他经典方法比较, 此处选取它们的部分程序统一转换成Python代
码进行实验; ② 表中数据均来源于各文献的原始数据, 由于不同对比方法选择实验对象不同, 故存在部分程序缺少实验数据的
情况
5.5 链式模型性能与用例生成方法效率分析
上面已对不同链式模型以及测试用例生成方法进行了实验分析, 本节基于这些分析结果从不同角度归纳各模
型与用例生成方法的性能.
C-SVMXGBoost 的性能是影响本文方法的关键因素. 为综合评价本文构建的链式模型性能, 更直观地对比不
同模型在用例生成方面的优劣, 这里根据第 5.3.4 节表 5 的实验结果对链式模型的性能进行总结, 如表 8 所示.
表 8 不同链式模型的性能对比
链式模型名称 时间消耗 分类精度 用例生成效果
C-SVMRF △△ △△△ △△△
C-SVMBP △△△ △△ △△
C-XGBRF △△△ △△△ △△△
C-XGBBP △△△ △△ △△
C-RFBP △ △
C-SVMXGBoost △ △△△△ △△△△
注: 标记“△”表示不同链式模型在不同指标下的性能表现程度, 标记越多则程度越深
由表 8 可知, 在时间方面, 耗时最多的是链式模型 C-RFBP, 其次是 C-SVMBP, C-XGBRF, C-XGBBP, C-
SVMRF, 最少的是本文方法构建的 C-SVMXGBoost. 在分类精度和用例生成效果方面, 最高的是 C-SVMXGBoost,
其次是 C-SVMRF, C-XGBRF, C-SVMBP, C-XGBBP, 最低的是 C-RFBP. 根据以上对比结果, 本文方法采用的模型
综合性能最好.
本文融合链式模型模拟预测路径, 同时寻找更多的相似目标路径, 实现多路径测试用例生成. 为综合评价本文