论文部分内容阅读
随着移动终端的迅速普及,成千上万的移动应用程序也被开发和使用,它们为我们的工作和生活带来了极大的便利,也逐渐成为我们生活中不可或缺的一部分。但是便利之下往往隐藏着劣质应用带来的风险,因此,对于用户而言,选择优质而可靠的应用非常必要。为了使应用程序从应用市场中脱颖而出,开发者也越来越注重应用的质量。提高应用程序质量的方法有许多,测试就是其中一种有效而常用的方法。移动应用属于典型的事件驱动型应用,具有丰富的图形用户界面(Graphi-cal User Interface,GUI),迭代速度非常快。在每次新版本发布前,开发者通常都会对产品进行回归测试以保证产品功能的正确性,而GUI测试脚本则能够帮助我们自动复用回归测试过程。但在版本迭代过程中、由于各种原因,程序的行为、功能等经常会被修改,这些修改所造成的GUI变更往往会造成相应测试脚本的失效。所以,为了复用针对上一版本的具有丰富领域知识和经验价值的测试脚本,就需要对测试脚本进行维护。目前工业界常用的脚本维护的方法主要依赖于人工,但移动应用增量变更力度小、版本迭代频繁,导致复用脚本所产生的维护成本巨大。可是如果不对测试脚本进行复用,转而重新构建测试脚本,则成本更高。当下,对脚本维护过程进行自动化支持的工作较少,并且需要大量的人工干预,所以我们提出一种基于模型自动维护移动应用测试脚本的方法,尽可能地减少脚本维护过程的代价。本文主要内容包括以下几个方面:1.提出基于模型获取移动应用GUI变更的方法。首先使用现有的建模方法抽取应用的模型信息,并使用完善后的ESM(Event Sequence Model,ESM)描述移动应用的行为模型。然后通过分析移动应用GUI变更以及变更对测试脚本的影响,提出通过比较移动应用变更前后两个版本的模型,获取版本迭代过程中产生的GUI变更。2.提出基于变更自动维护移动应用测试脚本的方法。基于对移动应用测试脚本的分析,给出测试脚本到初始版本模型上的映射,得到需要被修改的测试脚本的范围,然后根据脚本维护动作,直接对需要修改的测试脚本进行维护。3.基于上述方法,实现了原型工具CHATEM(ACHAnge-basedTEstMainte-nanceapproach),CHATEM 使用静动态分析结合人工的方法构建应用的模型,通过对比模型获取变更,根据变更对测试脚本进行维护。为了展示本文方法的效果,我们从安卓应用市场上选取了 16个移动应用,每个应用选取了两个版本进行实验。实验结果显示,CHATEM能够准确地获取到应用的GUI变更,而且在脚本维护过程中,能够很好地保持测试的高覆盖度以及有效地复用原本失效的脚本。实验结果展示了本文方法具有较高的有效性和可用性。