论文部分内容阅读
近年来,移动设备在人们日常生活中的角色越来越重要,大量的移动应用被开发出来,极大地方便了人们的生活。移动应用的质量保证成为一个亟需解决的热点问题。不同于传统的桌面应用(往往是键盘和鼠标驱动的),大多数移动应用是触控手势驱动的,这样的交互方式对于人们来说相当自然。然而,现有的测试技术难以在测试时刻获取当前可能的相关手势,产生手势事件以实现高效的测试也就成为了一个挑战。现有测试技术对于手势的引入,主要有三种策略:(1)完全不考虑除了点击操作之外的手势,(2)向待测应用随机投放手势,(3)在待测应用上枚举全部手势。显然,第(1)种和第(2)种策略都会极大地造成测试的不完全,而第(3)种策略则受困于效率问题。因此,为了实现手势支持下的高效测试,需要一种新的技术。具体而言,本文的主要工作包括以下方面:1.本文关注安卓(Android)这一使用范围最广的移动应用平台。通过一个小规模的学习,本文总结并对安卓应用中手势识别的方式进行了分类。2.基于以上学习结果,本文设计了一套静态分析技术来获取安卓应用的手势信息:每个用户界面(UI)组件可能接受并处理的手势。基于静态分析的结果,相比枚举全部手势,本文可以进行手势定向投放,从而减少在自动测试时刻投放的手势总数。3.本文设计了一套安卓应用的自动化动态测试技术,以深度优先搜索为基础,支持不同的手势投放策略,以更好地展现不同策略下的测试结果。这套自动化测试技术解决了安卓应用测试中的若干具体问题。4.基于以上的静态分析和自动化动态测试技术,本文实现了一个原型系统,叫做GAT。建立在五个演示(demo)应用和九个真实应用上的实验表明,GAT可以高效对安卓应用展开测试,覆盖更多的代码,并暴露出更多的手势相关软件故障(bug)。