论文部分内容阅读
电子移动设备的快速发展,使得移动应用软件已经拥有了大量的用户群体。现在的手机操作系统市场主要由Android和iOS占据。Android系统受益于其开源性和跨平台性,近几年来已经逐步占据了大部分的市场份额。根据最新统计,Android系统已经拥有了87.7%的市场,成为了最受欢迎的移动端设备。Android应用程序(以下简称App)的运行是基于事件驱动的模型,在运行过程中大量使用了消息队列等函数回调的方法。这使得传统的测试技术不适用在这类应用程序上,导致开发者难以保证程序的质量。现有的相关测试工作将焦点放在App运行的正确性、稳定性和占用系统性能资源的合理性上,却忽略了App在运行过程中的流畅性。并且现有的性能测试工作虽然能发现CPU异常、内存泄漏、资源未释放等问题,但测试手段通常采用手工执行的方式。由于现有的Android应用软件大部分都是使用了敏捷开发模式,具有快速开发、持续迭代的特点。因此若继续使用手工测试,不但重复工作量大,而且存在较多的不稳定性,难以保证每次测试的全面性。因此,针对上述问题和挑战,本文提出了基于GUI的Android自动化性能测试框架PerDroid。PerDroid有效结合传统自动化测试和性能测试,着重关注App在运行时出现的流畅性问题。为解决这一问题,本文提出了基于页面相似度的反馈性随机遍历方法,自动化遍历App,发现运行过程中的性能问题。PerDroid尝试通过自动化遍历探索App的各个页面状态,尽可能保证测试过程中的全面性。在自动化遍历过程中,PerDroid会记录App运行时丢失的帧数信息和App生命周期迁移中所有回调方法的执行时长,并在遍历完成后结合遍历行为对数据进行分析,以定位引起页面不流畅问题的原因。在实验部分,本文选择抽取了相关工作中的Benchmark和F-Droid中的App进行实验。实验表明,该技术能更多的遍历App的状态,发现App在运行过程中出现的性能问题,取得良好的效果。同时,本文也实现了自动化性能测试工具PerDroid。PerDroid可以自动化的完成对程序的插桩,安装,运行,执行自动化测试,收集运行时的数据,分析并得到性能报告结果。报告可展现所有在程序运行时出现的不流畅问题的状态和原因,提供给开发者恢复问题场景。并在实验部分验证了PerDroid可以有效提高测试的可靠性和有效性,并且降低性能测试的成本。