Page 178 - 《软件学报》2026年第7期
P. 178

宋壹 等: 基于异常检查点植入的软件缺陷定位方法                                                        2863


                 DStar 和  Naish2) 进行对比, 以评估  INSPECT  对  Tie 问题的处理能力. 实验结果如表      4  和表  5  所示, 其中第  2  行展
                 示了  4  种  SBFL  技术 (为方便表格展示, 记为    M) 在数据集各个待测错误版本上的平均             Tie 规模, 第  3  行展示了分
                 别配置不同    M  的  INSPECT  变体的平均  Tie 规模, 第  4  行是  INSPECT M  相较于  M  的提升幅度.


                                       表 4 INSPECT  方法对   Tie 问题的缓解能力 (模拟缺陷)

                               对比技术           Crosstab       Ochiai       DStar        Naish2
                                 M             208.86       363.70        363.70       208.86
                              INSPECT M        10.43         10.44        10.43        10.43
                             提升幅度 (%)          95.01         97.13        97.13        95.01


                                       表 5 INSPECT  方法对   Tie 问题的缓解能力 (真实缺陷)

                               对比技术           Crosstab       Ochiai       DStar        Naish2
                                 M             160.28       284.18        284.22       160.28
                                                9.22         9.22         9.22          9.22
                              INSPECT M
                             提升幅度 (%)          94.25         96.76        96.76        94.25

                    以对表   4  的分析为例, 可以看出, 4    项  SBFL  技术在实验数据集上产生的缺陷定位结果中均存在较严重的                    Tie
                 问题, 例如, 在  Crosstab  生成的程序语句风险值排序列表中, 平均存在            208.86  条与真实缺陷语句具有相同风险值
                 的语句, 在  Ochiai、DStar 和  Naish2  的结果中, 这一数字分别是    363.70、363.70  和  208.86. 在真实的软件缺陷定位
                 任务中, 过大规模的      Tie 会严重影响缺陷定位技术的实用价值, 因为调试人员需要手工从                     Tie 中逐条找出缺陷语
                 句. 与单纯使用    SBFL  技术相比, 融合了     SBFL  的  INSPECT  方法能够明显降低     Tie  的规模, 削减幅度最高可达
                 97.13%. 从表  5 中可以看出, 4 项  SBFL  技术在真实缺陷数据集上的缺陷定位同样受制于              Tie 问题, 例如, 在  Crosstab
                 生成的程序语句风险值排序列表中, 平均存在              160.28 条与真实缺陷语句具有相同风险值的语句. 与单纯使用                SBFL
                 技术相比, 融合了     SBFL  的  INSPECT  方法能够明显降低   Tie 规模, 削减幅度最高可达      96.76%.
                  4.3   检查点植入密度如何影响      INSPECT  方法的效果
                    第  2.1  节介绍了植入检查点的具体方法, 其中植入密度 (即被选为检查点植入目标的程序函数比例) 可能对方
                 法的缺陷定位效果有关键影响. 方法默认的植入密度为                  20%, 即顺序扫描程序中的所有函数, 以固定间隔             4  为函数
                 植入检查点. 本研究问题额外选取          1%、5%、10%    和  25%  这  4  个不同的密度值, 即在检查点植入阶段分别以固定
                 间隔  99、19、9  和  3  为顺序扫描的函数植入检查点. 其中, 1%、5%          和  10%  是比原配置  20%  更低的密度值, 25%
                 则更高. 实验不选取      50%、100%  等进一步高的密度值, 因为在这些密度设置下可能收集到规模过大的异常触发
                 信息, 导致异常信息失去相较现有方法广泛采用的传统信息源所具有的规模更小、分析难度更低的优势. 本研究
                 问题用最好、平均和最差情况下的             EXAM  指标来进行度量, 实验结果如表         6、表  7  和图  5  所示 (为了控制变量便
                 于比较, 本研究问题将打破        Tie 阶段所采用的    SBFL  技术固定为   Crosstab, 即对  INSPECT C 变换不同的密度值).

                                表 6 不同检查点植入密度下         INSPECT  方法的缺陷定位有效性 (模拟缺陷)

                               密度值 (%)          EXAM_Best       EXAM_Average      EXAM_Worst
                                  1               193.72           215.73            237.73
                                  5               107.05           124.37            140.79
                                  10              0.91             28.03             33.74
                             20 (INSPECT C )      0.63              5.85             11.06
                                  25              23.78            29.66             35.53

                    以对表   6  的分析为例, 可以发现, INSPECT C    在  3  种情况下的缺陷定位有效性均随检查点植入密度的降低而
                 下降. 以  EXAM_Average 为例, 配置  20%  密度值的原始    INSPECT  方法的指标值为     5.85, 而在  10%、5%  和  1%  的
                 密度值下, 该值分别为       28.03、124.37  和  215.73, 效果呈明显下降趋势. 这一现象可能与临时植入检查点的特性有
   173   174   175   176   177   178   179   180   181   182   183