Page 119 - 《软件学报》2025年第5期
P. 119

郝蕊 等: 基于事件标记的多粒度结合安卓测试序列约减                                                      2019


                 出框上进行, 在    SimplyDroid  的结构抽象层次树中被视为大枝干中的独立小枝干, 无法进行组合操作的有效区分,
                 导致最终约减效率低下, 用时超过          5 h  且未约减成功.

                                                                                    1 308.52
                              1 300

                              1 100
                                                                                  897.70 815.55
                               900
                                                                                      677.76
                             时间差 (min)  700  504.28                               383.43  537.85

                                    359.61
                               500
                                  221.79                          273.01
                               300   174.28                             156.44
                               100
                              −100
                                  1  3  5  7  9  11  13  15  17  19  21  23  25  27  29  31  33  35  37  39  41  43  45  47  49  51  53  55  57  59  61  63  65
                                                           测试序列标号
                                           图 3 SimplyDroid、TREC  运行时间差展示图

                    此外, 表  2  中也给出了   TREC  对每个测试序列的事件标记执行时间, 对于一些在控件粒度及页面布局粒度上
                 均通过最短路径触发程序崩溃的案例              (序列  63–66), 无需进行事件标记. 对于无需进行数据流依赖分析的测试序
                 列  (序列  55–62), 由于其仅需要通过分析测试脚本格式对环境改变、生命周期相关事件进行识别, 耗时很短, 基本
                 可以忽略. 而对于需要进行数据流依赖分析的测试序列, 其时间也基本小于                       1 min, 对于整个测试序列约减流程效
                 率影响很小.

                 4.4.4    研究问题  4: 多粒度约减效果分析
                    表  3  给出了  TREC  分别在控件粒度约减、页面布局粒度约减上的表现, 其中右侧                   3、5  列分别为约减后序列
                 长度, 括号内给出了约减比例, 右侧          4、6  代表约减总时间. 为了方便说明, 我们后续将控件粒度定义为前期约减,
                 页面布局粒度定义为后续约减. 可以看出, 测试序列在经过前期约减后, 一般可以去除                         69.01%–97.33%  的事件, 而
                 后续约减模块则继续成功对          32  个  (占总数的  48.5%) 的序列进一步约减, 约减比例为        7.69%–89.41%. 特别的, 序
                 列  36、45  在前期约减后依然较长, 分别包括了          85  个和  51  个事件, 它们在后续约减中又被去除        76  和  43  个事件,
                 大大降低了开发者后续程序理解及复现的成本.

                                      表 3 TREC  中控件粒度、页面布局粒度约减效果与效率表

                               控件粒度            页面布局粒度                      控件粒度            页面布局粒度
                 ID 总长度                                      ID 总长度
                             长度    时间 (min)   长度    时间 (min)             长度    时间 (min)   长度     时间 (min)
                  1   98  12 (87.76%)  103.27  12 (0)  196.83  14  68  3 (95.59%)  4.89   3 (0)    0.08
                  2   98  13 (86.73%)  94.64  12 (7.69%)  363.92  15  87  12 (86.21%)  490.86  3 (75%)  77.99
                  3  141  12 (91.49%)  276.06  12 (0)  178.87  16  66  11 (83.33%)  77.07  6 (45.45%)  91.73
                  4  106  12 (88.68%)  96.49  12 (0)  158.77  17  124  8 (93.55%)  2 007.09  5 (37.5%)  54.82
                  5   64  12 (81.25%)  81.59  12 (0)  131.62  18  61   5 (91.8%)  25.05   5 (0)   25.05
                  6  104  12 (88.46%)  165.38  12 (0)  130.72  19  52  5 (90.38%)  21.43  5 (0)   12.64
                  7  146  14 (90.41%)  151.71  14 (0)  166.87  20  50   5 (90%)  19.52    5 (0)   22.29
                  8  101  12 (88.12%)  191.02  12 (0)  193.20  21  61  5 (91.8%)  17.12   5 (0)   39.38
                  9   73   3 (95.89%)  99.11  3 (0)    0.41  22   83   5 (93.98%)  15.69  5 (0)   22.29
                 10   41   9 (78.05%)  220.65  8 (11.11%)  75.93  23  63  8 (87.3%)  43.99  5 (37.5%)  136.65
                 11   49   3 (93.88%)  18.36  3 (0)    0.08  24   49   9 (81.63%)  229.45  9 (0)   2.63
                 12   48   3 (93.75%)  13.99  3 (0)    0.08  25   64   9 (85.94%)  155.52  9 (0)   0.76
                 13   70   3 (95.71%)  9.13   3 (0)    0.07  26   64  11 (82.81%)  163.99  11 (0)  0.98
   114   115   116   117   118   119   120   121   122   123   124