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

2860                                                       软件学报  2026  年第  37  卷第  7  期


                 ets_fail i 中存在独立受检, 方法认为缺陷语句在                                                End_Diff = 0
                                                                                                     i
                                                     e i 首次进入独立受检前被执行. 因此, 限定须同时满足
                                                                                                     x
                           i
                 和   Begin_Diff = 0 两个条件, 以进一步缩小包含于     Suspicious_Group  中的程序语句规模.
                           x                                        i
                  2.4.2    面向  Tie 问题消除的语句风险值计算
                                                              i           Suspicious_Group , 公式  (1) 的前半部分
                    在基于分歧点分析的语句风险值计算中, 以              Statements  为单位确定了
                                                              x                        i
                                        i
                 由此得以计算. 由于      Statements  可能包含若干条被执行语句, 需要对这些语句的风险值做进一步区分. 为此, 计算
                                        x
                 程序语句   s 的辅助风险值     Assist_Sus s  (公式  (1) 的后半部分). 首先应用一项现有的行级缺陷风险值评估技术, 为每
                                                     .
                 条程序语句     s  计算风险值  Original_Assist_Sus Assist_Sus s  通过将  Original_Assist_Sus  归一化至  [0, 1) 区间得到,
                                                                                   s
                                                    s
                 具体计算方式如公式       (6) 所示:

                                                Original_Assist_Sus −Min_Original_Assist_Sus
                                   Assist_Sus =               s                                       (6)
                                           s
                                             Max_Original_Assist_Sus−Min_Original_Assist_Sus+1
                 其中,   Max_Original_Assist_Sus 和  Min_Original_Assist_Sus 分别是所有  Original_Assist_Sus  的最大值、最小值. 在
                                                                                      s
                 本节面向    Tie 问题消除的语句风险值计算中, 任何工作在语句粒度的缺陷定位技术都可以被采用. 因其轻量、经
                 典的特性, INSPECT   采用  SBFL  技术用于该阶段. 尽管单独用        SBFL  技术定位缺陷存在局限性, 但其在          INSPECT
                 方法中的主要作用是在分析异常触发信息分歧点得到语句的主要风险值后, 辅助性地对具有相同主要风险值的语
                 句做进一步区分.
                  3   实验设计
                    本节对所提出的基于异常检查点植入的软件缺陷定位方法                     INSPECT  进行有效性验证, 包括研究问题、参数
                 设置、数据集和评估指标几个方面.
                  3.1   研究问题 (research question, RQ)
                    为了检验    INSPECT  在缺陷定位任务中的表现 (包括缺陷定位有效性和相同风险值语句                      Tie 消除能力), 分析
                 INSPECT  中不同组件、参数对整体方法的影响, 设置如下研究问题.
                    ● RQ1: INSPECT  方法是否具有良好的缺陷定位有效性?
                    INSPECT  方法的重点在于在程序异常处理语句缺失的情境下, 仍然能够挖掘并利用程序异常信息辅助缺陷
                 定位任务的潜力, 从而为缺陷语句赋予更高的风险值. 将                INSPECT  方法与当前该领域的       SOTA (state-of-the-art) 方
                 法  SmartFL  进行对比, 检验  INSPECT  是否能够将真正含有缺陷的语句置于所输出排序列表的靠前位置.
                    ● RQ2: INSPECT  方法能否有效缓解相同风险值语句造成的             Tie 问题?
                    软件缺陷定位技术常为多条程序语句赋予相同的风险值, 这些语句将形成一个个                           Tie. 特别是当真正含有缺陷
                 的语句也位于     Tie 中时, 缺陷定位的有效性将受到威胁. 此时, 若           Tie 的规模  (即  Tie 中包含的语句数量) 越小, 则
                 造成的影响也相应越小. 本研究问题关注             INSPECT  方法对  Tie 问题的缓解能力, 即能否减少所输出风险值排序列
                 表中与缺陷语句具有相同风险值的其他语句的数量.
                    ● RQ3: 检查点植入密度如何影响        INSPECT  方法的效果?
                    如第  2.1  节中所述, 在  INSPECT  方法中, 所植入检查点的密度是决定方法能否有效捕获程序执行状态分歧点
                 的关键因素之一. 若检查点植入密度过大, 可能导致方法收集到的异常信息规模较大, 进而造成难以有效分析所收
                 集的信息, 并削弱异常信息相较其他传统缺陷定位信息源的优势; 若检查点植入密度过小, 可能导致方法难以有效
                 捕获程序执行状态分歧点, 进而影响定位有效性. 本研究问题在方法默认                       20%  检查点植入密度之外, 研究在更多
                 密度 (1%、5%、10%、25%) 下方法的表现.
                    ● RQ4: 程序语句风险值计算方法如何影响            INSPECT  方法的效果?
                    在收集得到异常触发流并进行分析后, INSPECT              设计了具体的算法为程序语句赋予风险值 (如第                 2.4  节所
                 述). 本研究问题分析该算法设计的合理性, 为该算法设计不同的变体, 对比不同变体与原有设计在缺陷定位任务
                 中的表现.
   170   171   172   173   174   175   176   177   178   179   180