Page 294 - 《软件学报》2026年第7期
P. 294
王海宁 等: 融合因果效应的高效软件产品线缺陷定位方法 2979
越高. 具体的计算规则可以采用特定 SBFL 指标度量, 如 OP2. 基于单元测试的评估则仅针对未通过产品中的单元
测试. 同样地, 根据每条可疑语句在通过的单元测试和未通过的单元测试中的覆盖情况, 使用适合的 SBFL 指标进
行度量.
实际上, 基于产品的评估是从全局视角对可疑语句进行度量. 该评估方式既考虑了通过产品的运行情况, 也考
虑了未通过产品的运行情况. 而基于单元测试的评估只考虑未通过的产品, 是从局部度量可疑语句. 对于每一条可
疑语句 s, 同样采用线性加权聚合的方式平衡其基于产品评估 ps(s) 和基于单元测试评估 ts(s), 进而最小化总体误
差, 即:
H(s) = η×ps(s)+(1−η)×ts(s) (7)
其中, η 表示权重值常数.
4 实验设置
本节详细地介绍实验实施细节, 包括数据集、研究问题和评价指标及基准方法. 所有实验均在一台硬件条件
为 Intel Core i5-12450H CPU (2.00 GHz) 和 16.00 GB RAM 的 Linux 服务器上完成. 对于编程语言, 采用 Python 实
现可疑特征交互识别和语句可疑性评估, 程序切片利用 IBM 公司开源的基于 Java 的 Wala 框架实现. 此外, 所有
的实验结果以及 FCS-FL 的源代码公布在 https://github.com/Songluhaining/FCS-FL.
4.1 数据集
本文选择了一个包含可变缺陷的大型公开数据集用于评估 FCS-FL, 该数据集包含了 6 个真实的 SPL 系统,
其中共包含 260 个只有单个缺陷的单缺陷案例和 999 个具有 2 个及以上缺陷的多缺陷案例. 此外, 选择的产品线
系统的特征数从 6 到 27, 语句覆盖率为 42.9%–99.9%, 更详细的信息如表 1 所示. 值得说明的是, 据我们所知, 这
是目前唯一公开的用于 SPL 缺陷定位且包含测试信息的数据集 [43] .
表 1 实验数据集
系统 特征数 产品数 单缺陷的案例数 多缺陷的案例数 测试语句覆盖率 (%) 代码规模
Elevator-FH-JML 6 18 13 26 92.9 854
BankAccountTP 8 34 56 298 99.9 143
ExamDB 8 8 48 214 99.5 513
Email-FH-JML 9 27 20 55 97.7 439
ZipMe 13 25 20 139 42.9 3 460
GPL 27 99 103 267 99.4 1 944
4.2 研究问题
本文通过回答以下几个研究问题 (RQ) 以评估提出方法的有效性.
RQ1: FCS-FL 在特征级缺陷定位中效率提升的幅度有多大?
RQ2: 在单缺陷情形下, FCS-FL 的语句级缺陷定位准确性如何?
RQ3: 在多缺陷情形下, FCS-FL 的根因定位能力如何?
RQ4: 在 FCS-FL 中, 不同因果图模型和公式 (7) 中 µ 的不同取值对缺陷定位效果的影响如何?
在本研究中, RQ1 旨在验证所提方法在特征级缺陷定位中的效率, 这是后续研究问题的基础. 基于该验证结
果, RQ2 进一步评估方法在单缺陷场景下语句级定位的准确性. RQ3 则将这一评估扩展至多缺陷场景, 考察其在
更复杂条件下的适用性. 最后, RQ4 针对方法的超参数设置, 系统分析其对算法性能的影响.
为回答 RQ1, 选择每个 SPL 系统的所有单缺陷案例, 在计算未通过产品的可疑特征选择集合时, 统计被包含
可疑特征选择集合的比例, 以及不同可疑特征选择集合生成相同特征交互数的比例. 基于这两个比例在不同 SPL
系统的分布情况, 分析基于 FCS-FL 节约生成和检查特征交互的数量. 此外, 通过与先进方法比较在每个系统所有

