论文部分内容阅读
随着移动互联网时代的到来,大量的计算任务从PC端迁移到移动端,移动应用开始发挥越来越重要的作用。在移动应用市场中Android应用已占据主导地位,随着Android应用数量的增加,如何保证Android应用的健壮性引起了工业界的关注。测试是提高软件质量的有效途径,由于Android应用是一种GUI程序,Android应用GUI测试往往是进行其他测试分析技术的基础。传统的Android应用GUI测试通过人工操纵应用来实现,然而人工测试方式需要消耗大量的时间和精力,且容易引入错误,已无法满足测试需求,因此,自动化测试技术成为了新的研究热点。 GUI自动化测试工具通过向应用发送事件来模拟用户与应用的交互,达到特定的测试目的。现有的自动化测试工具普遍存在两点不足:1)自动测试过程无法生成有效的输入和交互事件序列,导致部分功能无法覆盖到,测试覆盖率不高;2)自动化测试过程执行了大量无效事件,导致测试效率不高。无效事件即事件执行后不能提高测试覆盖率的事件。本文针对以上两个问题给出了相应的解决方案,并设计实现了Android应用GUI自动化测试原型工具。其中测试输入生成方法和基于优先级调整的自动探测算法是本文研究的重点。测试输入生成方法的关键问题是如何获取有效的测试输入信息,并用于自动化测试过程。本文首先通过自动化脚本录制工具来录制包含特定输入的测试脚本,然后解析执行测试脚本,提取其中的特定输入并保存,接着在自动化测试过程中,通过控件属性匹配来使用这些输入信息。基于优先级调整的自动化遍历算法的关键问题是如何减少无效事件生成和冗余事件的重复执行。本文从界面布局文件中提取控件属性信息,然后根据控件的属性信息来生成对应事件,减少了无效事件的比例。本文基于应用界面的布局结构特点提出了事件相似性的概念,通过为事件定义优先级属性,并在自动化测试过程中根据事件的执行结果来调整未执行的相似事件的优先级,从而减少冗余事件的执行,有效的提高了测试效率和测试覆盖率。 论文随后详细介绍了Android应用自动化测试原型工具——CrawlDroid的设计与实现,并通过充分的实验验证了CrawlDroid工具的有效性。