Page 284 - 《软件学报》2024年第6期
P. 284
2860 软件学报 2024 年第 35 卷第 6 期
近年来, 研究人员从不同角度探索了 BPEL 程序的故障定位技术. Sun 等人 [6] 提出一种基于语句块的 BPEL 程
序故障定位框架. 该框架结合 BPEL 中语句块特点, 利用测试用例的执行信息计算每个语句块的怀疑度并提供检
查语句块的启发式规则, 定位精度可达 80%, 但定位代价偏高, 效率仅达到 50%. 基于谓词切换的 BPEL 程序故障
定位技术 [7] 通过谓词切换逐步缩小程序的故障范围, 其核心在于采用程序切片技术分析与关键谓词相关的程序片
段, 该技术定位效率达 90%, 但定位精度存在一定的不足, 最高达 50%. Sun 等人 [19] 提出一种基于谓词切换和动态
切片技术相结合的 BPEL 程序故障定位技术, 首先利用谓词切换技术找到程序的关键谓词. 然后利用后向切片算
法, 搜索到起始节点, 最后输出排序后的故障语句块集合, 该方法具有较高的故障定位召回率和较低的定位代价,
但无法定位出变量声明和活动交换等故障类型. 孙昌爱等人 [8] 将变异测试应用到 BPEL 程序的故障定位中, 提出
一种基于变异分析的 BPEL 程序故障定位技术. 首先通过变异获得故障程序所有的变异体, 对 BPEL 故障程序和
变异体程序执行测试用例集以获得详细的执行信息. 统计每个语句块对应变异体集的执行信息并结合怀疑度计算
公式计算语句块的怀疑度, 最后根据怀疑度的值对语句块进行降序排列. 该技术借鉴基于语句块的 BPEL 程序故
障定位框架, 在提高 BPEL 程序故障定位召回率的同时, 有效降低了变异执行开销.
5 总 结
BPEL 服务组合的质量问题日益受到广泛关注. 已有工作探讨了面向 BPEL 程序的故障定位技术, 但是尚未针
对 BPEL 程序故障修复开展研究工作. 本文结合 BPEL 程序的特性以及变异分析技术, 提出一种基于模板匹配的
BPEL 程序故障修复技术 BPELRepair, 通过 BPEL 程序的语句块类型信息与变异算子组合构造修复模板, 依据修
复模板对故障语句块执行变异操作生成候选补丁程序, 通过执行测试用例集验证补丁程序的正确性. 从补丁程序
生成、测试用例选择以及终止条件 3 个角度, 提出了多种有效的优化策略. 通过 6 个 BPEL 程序评估所提故障修
复技术及优化策略的有效性. 实验结果表明: 本文所提故障修复技术能够成功修复部分故障版本; 补丁生成优化策
略能够有效降低故障修复开销; 提出的两种测试用例选择策略能够减少 26%–75% 的测试用例执行开销; 提出的
故障修复终止策略能够在不显著影响故障修复成功率的前提下减少不必要的语句块修复验证开销.
进一步的研究工作包括: (1) 已有的变异算子并不能覆盖所有故障类型, 未来将扩展更多 BPEL 变异算子, 增
大故障修复搜索空间, 从而修复更复杂的故障类型; (2) 本文故障定位与修复阶段都使用变异分析, 但实现的工具
只利用了定位阶段测试用例信息, 我们将综合两个阶段变异算子的使用信息, 进一步提高定位修复效率.
References:
[1] Goeb A, Lochmann K. A software quality model for SOA. In: Proc. of the 8th Int’l Workshop on Software Quality. Szeged: ACM, 2011.
18–25. [doi: 10.1145/2024587.2024593]
[2] IBM. What is SOA? 2021. https://www.ibm.com/cloud/learn/soa
[3] Wright G. BPEL (business process execution language). 2022. https://www.techtarget.com/searchapparchitecture/definition/BPEL-
Business-Process-Execution-Language
[4] Wang XH, Zhao FY. Research summary for the key technology of software fault localization. Software Guide, 2017, 16(7): 205–209 (in
Chinese with English abstract). [doi: 10.11907/rjdk.171181]
[5] Boubeta-Puig J, Medina-Bulo I, García-Domínguez A. Analogies and differences between mutation operators for WS-BPEL 2.0 and
other languages. In: Proc. of the 4th Int ’l Conf. on Software Testing, Verification and Validation Workshops. Berlin: IEEE, 2011.
398–407. [doi: 10.1109/ICSTW.2011.52]
[6] Sun CA, Zhai YM, Shang Y, Zhang ZY. BPELDebugger: An effective BPEL-specific fault localization framework. Information and
Software Technology, 2013, 55(12): 2140–2153. [doi: 10.1016/j.infsof.2013.07.009]
[7] Sun CA, Ran YF, Zheng CY, Liu H, Towey D, Zhang XY. Fault localisation for WS-BPEL programs based on predicate switching and
program slicing. Journal of Systems and Software, 2018, 135: 191–204. [doi: 10.1016/j.jss.2017.10.030]
[8] Sun CA, Zhang SF, Zhu WZ. Mutation based fault localization technique for BPEL programs. Computer Science, 2021, 48(1): 301–307
(in Chinese with English abstract). [doi: 10.11896/jsjkx.200900051]
[9] Subramanian S, Thiran P, Narendra NC, Mostefaoui GK, Maamar Z. On the enhancement of BPEL engines for self-healing composite
Web services. In: Proc. of the 2008 Int’l Symp. on Applications and the Internet. Turku: IEEE, 2008. 33–39. [doi: 10.1109/SAINT.2008.