Page 238 - 《软件学报》2024年第6期
P. 238
2814 软件学报 2024 年第 35 卷第 6 期
以上 3 种评价指标结果表明, 在覆盖多目标路径过程中, 本文方法不仅可在同一代种群中覆盖更多的目标路
径, 而且可在较少的进化代数内覆盖更多的目标路径.
执行时间方面, 本文方法比传统遗传法提升程度较小. 对于程序 PG1, 执行时间之差百分比为−7.29%, 即本文
方法执行时间略高于传统遗传法, 其主要原因是该程序规模小、复杂度低, 在传统遗传法执行过程中运行插桩程
序本身不需要花费太多时间, 而本文方法则需花费链式模型融合时间以及对满足插桩条件的测试用例进行验证的
时间; 对于程序 PG2, PG3 和 PG4, 执行时间上与传统遗传法相比, 分别降低了 34.93%, 16.42%, 3.08%, 即本文方法
的执行时间低于传统遗传法, 这是由于这 3 个程序的路径节点数较 PG1 多, 且路径覆盖难度更大. 随着程序规模
以及复杂度增加, 对于程序 PG5, PG6, PG9, PG10, 本文方法的执行时间相对于传统遗传法减少相对较多, 分别减
少了 21.22%, 8.28%, 24.46%, 9.43%. 对于程序 PG7 和 PG8, 本文方法执行时间相比于传统遗传法节约相对较少,
分别减少了 5.09% 和 2.82%, 其原因是, 在这两个程序的链式模型中, 子模型个数相对较多, 原始样本不足以使得
初始模型预测结果准确, 链式模型精度更易受影响; 且在遗传操作中产生一定数量的优秀个体后需更新链式模型,
进而测试时间相对较多; 此外在调用模型过程中也需花费一定时间. 但尽管如此, 本文方法通过减少不必要的插桩
4 种模型, 其中
时间, 以及利用路径相似性与重用适应度较高的测试用例, 在较少进化代数下生成可覆盖目标路径的用例, 这在一
定程度上缓和链式模型本身的融合时间.
可见, 对于不同输入数据类型的程序, 利用 C-SVMXGBoost 链式模型可有效提高测试用例生成效率. 而且, 随
目标路径数增多, 相对较难覆盖路径节点数也会增加, 较优测试样本数相对较少, 这样, 链式模型的整体精度必然
会受到一定影响, 尽管如此, 本文构建的模型仍十分有效.
5.3.4 基于链式模型的测试效果
由第 5.3.1–5.3.3 节实验可知, 一方面, 单一的分类模型不仅精度较低, 且对精准预测不同类型程序的路径具有
一定的局限性; 另一方面, 不同模型间的过多融合不仅使模型选择过程较为复杂, 同时会花费更多融合时间. 因此,
无需进一步做过多模型的消融实验, 但需与各两两融合的链式模型 (它们采用与本文相同的链接方式) 进行对比,
以便充分验证本文融合的链式模型是否较其他链式模型更适用于多路径覆盖的测试用例生成. 不同链式模型信息
如表 4 所示.
表 4 不同模型的子模型链式融合信息表
链式融合模型 SVM XGBoost RF BP
C-SVMRF √ - √ -
C-SVMBP √ - - √
C-XGBRF - √ √ -
C-XGBBP - √ - √
C-RFBP - - √ √
C-SVMXGBoost √ √ - -
表 4 中包含 SVM, XGBoost, RF 和 BP 这 C-SVMRF 为子模型 SVM 和 RF 的链式融合, C-XGBBP
为子模型 XGBoost 和 BP 的链式融合, 其他链式模型也依此方式进行融合.
下面将表 4 中的链式模型融入到遗传算法中, 检验不同模型在多路径测试数据生成中的效果. 这里选取程序
规模和目标路径数相差较大的程序 PG1, PG3, PG6, PG7, PG8 和 PG10 进行实验, 结果如表 5 所示. 为更直观地展
示本文的链式模型 C-SVMXGBoost 比其他链式模型更优, 这里在原评价指标上扩展“改进程度”这一指标. 其中,
在覆盖率上的最小 (或最大) 改进程度为本文模型与其他链式模型差值的最小值 (或最大值); 其他评价指标上的改
进程度计算为: 最小 (或最大) 改进程度为其他链式模型与本文模型在不同评价指标下的差值占其他链式模型比
例的最小值 (或最大值).
由表 5 可知, 合理地选择链式融合模型可显著地提升测试用例生成效率.