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 操作方面存在局限性, 虽然支持点击、长按、输入和旋转等操作, 但某些崩溃触发条件需

