摘要:在敏捷开发与持续交付模式的推动下, 安卓应用的迭代周期日益缩短, 测试时间窗口被大幅压缩. 分布式测试扩展测试资源以提升并行执行能力, 有效保障了在高速迭代中安卓应用的交付质量. 尽管目前已有诸多工具致力于优化单设备上的测试效果, 但如何在有限资源和时间条件下进一步提升安卓应用自动化测试的并行效率, 仍然是一个亟待解决的关键问题. 提出一个名为Distroid的分布式自动化测试框架, 该框架对整体状态空间进行划分, 并引导各设备在测试过程中分别探索不同的UI子区域, 从而实现对安卓应用的自适应探索. 基于此协同机制, Distroid在每台测试设备上实施双层引导以提升测试质量与效率: 一方面, 通过好奇心驱动的强化学习构建高质量操作序列, 编码复杂用户交互的时序逻辑关系, 其奖励函数整合应用状态相似度计算方法, 在探索过程中提供底层引导. 另一方面, 为了避免陷入局部最优, Distroid在运行时逐步构建一个确定性有限自动机(deterministic finite automaton, DFA), 为测试提供高层次引导, 从而进一步提升测试效率与质量. 为验证Distroid的有效性, 在30款真实安卓应用上对其进行评估. 实验结果表明, Distroid在故障检测率、代码覆盖率和测试效率方面, 均优于现有最先进的安卓应用测试方法. 此外, Distroid共检测出41个故障, 其中26个此前尚未被报告.