Page 276 - 《软件学报》2024年第6期
P. 276

2852                                                       软件学报  2024  年第  35  卷第  6  期

























                 Bill→WholeSaler→Assign→Ship→Verify→Flow→Assign2Res.






















                                              图 3 SupplyCustomer 的  BPEL  流程图

                    假设在   SupplyCustomer 程序实例中存在一个    ERR  类型的故障, 即“If_checkStock”语句块的条件表达式为“$check-
                 StockResponse.parameters/ns4:checkStockReturn != ‘yes’”, 而正确程序应为“$checkStockResponse.parameters/
                 ns4:checkStockReturn = ‘yes’”. 本文提出的  BPELRepair 工作过程如下.
                    步骤  1. 对待修复的故障程序       SupplyCustomer 执行配套的测试用例集, 获得每个测试用例的执行轨迹信息以
                 及实际输出结果. 将实际运行结果与预期输出进行比对, 确定测试用例是否执行成功.
                    步骤   2. 选择故障定位算法, 依据步骤一的信息, 对程序中的所有语句块进行怀疑度计算并排序. 本例使用
                 Ochiai 公式得到怀疑度列表中语句块顺序为: If_checkStock→CheckStock→Assign2Result→InitialAssign→OrderPass→


                    步骤  3. 顺序遍历步骤     2  得到的语句块列表, 首先选择“If_checkStock”语句块. 该语句块嵌套多层语句块, 包含
                 的基本语句块类型有       if、condition、sequence、else.
                    步骤  4. 从修复模板集合中, 找到步骤        3  语句块类型集合所对应的语句块模板并统计修复操作集. 涉及的修复
                 操作包括   AIE, CFA, EAA, EEU, ERR, ELL, ECC, ECN, EIN, CDE, CCO, CDC, ASF, ASI.
                    步骤  5. 递归遍历“If_checkStock”语句块中所有基本语句块, 应用步骤            4  中获得的修复操作集合, 变异生成关
                 于该语句块的所有补丁程序.
   271   272   273   274   275   276   277   278   279   280   281