Page 150 - 《软件学报》2026年第6期
P. 150
刘姝琪 等: 组件感知的安卓应用崩溃自动复现方法 2469
在仅包含堆栈跟踪的 9 个崩溃报告上, CReDroid、CrashTranslator、ReCDroid、ReproBot、Monkey 和 APE 分别
成功复现了 9、8、7、8、4 和 7 个崩溃报告, 对应复现成功率为 100%、89%、78%、89%、44% 和 78%. 在其余
65 个同时包含标题和堆栈跟踪的崩溃报告上, 这些工具分别成功复现了 48、36、25、22、23 和 33 个崩溃报告,
复现成功率分别为 74%、55%、38%、34%、35% 和 51%. 结果表明, CReDroid 和 CrashTranslator 在两类崩溃报
告上的复现能力表现较强. 其中, 如图 7(b) 所示, 在同时包含标题和堆栈跟踪的崩溃报告上, CReDroid 通过额外考
虑标题信息, 相较于仅依赖堆栈跟踪的 CrashTranslator, 复现成功率更高. 图 7(a) 显示, 在仅包含堆栈跟踪信息的
报告上, 尽管 ReCDroid 和 ReproBot 主要依赖复现步骤中的具体操作信息, 但由于堆栈跟踪中包含的崩溃 API 可
能涉及 GUI 控件信息, 它们仍能够一定程度上复现这些崩溃. 然而, 由于标题缺少完整的操作步骤, 它们的复现能
力仍然受限, 成功率相对较低, 如图 7(b) 所示. 此外, 在没有崩溃报告信息作为指导的情况下, Monkey 复现成功率
最低, 这表明随机测试策略难以有效触发特定崩溃; 而 APE 通过构建 GUI 模型, 能够更系统地覆盖应用状态, 提
高测试覆盖率. 为了进一步分析不同工具的互补性, 我们比较了 6 种最先进的技术在这些崩溃报告上的具体表现,
并在图 8 中展示了相同类别工具复现崩溃的共同和独特部分. 结合表 3 的复现结果, 我们发现各工具在崩溃复现
方面能补充其他工具, 并适用于不同的应用场景.
100 100
0 11
90 22 11 22 90 26
80 56 80 45 62 66 65 49
70
70
成功率 (%) 60 100 89 78 89 78 成功率 (%) 60 74
50
50
40
40
30
20 44 30 55 38 34 35 51
20
10 10
0 0
CR CT RD RB MK APE CR CT RD RB MK APE
方法 方法
成功复现 失败复现 成功复现 失败复现
(a) 仅包含堆栈跟踪的崩溃报告 (b) 包含标题和堆栈跟踪的崩溃报告
图 7 在两类崩溃报告上的复现结果
CD CT RD RB MK APE
14 43 1 9 23 7 4 23 17
(a) CReDroid 和 CrashTranslator (b) ReCDroid 和 ReproBot (c) Monkey 和 APE
图 8 同类工具成功复现崩溃的比较
● CReDroid 和 CrashTranslator. CReDroid 和 CrashTranslator 均能处理堆栈跟踪信息, 并推导出到达目标崩溃
页面的路径, 两者复现了 4 个其他所有工具均无法复现的崩溃. 这些崩溃报告的标题中虽包含具体的操作信息, 但
步骤不完整. CReDroid 额外结合标题中操作的指引, 提高了崩溃复现成功率, 相比 CrashTranslator 额外复现了 14
个独特的崩溃报告, 其中 13 个属于同时包含标题和堆栈跟踪的报告. CrashTranslator 在处理堆栈跟踪中带有明显
活动信息的报告时表现较好, 尤其是用户经常操作的功能场景. 例如, 对于 CReDroid 失败崩溃复现的 ID 为 R-26
的 K-9Mail-2612 崩溃报告, 触发崩溃需要用户在删除邮件前先选中目标邮件, CrashTranslator 依赖 LLM 预测操
作, 能正确推荐选中邮件这一关键操作, 从而成功复现崩溃. 然而, CrashTranslator 难以处理堆栈跟踪中应用级别
崩溃信息不足的报告, 例如在 ID 为 R-28 的 Anki-4586 崩溃报告中, 由于缺乏显示的目标崩溃活动信息, Crash-
Translator 无法有效推导触发崩溃的操作序列.
● ReCDroid 和 ReproBot. ReCDroid 和 ReproBot 能够处理崩溃报告的文本复现步骤、标题以及堆栈跟踪应用
级崩溃语句. ReCDroid 采用预定义的语法模式提取具体操作, 适用性较强. 例如, 对于 ID 为 R-28 的 Anki-4586 崩

