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

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


                 发执行.
                    ● TravelAgency  是一个旅行预订系统, 共涉及      8  个  Web  服务. 用户输入个人信息以及出行信息后, 选择合适
                 的旅行社, 并且预订旅馆以及机票, 最后从会员账户扣除整个旅行过程的费用. 最后, 返回旅行预订各个流程是否
                 成功的信息.
                  3.2   度量指标
                    介  绍  评  估  本  文  所  提  故  障  修  复  技  术  以  及  优  化  策  略  的  有  效  性  的  度  量  指  标  .   采  用  故  障  修  复  的  成  功  率  度  量
                 BPELRepair 的有效性; 从修复过程变异算子搜索匹配次数、验证的候选补丁数量和测试用例的执行次数等方面,
                 评估故障修复的计算开销. 下面介绍每个度量指标的含义及计算方法.
                    ● 故障修复成功率      (PF): BPELRepair 应用于待测  BPEL  程序  p  时, 成功修复的故障与全部故障的百分比, 计
                 算公式如公式     (1) 所示:
                                                            N f
                                                     PF (p) =  ×100%                                  (1)
                                                            N all
                 其中,    N f  表示成功修复的故障数,   N all  表示所有的故障数. PF  越大表示故障修复技术越有效.
                      语言异常处理机制设计特定的操作进行故障修复
                    ● 变异算子搜索匹配优化率          (  OC x #Match  ): 使用某个优化策略  x 后减少的搜索匹配次数百分比, 计算公式如公
                 式  (2) 所示:
                                                     #Match Original −#Match x
                                             OC x  =                   ×100%                          (2)
                                               #Match
                                                         #Match Original
                 其中, #Match Origina 表示原始  BPELRepair 的变异算子搜索匹配次数, #Match x 表示使用某个优化策略       x 后  BPELRepair
                              l
                                      OC  x   越大表示优化后变异算子搜索匹配次数越小, 该策略越有效.
                 的变异算子搜索匹配次数.           #Match
                    ● 补丁程序验证优化率       (  OC  x   ): 使用某个优化策略  x 后减少的补丁程序验证数量百分比, 计算公式如公式              (3)
                                          #Patch
                 所示:
                                             OC  x  =  #Patch Original −#Patch x  ×100%               (3)
                                                #Patch
                                                         #Patch Original
                 其中, #Patch Origina 表示原始  BPELRepair 的候选补丁数量, #Patch x 表示使用某个优化策略      x 后  BPELRepair 验证
                              l
                 的候选补丁数量,      OC  x #Patch  越大表示优化后验证的补丁程序数量越小, 该策略越有效.
                    ● 测试用例执行优化率        OC x     ): 评估测试用例选择策略       x 的优化效果, 计算公式如公式        (4) 所示:
                                       (
                                          #Validation
                                            x
                                         OC #Validation  =  #Validation random −#Validation x  ×100%  (4)
                                                         #Validation random
                 其中, #Validation rando 表示  BPELRepair 随机选择测试用例时的测试用例执行次数, #Validation x 表示     BPELRepair
                                 m
                 使用了某个测试用例选择策略           x 后的测试用例执行次数.       OC  x    越大表示应用测试用例选择策略            x 后的测试
                                                                #Validation
                 用例执行开销越小, 优化效果越好; 当值小于            0  时, 该优化策略   x 不如随机选择测试用例策略.
                  3.3   实验设计
                    现有   BPEL  程序故障修复的主要方法有: 1) 使用正确            BPEL  程序代替存在故障的       BPEL  程序  [9] ; 2) 基于
                 BPEL                                       [10,11] . 这两类方法不属于自动化的程序修复范畴, 无法作为
                 基线技术进行比较. 本文方法中的故障定位部分采用了课题组前期研究工作成果                           [8] , 故障定位的有效性已与同类
                 方法进行对比, 而本文实验部分侧重于评估修复技术与优化策略的有效性.
                    BPEL  程序相比传统应用程序具有较大差异, 其部署执行开销都要大于传统应用程序. 本文设置                            25  组不同策
                 略组合的对比实验, 每组实验重复执行            30  次. 为了缩减计算开销, 首先生成所有故障版本程序的所有候选补丁程
                 序, 然后对所有的候选补丁程序执行所有的测试用例集, 从而获得每一个测试用例对每一个候选补丁程序的通过
                 情况. 进行修复实验时, 只需要查找对应程序与对应测试用例的执行结果, 避免多次执行同一个补丁程序带来的冗
                 余开销.
                    表  5  列出了本文提出的多种面向补丁生成以及测试用例选择方面的优化策略, “Yes”或“No”表示实验过程是
   273   274   275   276   277   278   279   280   281   282   283