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

2806                                                       软件学报  2024  年第  35  卷第  6  期



                 BEGIN
                 1.  prepath←Input New_testdata into C-SVMXGBoost; // 由算法  2  中新测试数据获取预测路径
                 2.  sim_path←Search target path in TarPath similar to prepath; // 寻找预测路径的相似目标路径
                                 ∅ :
                 3.  IF sim_path < >
                 4.    precise_path ← getFromInstru(New_testdata); // 在插桩程序中获取精确路径
                 5.    lev_depth ← calculateLevDepth(precise_path); // 根据公式  (14) 计算精确路径的层级深度
                 6.    new_sample ← Update(New_testdata, precise_path, lev_depth);
                 7.  END IF
                 8.  Updated_C-SVMXGBoost←Repeat the steps in Algorithm 1;
                 9.  Output Updated_C-SVMXGBoost;
                 END

                    在算法   3  中, 第  1  行和第  2  行, 将算法  2  中获得的新测试数据输入    C-SVMXGBoost 链式模型中, 获取预测路

                 径及其相似的目标路径; 第        3–7  行, 若存在相似路径, 将测试数据输入到插桩程序中获得精确路径, 计算该路径的
                 层级深度, 且将测试数据、精确路径以及路径层级深度保存并更新样本; 第                       8  行和第  9  行, 根据算法  1  来更新模型
                 并输出.

                  5   实验设计与分析

                    为检验   C-SVMXGBoost 链式模型预测路径的准确性, 以及测试用例生成效率, 本节选取经典的基础程序和工
                 业程序进行实验以展开对比分析.
                  5.1   评价指标
                    为评价提出的基于链式模型的多路径测试用例生成方法的效率, 同时降低算法随机性带来的影响, 本文定义
                 如下几个评价指标.
                    1) 链式模型分类精度. 链式模型中所有子模型分类精度的均值.
                    2) 平均训练时间. 独立地训练每个被测程序的初始模型                C-SVMXGBoost 若干次, 计算每次训练所需时间总和
                 的平均值.
                    3) 执行时间. 测试程序所使用的时间. 其中, 传统遗传法的执行时间为程序通过遗传算法完成用例生成的时间;
                 本文方法的执行时间为构建链式模型与生成测试数据时间之和.
                    4) 覆盖率. 将程序独立地运行若干次, 若每次执行程序时, 用例可在最大进化代数内覆盖全部目标路径, 则将
                 覆盖次数加    1. 覆盖率为若干次程序运行后最终覆盖次数与总运行次数的比值.
                    5) 进化代数总量. 一定次数的用例生成中, 所有单条目标路径被覆盖所需进化代数的数值总和.
                    6) 平均进化代数. 待生成用例的程序独立地执行一定次数, 每次执行时, 若在最大进化代数内, 用例能覆盖所
                 有目标路径, 则保存最后覆盖路径的进化代数; 若在最大进化代数内, 用例未能全覆盖, 则将最大值                             (即, 进化代数
                 阈值) 作为本次测试程序时所需的进化代数. 平均进化代数表达了这些次实验所记录代数总和的均值.
                    此外, 为更直观、便捷地展示本文方法与各对比方法在不同指标下的实验效果, 在执行时间、覆盖率和平均
                 进化代数上扩展几个指标, 并在相应部分进行文字阐述, 详细说明见第                     5.3.3  节、第  5.3.4  节和第  5.4  节.
                  5.2   实验设置
                    实验环境为     Win 10  操作系统、Python  编程语言、jdk 1.8  版本、PyCharm  编程工具. 为使     C-SVMXGBoost 链
                 式模型更好地适用于遗传进化测试策略, 让模型选出的优秀个体可充分地参与进化生成, 同时确保引入的个体基
                 因丰富多样, 避免个体在进化过程中陷入局部最优, 以生成更优的测试用例, 这里将遗传参数设置为多点交叉概率
                 为  0.9, 单点变异概率为   0.1, 初始种群规模为     40  等. 通过从链式模型预测结果的准确性以及测试用例生成效率等
   225   226   227   228   229   230   231   232   233   234   235