Page 179 - 《软件学报》2026年第7期
P. 179
2864 软件学报 2026 年第 37 卷第 7 期
关, 具体而言, 不同于开发者自己设置的异常处理代码, INSPECT 自动植入的异常处理代码不具备开发者对程序
逻辑的深入理解, 使得临时植入用于缺陷定位的检查点需要相对更高的密度, 以确保其能有效捕获程序错误执行
状态, 进而准确找到分歧点. 此外, 相较于原始设置更低的检查点植入密度也可能导致错误的执行状态在产生后更
晚被捕获, 使得方法更有可能为程序语句计算出一致的风险值, 从而影响缺陷定位的有效性. 当检查点的植入密度
被设置为比原始密度 20% 更高的 25% 时, 可以发现, INSPECT 的缺陷定位效果同样出现了下降 (如在 20% 密度
时的 EXAM_Average 值为 5.85, 而在 25% 的密度时却上升到 29.66). 这一现象的可能原因是, 检查点植入密度的
增加使得方法收集到的异常触发信息规模一并增加, 更大规模的信息有可能引入与反映程序执行状态无关的冗余
信息, 同时也会增加分析难度. 表 7 呈现的趋势与表 6 基本相同. 同样以 EXAM_Average 为例, 配置 20% 密度值的
原始 INSPECT 方法的指标值为 5.46, 而在 10%、5% 和 1% 的密度值下, 该值分别为 7.28、9.74 和 80.43, 效果呈
明显下降趋势. 当检查点的植入密度被设置为比原始密度 20% 更高的 25% 时, 可以发现, INSPECT 的缺陷定位效
果同样出现下降, 其 EXAM_Average 值上升至 5.52.
表 7 不同检查点植入密度下 INSPECT 方法的缺陷定位有效性 (真实缺陷)
密度值 (%) EXAM_Best EXAM_Average EXAM_Worst
1 74.40 80.43 86.47
5 4.00 9.74 15.48
10 2.45 7.28 12.12
20 (INSPECT C ) 0.85 5.46 11.07
25 0.95 5.52 11.08
1% 5% 10% 20% (INSPECT C ) 25%
250 100
237.73
215.73 90 86.47
200 193.72 80 74.40 80.43
70
150 140.79 60
124.37
50
107.05
100 40
30
50 33.74 35.53 20 15.48 12.12 11.08
23.78 28.03 29.66 10 9.74 11.07
11.06 4.00 2.45 0.850.95 7.28 5.465.52
0.910.63 5.85
0 0
EXAM_Best EXAM_Average EXAM_Worst EXAM_Best EXAM_Average EXAM_Worst
(a) 模拟缺陷 (b) 真实缺陷
图 5 不同检查点植入密度下 INSPECT 方法的缺陷定位有效性
综上所述, 过高或过低的检查点植入密度均会对 INSPECT 方法的缺陷定位有效性以及 Tie 问题缓解能力产
生负面影响. 在本研究问题选取的 1%、5%、10%、20% 和 25% 这 5 种不同的检查点植入密度中, 20% (即 INSPECT
原始设置) 具有最优的表现. 因此, 当后续研究者采用本方法时, 推荐采用 20% 的检查点植入密度, 因为更低或更
高的密度均会导致效果的下降, 同时更高的密度也会增加方法运行的时间和计算成本, 与 INSPECT 方法提出时的
轻量级初衷不符.
4.4 程序语句风险值计算方法如何影响 INSPECT 方法的效果
INSPECT 方法通过对异常触发流进行分析确定分歧点, 并结合现有行级缺陷定位技术, 共同为待测错误程序
语句计算风险值, 具体如第 2.4 节中的公式 (1) 所示. 本研究问题对该风险值计算方法的合理性进行讨论, 通过修
i
Sus 的计算规则生成不同的变体, 并对它们的缺陷定位效果进行比较.
改算法中 s
n ∑
根据前述介绍, 为程序语句计算的风险值 Suspiciousness s 由 Sus 和 Assist_Sus s 两项组成, 其中前者是主要部
i
s
i=1
i
分, 后者是辅助部分. 在计算规则中, Sus 由程序语句 s 对可能含有缺陷的语句组 Suspicious_Group 的从属关系确定.
i
s

