论文部分内容阅读
目前Android商业应用变得越来越庞大,通常具有上百个Activity,并且其GUI也变得愈加复杂,这给测试这类应用带来挑战。现有的自动化测试技术主要关注于提高测试的覆盖率,它们会采用启发式策略或者机器学习算法来指导测试,以达到提高测试覆盖率的目的。然而面对商业应用,这些测试工具往往需要耗费大量时间才能完成对于应用的测试,无法在短时间内给出测试结果以应对具有上线压力的应用。针对现有工具上述局限,我们受并行计算概念的启发,提出在多台测试设备上采用并行测试的方法完成对一个应用的测试,从而提升应用测试的效率,缩短测试耗费的时间。具体而言,本文工作主要包括:1.提出了以Activity为粒度的并行测试技术。该技术将应用的每个Activity划分为一个测试任务,并行地在多台设备上探索这些Activity,以达到并行测试的目的。所有任务通过一个优先级队列进行调度,同时,还采用了路径简化和widget模糊匹配方法来提高重放的效率。2.鉴于以Activity为粒度的并行测试技术需要执行大量的重放,影响测试效率,因此对其加以改进,提出了以GUI子树为粒度的并行测试技术。GUI子树中的每个节点是应用的一个Activity,每个任务实际是从一个特定Activity开始进行测试,探索发现新的Activity。该技术采用BFS与DFS混合的策略来实现并行测试,Bounded-DFS策略指导执行每个任务,BFS策略则动态地从正在执行的任务中划分出新的任务,BFS-DFS的混合策略减少了回溯和重放的开销,提高了测试的效率。3.根据以上两种技术,基于Mesos和Monkey,设计和实现了 ParaAim和ParaDroid两个并行测试工具。两个测试工具采用相同的系统架构,具有很强的可扩展性,能够管理分布在多台主机上的Android测试设备,使它们协作并行地完成对一个应用的测试。4.将ParaAim和ParaDroid与其它两种测试工具在20个国内主流商业应用上进行了实验评估。实验结果表明,ParaAim和ParaDroid通过并行化的方式都加速了对于应用的测试,其中ParaDroid效果尤为突出,随着测试设备的增多,对测试效率能够实现线性的提升。通过实验验证了Android并行测试技术的有效性、可扩展性以及高效性。