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

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



                 考虑到自动化植入异常处理语句的特性, 为了尽可能保证真正的缺陷语句被包含在                           Suspicious_Group  中, INSPECT
                                                                                              i
                                              i                    i
                 在其风险值评估算法中不在          End_Diff > 0 的情况下根据   End_Diff  的具体值对程序语句受        Suspicious_Group  的包
                                                                   x
                                                                                                    i
                                              x
                 含情况做进一步区分. 该设计在提高缺陷语句被排在风险值列表中较前位置概率的同时, 也可能导致输出的排序
                 列表中存在更大规模的                            i                                   i  End_Diff > 0
                                                                                                     i
                                                    Sus  的计算规则进行修改, 对程序语句组
                                   Tie. 本研究问题对上述
                                                                                           x
                                                       s                           Statements  在     x
                            Suspicious_Group  包含的判断条件做进一步限定, 在原始算法之外额外形成                4  项算法变体, 如表   8
                 情况下是否受
                                         i
                                               i
                 所示. 相较于原始算法仅要求         End_Diff > 0 (该算法将满足该条件的语句全部纳入范围, 因此记为                Algo 100% ), 4  种
                                               x
                                                            i
                 变体在这一条件的基础上继续添加了条件, 要求              End_Diff  小于等于   End_Count_bp  的 i  80%、60%、40%  和  20% (分
                                                            x
                 别记为   Algo 80% 、Algo 60% 、Algo 40 和  Algo 20% ). 换句话说, 失败测试用例执行到分歧点为止退出的独立受检数量
                                           %
                                i                                 i   分别不能超过前者的                   和
                 与执行到   Statements  为止退出的独立受检数量的差值         End_Diff                  80%、60%、40%     20%.
                                x                                 x
                 以      %            End_Diff > 0  的基础上,         i         End_Diff ⩽max(End_Count_bp ×0.4,1)
                                                                                 i
                                            i
                   Algo 40 为例, 在满足
                                                                x
                                            x           Statements  还需要满足        x                i
                 这一条件, 即只有离分歧点最近的                                        Suspicious_Group . 条件中  max(…, 1) 的
                                            40% 的程序语句组会被判定为从属于
                                                                                       i
                 设置是为了确保当      End_Count_bp  的值较小时, 仍然能够存在满足条件的程序语句组. 设计这                4 种方法变体的动机
                                           i
                 在于, 假设临时植入的检查点能够及时识别出通过执行和失败执行中程序执行状态的差异, 则可以仅将分歧点附近
                 的程序语句组纳入       Suspicious_Group , 通过对其规模的缩减, 减少缺陷定位结果受          Tie 问题的影响. 与   RQ3  相同,
                                             i
                                                                                                      i
                 出于控制变量的目的, 本研究问题中所有算法变体均基于                 INSPECT C 运行. 因为  Algo 100 新增的判断条件  End_Diff ⩽
                                                                                 %
                                                                                                      x
                                                     i                         i
                 max(End_Count_bp ×1,1) 可以约减为  End_Diff ⩽ End_Count_bp  (因为   End_Diff > 0 时  End_Count_bp  的取值总
                                                                   i
                                                                                                i
                                                                                x
                                i
                                                     x
                 大于等于    1); 将上式与公式    (5) 结合可得   End_Count_bp − End_Count ⩽ End_Count_bp , 即  End_Count ⩾ 0, 该条
                                                                                                i
                                                                       i
                                                             i
                                                                                                x
                                                                                    i
                                                                       x
                                                                 i
                                        %                 End_Diff > 0.
                 件显然总是成立. 因此, Algo 100 的实际判断条件仍为                 x

                                            表 8 INSPECT  风险值评估算法变体设计

                                     算法变体                               判断条件
                                                                     i
                                      Algo 20%              0 < End_Diff ⩽max(End_Count_bp i ×0.2,1)
                                                                     x
                                                                     i
                                                            0 < End_Diff ⩽max(End_Count_bp i ×0.4,1)
                                      Algo 40%                       x
                                                                     i
                                                            0 < End_Diff ⩽max(End_Count_bp i ×0.6,1)
                                      Algo 60%                       x
                                                                     i
                                                            0 < End_Diff ⩽max(End_Count_bp i ×0.8,1)
                                      Algo 80%                       x
                                                                             i
                                 Algo 100%  (INSPECT C )               End_Diff > 0
                                                                             x

                    所有变体的     EXAM_Best、EXAM_Average 和  EXAM_Worst 指标值如表   9  和表  10  所示.

                                 表 9 INSPECT  不同风险值评估算法变体的缺陷定位有效性 (模拟缺陷)

                                 算法变体             EXAM_Best      EXAM_Average      EXAM_Worst
                                                    2.70             6.50             10.30
                                 Algo 20%
                                                    1.90             6.11             10.31
                                 Algo 40%
                                                    1.52             6.06             10.61
                                 Algo 60%
                                                    0.71             5.59             10.46
                                 Algo 80%
                            Algo 100%  (INSPECT C )  0.63            5.85             11.06

                    由表  9  可见, 在  EXAM_Best 指标下, 从  Algo 100 到  Algo 80% 、Algo 60% 、Algo 40 和  Algo 20 这  4  项算法变体
                                                                                          %
                                                                                 %
                                                         %
                 的指标值总体呈升高趋势 (即缺陷定位效果下降), 表明缩减                 Suspicious_Group  的规模与对应算法变体的缺陷定位
                                                                            i
                 有效性总体呈负相关关系. 在         EXAM_Average 和  EXAM_Worst 指标下, 5  个对比对象的值基本保持稳定 (仅有小
                 幅波动). 在表   10  中, 从  Algo 100 到  Algo 80% 、Algo 60% 、Algo 40 和  Algo 20 这  4  项算法变体的  EXAM_Best 和
                                                                            %
                                                                   %
                                         %
                 EXAM_Average  指标值基本保持稳定 (仅有小幅波动), 但              EXAM_Worst 则呈明显的下降趋势, 说明缩减
                 Suspicious_Group  的规模能在一定程度上减轻缺陷定位结果受            Tie
                              i                                      问题的影响. 考虑到在模拟情况下, Algo 100%
                 的  EXAM_Best 指标值最好, EXAM_Average   和  EXAM_Worst 指标值与其他     4  种变体基本相当; 在真实情况下,
   175   176   177   178   179   180   181   182   183   184   185