Page 147 - 《软件学报》2026年第6期
P. 147

2466                                                       软件学报  2026  年第  37  卷第  6  期


                 具之间的表现差异.
                    针对  RQ3, 我们重点分析自适应控件评分模块对成功崩溃复现的贡献. 该模块通过动态调整                           GUI 控件的选择
                 优先级, 影响方法的整体性能. 考虑到探索优化分数在避免局部最优解方面的重要性, 移除该分数可能导致探索陷
                 入困境, 因此本研究仅评估其他两个分数的独立贡献. 具体而言, 自适应控件评分模块主要设计自适应评分策略根
                 据当前页面与崩溃组件的上下文关系来为               GUI 控件计算分数, 包含以下两部分: 页面可达分数, 通过              CTG  预测下
                 一个可达目标组件, 用于预测页面间的可达性; 语义相似度分数, 基于崩溃报告标题中的关键词和崩溃堆栈中的类
                 依赖, 评估  GUI 控件与目标崩溃的相关性. 基于此, 设计了           CReDroid 的  3 个变体, 用以分析模块各部分的独立贡献,
                 即, 1) CD wc , 移除了  CTG  预测页面可达分数的功能; 2) CD wt , 不使用崩溃报告标题计算语义相似度分数; 3) CD wa ,
                 不设置自适应策略对       GUI 控件进行评分.
                    针对  RQ4, 为验证使用     CReDroid  生成的复现步骤的有效性, 我们设计了与手动复现崩溃的对比实验. 实验
                 邀请了   12  名研究生参加评估, 他们均具有至少          6  个月的安卓测试开发经验. 我们要求这些参与者根据堆栈跟踪
                 或由  CReDroid  生成的复现步骤, 以及崩溃标题信息, 尝试手动复现              CReDroid  成功复现的   57  个崩溃报告. 每个
                 参与者被分配     15  个崩溃报告, 分别基于堆栈跟踪和标题信息, 以及              CReDroid  生成的复现步骤和标题信息尝试
                 手动复现. 并且确保每份崩溃报告均由             3  名参与者复现, 以确保实验结果的可靠性. 所有崩溃报告对应的应用均
                 已安装, 不同参与者复现相同崩溃报告时, 所使用的模拟器设备和系统版本保持一致. 与现有研究设立的规则一
                 致, 实验过程中, 参与者记录理解和复现每份崩溃报告所需要的时间, 并限定每份报告的复现时间为                                30 min. 如
                 果超过限定的时间仍未复现成功, 则标记为复现失败. 基于复现崩溃成功率和成功复现所需的平均时间, 我们对
                 两种复现方式的表现进行了比较, 包括基于堆栈跟踪和标题信息复现崩溃, 以及基于                            CReDroid  的复现步骤和标
                 题信息复现崩溃.
                  4   实验结果分析


                    RQ1: CReDroid  在崩溃复现有效性与效率上分别表现如何?
                    表  2  展示了  CReDroid  与基准方法在复现     3  个数据集崩溃报告方面的成功率, 其中, CD、CT、RD、RB、
                 MK  和  APE  分别为方法  CReDroid、CrashTranslator、ReCDroid、ReproBot、Monkey  和  APE. 总体而言, 在限定
                 的  1 h  测试时间内, CReDroid  成功复现了全部      74  个崩溃报告中的     57  个  (77.03%), 相较于  CrashTranslator、
                 ReCDroid、ReproBot、Monkey  和  APE  分别多复现了   13  个  (17.57%)、25  个  (33.78%)、27  个  (36.49%)、30  个
                 (40.54%) 和  17  个  (22.97%) 崩溃报告. 这表明, CReDroid  能够有效地利用崩溃报告中的标题和堆栈跟踪进行崩溃
                 复现. 具体来说, CReDroid  在  ReCDroid  数据集上成功复现了     29  个  (87.88%) 崩溃报告, 与  CrashTranslator 表现相
                 当, 而其他基准方法的成功率仅在          45.45%–63.63%  之间. 在  AndroR2  和  CrashTranslator 数据集上, CReDroid  的崩
                 溃复现成功率分别达到        61.9%  和  75%. 相比之下, 除了  APE  在  CrashTranslator 数据集上的表现与  CReDroid  持平
                 外, 其他基准方法在这两个数据集上的复现成功率均不高于                    50%, 其中最低甚至仅为       14.29%. 进一步分析表明,
                 ReCDroid  数据集中的崩溃报告涉及的复现探索步骤相对较少, 因此所有方法在该数据集上的复现成功率均较高.

                                                  表 2 复现成功率     (有效性)

                         #数据集             CD          CT        RD          RB        MK         APE
                    ReCDroid数据集 (33)       29         26         21         19         15         21
                    AndroR2数据集 (21)        13         8          4          3          4          5
                  CrashTranslator数据集 (20)  15         10         7          8          8          14
                        共计 (74)        57 (77.03%)  44 (59.46%)  32 (43.24%)  30 (40.54%)  27 (36.49%)  40 (54.05%)

                    对于  CReDroid  未能成功复现的    17  个崩溃报告, 主要原因可总结为以下          3  个方面. 一是测试环境兼容性问题,
                 部分应用无法在我们的测试环境中正常运行, 例如                  AndroR2  数据集中的    cgeo-7369  无法与模拟器兼容. 二是
                 CReDroid  在交互式  GUI 操作方面存在局限性, 虽然支持点击、长按、输入和旋转等操作, 但某些崩溃触发条件需
   142   143   144   145   146   147   148   149   150   151   152