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

孙昌爱 等: 基于模板匹配的       BPEL  程序故障修复及优化技术                                          2857


                  3.4.2    故障修复优化策略的效果    (RQ2)
                    表  8  和表  9  总结了运用正交实验与留一法得到优化策略应用前后的实验结果均值. 其中, #Match、#Patch、
                 #Validation 分别表示变异算子搜索匹配次数、验证的候选补丁数、测试用例执行数等计算开销; original、optimized
                 分别表示原始     BPELRepair 与优化后的   BPELRepair 的计算开销; OC   表示使用某个策略后        BPELRepair 的优化率,
                 average 表示  6  个实验程序的平均优化率, 反映了优化策略的有效性. 由表              8  可知如下.

                                            表 8    补丁生成优化策略的有效性评估结果

                  Computation  Optimization  Optimization  Car-  Loan-  Quote-  Smart-  Supply-  Travel-
                                                                                                  Average
                     cost      strategy  effectiveness  Estimate  Approval  Process  Shelf  Customer  Agency
                                           Original  136.67   92.09  123.98  261.54  75.12  244.94  -
                               TMS        Optimized   29.00   32.08  28.96  49.92   20.97  63.42    -
                                         OC TMS       78.78   65.16  76.61  80.91   72.09  74.11   74.61
                                            #Match  (%)
                    #Match
                                           Original  119.30   83.13  108.90  227.39  66.67  216.41  -
                               OPSS       Optimized   98.47   67.92  89.31  186.51  50.78  177.55   -
                 例执行优化率分别为
                                           #Match  (%)
                                           OC OPSS    17.46   18.29  17.98  17.97   23.83  17.95   18.91
                                           Original   83.64   75.57  43.96  103.74  45.91  127.45   -
                               OPSS       Optimized   79.47   64.52  35.81  84.18   41.92  106.36   -
                                         OC OPSS      4.99    14.62  18.53  18.85   8.69   16.54   13.70
                                            #Patch  (%)
                    #Patch
                                           Original   81.50   69.53  38.34  87.28   43.51  112.86   -
                               HOPS       Optimized   65.35   66.34  29.38  80.29   38.18  107.69   -
                                            #Patch  (%)
                                           OC HOPS    19.81   4.59   23.35   8.01   12.26   4.58   12.10
                                           Original  133.30  218.58  115.03  491.37  90.42  474.07  -
                               OPSS       Optimized  130.37  184.87  102.46  446.69  82.62  453.66  -
                                           #Validation  (%)
                                          OC OPSS     2.20    15.42  10.92   9.09   8.63    4.31   8.43
                  #Validation
                                           Original  114.07  117.06  68.64  323.78  67.81  210.37   -
                               HOPS       Optimized  108.10  110.79  60.56  313.13  59.18  195.06   -
                                        OC HOPS       5.23    5.36   11.76   3.29   12.72   7.28   7.61
                                           #Validation  (%)

                    ● 模板匹配优化策略       TMS  有效减少变异算子搜索匹配开销. 6          个实验程序的平均变异算子搜索匹配优化率
                 为  74.61%; 其中  SmartShelf 程序的优化率为  80.91%, 意味着极大地减少了搜索匹配次数.
                    ● 修复操作子集优化策略         OPSS  减少了变异算子搜索匹配次数、验证的候选补丁数与测试用例执行数, 平均
                 优化率分别为     18.91%、13.70%  与  8.43%.
                    ● 历史修复操作优化策略        HOPS  减少了验证的候选补丁数与测试用例执行开销. 具体说来, 平均减少                     12.10%
                 候选补丁验证开销、7.61%       的验证候选程序测试用例执行开销. 实验结果验证了历史故障类型可能再次发生的假
                 设合理性, 优先检查历史修复操作生成的候选程序可以更快地找到正确修复程序.
                    表  9  总结了所提测试用例选择优化策略的评估结果. 具体说来:
                    ● 测试用例选择策略       DFTS  与  VFTS  可以减少测试用例执行开销: 相对于随机策略            random  而言, 平均测试用
                                  51.68%  和  53.21%. 上述结果表明: 在故障定位阶段能够检出         BPEL  程序故障的测试用例有
                 较强的无效修复检测能力; 在验证阶段能够检测错误修复的测试用例有较强的检测其他故障修复的能力.
                    ● 测试用例选择策略       CSS  的优化效果不明显: 测试用例执行开销略高于              random; 且策略  DFTS  和  CSS  合并
                 后的优化效果略低于策略         DFTS. 进一步分析发现:
                    (1) 如果当前语句块是故障语句块, 那么优先选择覆盖故障语句块的测试用例一定能够覆盖当前语句块, 相比
                 未覆盖该语句块的测试用例而言, 有更强检测错误修复的能力. 由于无法确定故障语句块的真实位置, 从而无法保
                 证测试用例执行覆盖真实故障语句块. 如果当前语句块不是故障语句块, 那么                        CSS  策略将无法保证覆盖真实的故
   276   277   278   279   280   281   282   283   284   285   286