一种移动终端上应用程序的自动化测试方法及装置的制作方法

文档序号:6399659阅读:155来源:国知局
专利名称:一种移动终端上应用程序的自动化测试方法及装置的制作方法
技术领域
本发明涉及移动终端测试领域,尤其涉及一种应用程序的自动化测试方法及装置。
背景技术
目前,移动互联网蓬勃发展。因为移动互联网的快速发展,移动终端上的应用程序开发也有巨大的市场。仅就安卓(Android)系统的应用程序来说,其日分发量已经突破了2000万。移动终端的用户可以在移动互联网上自由下载、安装多种多样、功能各异的应用程序,这为移动终端的用户带来了丰富的用户体验。但是,这些层出不穷的应用被开发完成后,在投放市场前一定要经过测试来验证它们的有效性、安全性等等。仅仅通过人工来测试这些应用程序的成本过高,因此就产生了应用程序的自动化测试工具。活动(Activity)对象是安卓(Android)应用程序开发中十分重要的一类对象。活动对象是能够提供用户可以操作的界面的一类应用程序组件。在安卓(Android)软件环境中,应用程序是由一组活动对象组成的,而每个活动对象不但是本应用程序的组成部分,而且也对外开放,可以向同一系统内任何一个外部应用程序提供服务。因为活动对象在安卓应用程序中的重要性,很多应用程序自动化测试工具以活动对象作为自动化测试的对象。有这样一些活动对象,在其实现过程中调用了会造成移动终端关机或者重启的函数。由于这些调用,对这些活动对象的自动化测试的过程可能因为其所引起的关机或者重启而中断。其结果是,应用程序的测试员必须手动重启自动化测试过程,并手动跳过对这些活动对象的自动化测试。这样,原本十分方便、快捷的自动化测试过程变得十分麻烦。

发明内容
本发明的目的在于提出一种移动终端上应用程序的自动化测试方法及装置,以避免在自动化测试过程中不必要的关机和重启。为达此目的,本发明采用以下技术方案:—种移动终端上应用程序的自动化测试方法,所述方法包括:读取记录所有待测试对象的名称的配置文件,并将所有待测试对象的名称存储至对象链表;列出所有待测试对象的名称的列表,根据用户输入选择待测试对象中其测试会引起系统关闭或者测试过程停止的对象,并从对象列表中删除被选中的对象;启动自动化测试过程; 加载对象列表中的待测试对象;对对象列表中的待测试对象进行自动化测试。进一步的,所述移动终端的操作系统是安卓(Android)操作系统。进一步的,所述记录所有待测试对象的名称的配置文件是安卓清单(AndroidManifest)文件。
进一步的,所述待测试对象是活动(Activity)对象。对应的,本发明还提供了一种移动终端上应用程序的自动化测试装置,所述装置包括:配置文件读取模块,用于读取记录所有待测试对象的名称的配置文件,并将所有待测试对象的名称存储至对象链表;测试对象选择模块,用于为用户列出所有待测试对象的名称的列表,由用户根据经验选择待测试对象中其测试会引起系统关闭或者测试过程停止的对象,用户完成选择后,从对象列表中删除被选中的对象;测试程序启动模块,用于启动自动化测试过程;待测试对象加载模块,用于加载对象列表中的待测试对象;自动化测试模块,用于对对象列表中的待测试对象进行自动化测试。进一步的,所述移动终端的操作系统是安卓(Android)操作系统。进一步的,所述记录所有待测试对象的名称的配置文件是安卓清单(AndroidManifest)文件。进一步的,所述待测试对象是活动(Activity)对象。本发明方法及装置的有益效果在于,采用本发明的方法及装置能有效的避免对一些活动对象进行自动化测试时产生的系统关闭或者测试过程停止的问题,提高测试效率;测试程序运行在个人电脑上,并通过与移动终端的数据连接控制对移动终端的测试,有利于用户按测试需求更改被测试的对象。


图1是本发明的第一实施例提供的移动终端上应用程序的自动化测试方法的流程图。图2是本发明的第二实施例提供的移动终端上应用程序的自动化测试装置的结构示意图。
具体实施例方式下面结合附图并通过具体实施方式
来进一步说明本发明的技术方案。图1示出了本发明的第一实施例。图1是本发明的第一实施例提供的移动终端上应用程序的自动化测试方法的流程图。在步骤SlOl中,读取记录所有待测试对象的名称的配置文件,并将所有待测试对象的名称存储至对象链表。在安卓(Android)操作系统下,每个应用程序要在系统中启动和运行,都必须在其根目录下有一个名称为安卓清单(Android Manifest)的使用可扩展标记语言(XML)编写的配置文件。所述安卓清单配置文件定义了应用程序及其组件的结构和元数据。具体的,所述安卓清单配置文件包含了组成应用程序的每一个组件的节点,并使用意图过滤器(IntentFilter)和权限(Authority)来确定这些组件之间以及这些组件和其他应用程序是如何交互的。
自动化测试过程开始时,从所述安卓清单配置文件中读出所有组成所述应用程序的活动对象的名称,并将所述活动对象的名称存储在对象链表中,以准备对所述活动对象的自动化测试。读取活动对象名称时,应该首先在所述安卓清单配置文件中找到所述的活动(Activity)节点,然后从所述活动节点中读取所述应用程序包括的每一个活动(Activity)对象的名称,并将读出的活动对象的名称存储在一个链表中。所述链表被用于存储要测试的应用程序中所有的活动对象的名称,为后续的自动化测试提供测试的目标。在步骤S102中,为用户列出所有待测试对象的名称的列表,根据用户输入选择待测试对象中其测试会引起系统关闭或者测试过程停止的对象,并从对象列表中删除被选中的对象。在安卓系统的应用程序中,有一些应用程序的活动对象的运行会引起系统关闭或者自动化测试过程的停止。例如,带有定时关机功能的应用程序的运行就可能导致系统关闭。对这些应用程序进行自动化测试的过程中,所述的应用程序难免运行至会引起所述问题的程序段,造成移动终端的操作系统关闭,或者所述自动化测试过程的停止。发生了这样的情况,测试人员只能手动停止自动化测试的过程,重启移动终端及所述自动化测试过程,并在所述自动化测试过程被重启后手动的跳过会引起问题的活动对象的测试。显然,这样的操作十分麻烦。因此,我们在获取应用程序的所有活动对象后,将所有的活动对象用列表的形式列出,让用户从中选择中会引起系统关闭及自动化测试过程的停止的应用程序。用户的选择过程主要依据用户对应用程序的先验知识及以往对活动对象进行测试的经验。用户完成上述选择步骤后,对自己完成的选择进行确认。确认完成后,所述自动化测试过程将用户选择的应用程序从对象列表中删除。在步骤S103中,启动自动化测试过程。完成了待测试的活动对象的准备之后,启动自动化测试过程。所述自动化测试程序根据MonkeyRunner框架编写,属于功能测试程序。所述MoneyRunner框架是安卓软件开发工具包(Android SDK)自带的自动化测试程序开发工具,利用MonkeyRunner可以开发出快捷、易用的移动终端功能测试程序。所述自动化测试程序运行在个人电脑上,通过与所述移动终端之间的数据连接来控制所述移动终端,对所述移动终端进行测试。所述自动化测试程序可以由预先编写好的测试脚本驱动,也可以由用户在命令行交互窗口输入命令来实时驱动。在步骤S104中,加载对象列表中的待测试对象。所述自动化测试过程启动后,便需要加载待测试的活动对象。经过步骤SlOl中的读取和步骤S102中的选择,已经获取了存储着待测试的活动对象的对象列表。因此,在所述自动化测试过程启动后,加载所述的已经准备好的对象列表。对所述自动化测试过程来说,加载所述对象列表的过程就是读入对象列表的过程。在本发明的第一实施例中,为了提高所述自动化测试过程的效率,对所述对象列表的读入过程采取一次性读入整个对象列表的方法,而不采用对列表中的活动对象逐一读取的方法。
在步骤S105中,对对象列表中的待测试对象进行自动化测试。将作为测试对象的活动对象的列表读入后,便开始对待测试对象的自动化测试。本发明方法是对移动终端上的应用程序的功能性测试方法,主要通过对活动对象中定义的各种用于界面交互的对象进行随机操作来实现。例如,在待测试的活动对象中定义了一个按钮对象,所述自动化测试程序会随机的点击所述按钮对象。又例如,在待测试的活动对象中定义了一个文本框对象,所述自动化测试程序会随机的对所述文本框对象输入文本。自动化测试开始时,所述自动化测试程序首先读取待测试的活动对象中所有用于界面交互的对象的名称,然后对所述用于界面交互的对象进行随机的操作。所述随机操作是被操作的用于界面交互的对象可以接受的。例如,所述自动化测试程序不会对按钮对象输入文本。所述随机操作是由所述自动化测试程序随机生成的,并不考虑用户平时的输入习惯。这一点主要是出于被测试应用程序的健壮性的考虑,使得通过所述自动化测试程序测试的应用程序能够应对多种异常的来自用户的输入数据。所述随机操作的海量和频繁的。之所以放弃人工测试而采用自动化测试,正是由于自动化测试的高效性。所述自动化测试程序会在较短的时间段内生成大量的随机操作,以此来测试待测试的活动对象的正确性和健壮性。所述自动化测试程序包括日志记录器。在所述自动化测试程序运行的同时,所述日志记录器记录自动化测试运行的日志。所述日志中记录自动化测试程序运行的关键步骤,自动化测试过程中出现的异常(Exception),自动化测试程序报出的各种警告(Warning)和错误(Error)等关键信息。本实施例通过在自动化测试程序启动前,先将待测试的对象的列表显示给用户,由用户从中取消阻碍自动化测试程序顺畅运行的待测试对象的方法,实现了自动化测试程序的顺畅运行,避免了在对一些待测试对象进行自动化测试的过程中出现系统关闭或者自动化测试过程停止的情况。图2示出了本发明的第二实施例。图2是本发明的第二实施例提供的移动终端上应用程序的自动化测试装置的结构示意图。所述移动终端上应用程序的自动化测试装置包括配置文件读取模块201、测试对象选择模块202、测试程序启动模块203、待测试对象加载模块204及自动化测试模块205。所述配置文件读取模块201用于读取记录所有待测试对象的名称的配置文件,并将所有待测试对象的名称存储至对象链表。所述配置文件是安卓清单(Android Manifest)配置文件。所述安卓清单配置文件定义了应用程序及其组件的结构和元数据。活动对象是应用程序的一种重要组件,因此每一个活动对象的名称及其相关属性都被记录在所述安卓清单(Android Manifest)配置文件中。所述配置文件读取模块201用于从所述安卓清单配置文件中读取每个待测试的活动对象的名称,并将读取到得活动对象的名称都存储在对象链表中。所述的读取过程是首先从安卓清单配置文件中找到活动(activity)节点,再从所述活动节点中读取每一个活动对象的名称,并将所有读取到的活动对象的名称存储在对象链表中。
所述测试对象选择模块202用于列出所有待测试对象的名称的列表,根据用户输入选择待测试对象中其测试会引起系统关闭或者自动化测试过程停止的对象,并从对象列表中删除被选中的对象。所述测试对象选择模块202首先在程序界面上为用户列出由所述配置文件读取模块201读取的待测试的活动对象的名称。用户在列出待测试的活动对象的列表中选择会引起系统关闭和自动化测试过程停止的活动对象。被选中的活动对象被从待测试的活动对象的列表中删除。所述测试程序启动模块203用于启动自动化测试过程。所述自动化测试过程是执行本发明方法,对移动终端上的应用程序进行功能测试的过程。更具体的,所述自动化测试过程是对所述应用程序的活动对象进行功能测试的过程。由于经过所述配置文件读取模块201及所述测试对象选择模块202的处理,已经得到了构成被测试应用程序的,并且其测试不会造成系统关闭或者自动化测试过程停止的活动对象的链表,所以可以启动所述自动化测试过程。所述待测试对象加载模块204用于加载对象列表中的待测试对象。加载所述对象列表中的待测试对象的过程就是读取对象列表的过程。为了提高所述自动化测试程序的效率,对所述对象列表的读入过程采取一次性读入整个对象列表的方法,而不采用对列表中的活动对象逐一读取的方法。所述自动化测试模块205用于对对象列表中的待测试对象进行自动化测试。所述自动化测试模块模拟用户的各种输入操作,对应用程序的活动对象进行功能测试。例如,对活动对象中定义的按钮对象,所述自动化测试模块模拟用户的点击操作;对活动对象中定义的文本框对象,所述自动化测试模块模拟用户的文本输入操作。所述自动化测试模块包括一个日志记录器。在所述自动化测试模块对所述活动模块进行测试时,所述日志记录器记录所述自动化测试程序运行的日志。所述日志中记录自动化测试程序运行的关键步骤,自动化测试过程中出现的异常(Exception),自动化测试程序报出的各种警告(Warning)和错误(Error)等关键信息。本实施例通过添加测试对象选择模块,使得用户可以在自动化测试运行前对需要测试的活动对象进行选择,避免了因为对一些活动对象的功能测试引起的系统关闭或者测试过程停止,有效的提高了自动化测试的效率。显然,本领域技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种移动终端上应用程序的自动化测试方法,其特征在于,所述方法包括: 读取记录所有待测试对象的名称的配置文件,并将所有待测试对象的名称存储至对象链表; 列出所有待测试对象的名称的列表,根据用户的输入选择待测试对象中其测试会引起系统关闭或者测试过程停止的对象,并从对象列表中删除被选中的对象; 启动自动化测试过程; 加载对象列表中的待测试对象; 对对象列表中的待测试对象进行自动化测试。
2.根据权利要求1所述的移动终端上应用程序的自动化测试方法,其特征在于,所述移动终端的操作系统是安卓(Android)操作系统。
3.根据权利要求1所述的移动终端上应用程序的自动化测试方法,其特征在于,所述记录所有待测试对象的名称的配置文件是安卓清单(Android Manifest)文件。
4.根据权利要求1所述的移动终端上应用程序的自动化测试方法,其特征在于,所述待测试对象是活动(Activity)对象。
5.一种移动终端上应用程序的自动化测试装置,其特征在于,所述装置包括: 配置文件读取模块,用于读取记录所有待测试对象的名称的配置文件,并将所有待测试对象的名称存储至对象链表; 测试对象选择模块,用于列出所有待测试对象的名称的列表,根据用户输入选择待测试对象中其测试会引起系统关闭或者测试过程停止的对象,并从对象列表中删除被选中的对象; 测试程序启动模块,用于启动自动化测试过程; 待测试对象加载模块,用于加载对象列表中的待测试对象; 自动化测试模块,用于对对象列表中的待测试对象进行自动化测试。
6.根据权利要求5所述的移动终端上应用程序的自动化测试装置,其特征在于,所述移动终端的操作系统是安卓(Android)操作系统。
7.根据权利要求5所述的移动终端上应用程序的自动化测试装置,其特征在于,所述记录所有待测试对象的名称的配置文件是安卓清单(Android Manifest)文件。
8.根据权利要求5所述的移动终端上应用程序的自动化测试装置,其特征在于,所述待测试对象是活动(Activity)对象。
全文摘要
本发明公开了一种移动终端上应用程序的自动化测试方法及装置。根据本发明方法,首先读取记录所有待测试对象的名称的配置文件,并将所有待测试对象的名称存储至对象链表;列出所有待测试对象的名称的列表,根据用户的输入选择待测试对象中其测试会引起系统关闭或者测试过程停止的对象,并从对象列表中删除被选中的对象;启动自动化测试过程;加载对象列表中的待测试对象;对对象列表中的待测试对象进行自动化测试。采用本发明方法及装置,能有效避免因为对一些活动对象的功能测试引起的系统关闭或者测试过程停止,提高自动化测试的效率。
文档编号G06F11/36GK103164336SQ20131005755
公开日2013年6月19日 申请日期2013年2月22日 优先权日2013年2月22日
发明者刘文杰 申请人:广东欧珀移动通信有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1