Page 272 - 《软件学报》2024年第6期
P. 272
2848 软件学报 2024 年第 35 卷第 6 期
从变异分析的角度, 我们提出了基于模板匹配的 BPEL 程序故障修复技术, 简称为 BPELRepair. 图 2 示意了
BPELRepair 的方法原理, 包含如下 4 个步骤.
① Template ② Fault
extraction location
BPEL block Mutation Suspicious
types operators calculator
Template
③ Patch
generation
BPEL block
Patch types traces
generator
Suspicious fault
phrases
程序中的语句块是以
④ Program Collection of
verification candidate programs
Program
validator
Test cases Faulty programs
Valid candidates
图 2 BPELRepair 的方法原理图
(1) 模板抽取: 在分析 BPEL 程序的特点的基础上, 将语句块类型和与其适用的所有变异算子组合得到 BPEL
故障修复模板.
(2) 故障定位: 使用测试用例集执行故障程序, 收集执行结果与执行轨迹, 利用这些信息并结合怀疑度计算公
式 (本文选用 Tarantula 、DStar 、CBI [18] 和 Ochiai [18] ) 计算每个语句块的故障怀疑度, 最后依照故障怀疑度进行
[8]
[8]
排序.
(3) 补丁生成: 补丁生成器 (patch generator) 利用故障定位阶段的语句块排序结果, 依次针对可疑语句块展开
修复. 首先, 确定可疑语句块及其嵌套的语句块的类型, 找到这些语句块类型所对应的修复模板; 然后, 获取修复模
板内的修复操作集合; 最后, 对相关语句块的代码进行搜索匹配以确定修复操作的适用性, 使用适用的修复操作对
该语句块执行变异生成补丁程序集合.
(4) 程序验证: 程序验证器 (program validator) 使用测试用例集检验每个补丁程序. 若某个补丁程序通过了所
有测试用例的测试, 表明该补丁程序对原有故障的修复符合规约, 故障修复成功并终止修复过程; 否则, 继续验证
剩余的补丁程序. 如果未发现有效补丁程序并且当前语句块的所有补丁程序完成了检验, 则对下一个语句块重复
步骤 (2) 和步骤 (3).
2.2 相关定义
定义 1. 基本语句块, B. BPEL XML 标签为界定的一组语句. 基本语句块指不包含其他
语句的语句块.
例如, 图 1 中第 11 行和第 12 行是一个基本语句块; 而第 1–13 行为以 XML 标签<bpel:assign> 为界定的语句
块, 内嵌套<bpel:copy><bpel:from> 等, 不属于基本语句块.
定义 2. 基本语句块的类型, BT. 基本语句块的 XML 标签名中不含前缀的部分为基本语句块的类型.
例如, 图 1 中第 11 行和第 12 行的基本语句块的类型为“to”.