手机应用自动化测试方法及***
技术领域
本发明涉及应用测试领域,尤其涉及一种手机应用自动化测试方法及***。
背景技术
随着智能手机大规模上市,作为主流的Android手机也日益普及。开发Android应用的个人和企业也越来越多,如何对手机应用进行快速高效测试成为日益迫切的问题。
目前对手机应用的测试有以下几种:
一是,靠人工测试,由测试人员手工操作测试应用完成测试工作。
二是,基于图片识别技术,编写测试脚本中包含图片元素,通过识别指定的图片定位到手机应用的位置进行操作实现自动化测试工作。
三是,开发者通过了解应用的源码编写测试用例进行测试,属于白盒测试。
上述方法存在以下缺陷:
第一种人工测试的方法方式耗费人力,效率低下,不适合大规模测试使用。
第二种基于图片识别技术的自动化方式,由于脚本执行的成功与否很大程度上依赖于图片的识别,如果图片背景发生变化(如手机主题不一致、或应用位置变化)会导致无法找到指定的图片而无法定位到手机应用的位置,导致执行失败。所以这种方式编写的脚本只能针对同一型号手机执行,需要人工维护的成本比较高。
第三种,手机应用的白盒测试方式需要了解具体手机应用的源码,所以对所测试的应用有一定的限制,即只能测试对测试人员而言开源的应用。另一方面白盒测试的方式对测试人员要求较高,需要有一定的android基础知识,不适用普通测试人员。同时由于需要读懂源码比较耗时,效率不高。
因此,现有技术存在缺陷,需要改进。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述耗费人力、不适合大规模测试、适用性狭窄、效率不高等缺陷,提供一种手机应用自动化测试方法及***。
本发明解决其技术问题所采用的技术方案是:构造一种手机应用自动化测试方法,基于Android手机实现,所述方法通过计算机界面接收测试命令并在手机上实现批量应用的自动化测试,所述方法包括以下步骤:
S1、建立手机与计算机之间的通信连接,并建立计算机对手机的远程控制;
S2、在计算机端操作将待测试的应用安装于手机端;
S3、计算机端获取步骤S2中安装于手机端的所述待测试的应用在测试中涉及到的组件信息,如果存在下一个待测试的应用则转步骤S2;
S4、对应于步骤S2中安装的每个所述待测试的应用,测试人员根据对应的所述组件信息利用脚本工具编写对应的测试脚本;
S5、、用户在计算机端输入测试命令,触发计算机内的脚本执行器发送测试脚本到手机端批量执行,完成对步骤S2中安装于手机端的所有待测试的应用的自动化测试。
本发明所述的手机应用自动化测试方法,其中,所述步骤S5包括:
S51、所述脚本执行器触发启动手机端的测试模块;
S52、所述测试模块启动后,所述脚本执行器获取一个测试脚本作为当前待测试脚本;
S53、所述测试模块接收所述脚本执行器转发的当前待测试脚本,并自动执行所述当前待测试脚本的所有步骤;
S54、脚本执行器判断是否存在下一个测试脚本,若是,则选定下一个测试脚本为当前待测试脚本,转步骤S53,否则转步骤S55;
S55、结束测试,所述测试模块返回测试结果至脚本执行器,所述脚本执行器返回测试结果给用户并关闭所述测试模块。
本发明所述的手机应用自动化测试方法,其中,所述步骤S51包括:
S51-1:用户输入测试命令,所述脚本执行器发起一个安装或者设置待测试的应用的请求,并将所述请求经计算机端的远程控制模块转发到手机端的远程控制服务模块;
S51-2:所述远程控制服务模块启动测试工具类;
S51-3:启动所述测试模块中的web服务器和所述测试模块中的所述测试工具类实例化的测试单元;
S51-4:待web服务器和测试单元都成功启动,所述远程控制服务模块经所述远程控制模块通知所述脚本执行器测试模块已经待命,可以开始执行测试命令。
本发明所述的手机应用自动化测试方法,其中,所述步骤S51-3包括:
S51-3-1:启动所述web服务器;
S51-3-2:启动所述测试工具类实例化的测试单元;
S51-3-3:所述测试单元开始启动和监听当前待测试脚本对应的待测试的应用,待所述待测试的应用启动成功,所述测试单元实例化工具类得到Robotium工具;再等待步骤S51-2-1中的所述web服务器启动成功;
S51-3-4:所述web服务器启动成功后,通知所述测试单元,所述测试单元将所述web服务器设置为准备状态;
S51-3-5:所述web服务器通知所述远程控制服务模块HTTP服务进入准备状态,开始接受测试命令,所述测试单元等待所述web服务器启动成功后,通知所述远程控制服务模块所述测试单元成功启动。
本发明所述的手机应用自动化测试方法,其中,所述步骤S53包括:
S53-1:所述脚本执行器选定当前待测试脚本的一个步骤作为当前待测试步骤;
S53-2:所述脚本执行器发送执行当前待测试步骤的测试命令,所述测试命令先后经计算机端的远程控制模块和手机端的远程控制服务模块转发到所述测试模块中的web服务器;
S53-3:所述web服务器解析所述测试命令,然后将所述测试命令转发给所述测试模块中的测试单元处理;
S53-4:所述测试单元根据所述测试命令通过Robotium工具操作当前待测试步骤中组件信息所定位的组件以完成当前待测试步骤;
S53-5:所述测试单元等待当前待测试步骤执行完毕或者出错,返回测试结果给所述web服务器;
S53-6:所述web服务器接收到所述测试结果,并先后经所述远程控制服务模块和远程控制模块转发到所述脚本执行器;
S53-7:所述脚本执行器判断当前待测试脚本是否存在下一个测试步骤,如果是,则选定下一个测试步骤为当前待测试步骤,并转步骤S53-2,否则转步骤S54。
本发明所述的手机应用自动化测试方法,其中,所述步骤S55中所述的关闭所述测试模块包括:
S55-1:脚本执行器发送结束测试命令,所述结束测试命令先后经计算机端的远程控制模块和手机端的远程控制服务模块转发到所述测试模块中的web服务器;
S55-2:所述web服务器通知所述测试模块中的测试单元所述web服务器已经退出,HTTP服务已经关闭;
S55-3:所述测试单元关闭当前待测试脚本对应的应用,并通知测试工具类结束测试。
本发明所述的手机应用自动化测试方法,其中,所述步骤S3中的所述组件信息包括:组件的id、text、name、classname和index,且组件信息的优先级为:id>text>name>classname>index。
本发明所述的手机应用自动化测试方法,其中,所述步骤S4具体包括:根据所述组件信息的优先级筛选优先级最高的组件信息定位所述组件,测试人员直接复制筛选出的组件信息并利用脚本工具编写测试脚本。
本发明还公开了一种手机应用自动化测试***,基于Android手机实现,所述***包括相互之间建立通信的手机与计算机,
所述计算机包括用于与用户交互并执行测试脚本的脚本执行器,和用于解析测试脚本并与手机端进行通信的远程控制模块;
所述手机包括用于与计算机进行通信并管理脚本命令的远程控制服务模块和用于执行测试应用的测试模块。
本发明所述的手机应用自动化测试***,其中,所述测试模块包括:用于解析测试命令的web服务器、用于执行测试命令的测试单元和与所述测试脚本对应的应用。
实施本发明的手机应用自动化测试方法及***,具有以下有益效果:本发明利用计算机控制手机运行应用,根据获取到的手机端的每个应用在测试中涉及到的组件信息,测试人员根据对应的所述组件信息利用脚本工具编写对应的测试脚本;然后用户只需要在计算机端输入测试命令,即可触发脚本执行器完成对所有待测试的应用的自动化测试,提供一种手机应用的黑盒测试,方便的获取各类手机应用的组件信息,通过可视化的脚本方式实现自动化测试,让普通测试人员快速高效的完成手机应用的批量测试。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明手机应用自动化测试***的结构框架图;
图2是本发明手机应用自动化测试方法的流程图;
图3是较佳实施例中对应于图2中步骤S51、步骤S53和步骤S55的时序图。
具体实施方式
本发明为了解决现有技术中应用测试耗费人力、不适合大规模测试、适用性狭窄、效率不高等缺陷,提供一种手机应用自动化测试方法及***。
本发明的手机应用自动化测试方法利用计算机控制手机运行应用,根据获取到的手机端的每个应用在测试中涉及到的组件信息,测试人员根据对应的所述组件信息利用脚本工具编写对应的测试脚本;然后用户只需要在计算机端输入测试命令,即可触发计算机内的脚本执行器完成对安装于手机端的所有待测试的应用的自动化测试。因此,本发明能够提供一种手机应用的黑盒测试,方便的获取各类手机应用的组件信息,通过可视化的脚本方式实现自动化测试,让普通测试人员快速高效的完成手机应用的批量测试。
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
参考图1是本发明手机应用自动化测试***的结构框架图;
本发明的手机应用自动化测试***基于Android手机实现,包括相互之间建立通信的手机与计算机,
其中,所述计算机包括用于与用户交互并执行测试脚本的脚本执行器,和用于解析测试脚本并与手机端进行通信的远程控制模块ArdServer;
其中,所述手机包括用于与计算机进行通信并管理脚本命令的远程控制服务模块ArdMobile和用于执行测试应用的测试模块。
所述测试模块包括:用于解析测试命令的web服务器、用于执行测试命令的测试单元ArdTestCase和与所述测试脚本对应的应用。应用包括该应用测试过程中所涉及到的所有组件。
参考图2是本发明手机应用自动化测试方法的流程图。
本发明的手机应用自动化测试方法基于Android手机实现,所述方法通过计算机界面接收测试命令并在手机上实现批量应用的自动化测试,所述方法包括以下步骤:
S1、建立手机与计算机之间的通信连接,并建立计算机对手机的远程控制;
手机为安装开源的Android***的手机。通信连接包括无线通信或者利用USB数据线直接连接,较佳实施例中手机与计算机通过USB连接,计算机端基于ddmlib截图库工具实现手机控制功能,用户可以在计算机上通过浏览器查看到当前手机的屏幕和对手机进行操作。
S2、在计算机端操作将待测试的应用安装于手机端;
S3、计算机端获取步骤S2中安装于手机端的所述待测试的应用在测试中涉及到的组件信息,并判断是否存在下一个待测试的应用,如果存在下一个待测试的应用则转步骤S2;
所述组件信息包括:组件的id、text、name、classname和index,且组件信息的优先级为:id>text>name>classname>index。
大部分组件都有一个id标识,基于优先级最高的组件信息定位组件,能做到更加准确的定位,解决基于图片识别技术定位不准确的问题。
S4、对应于步骤S2中安装的每个所述待测试的应用,测试人员根据对应的所述组件信息利用脚本工具编写对应的测试脚本;
具体包括:根据所述组件信息的优先级筛选优先级最高的组件信息定位所述组件,测试人员直接复制筛选出的组件信息并利用脚本工具编写测试脚本。
S5、用户在计算机端输入测试命令,触发计算机内的脚本执行器发送测试脚本到手机端批量执行,完成对步骤S2中安装于手机端的所有待测试的应用的自动化测试。
基于手机远程控制技术,能远程选用任意手机完成测试脚本,因此克服了现有技术图片识别技术中存在的手机型号受限的缺陷,且提供可视化的脚本编辑方式,能方便快速的完成脚本,并且测试人员容易上手。
测试脚本能够自适应所有型号的android手机,解决基于图片识别技术可能因为手机旋转或者手机型号不一等情况而造成的应用布局变化带来的脚本通用性不高的问题;自动化测试方法适用非开源的手机应用,能做到黑盒测试。解决开发人员读取源码的白盒测试方法对待测手机应用的开源的限制问题。
其中,所述步骤S5具体包括:
S51、所述脚本执行器触发启动手机端的测试模块,参考图3是较佳实施例中对应于图2中步骤S51、步骤S53和步骤S55的时序图,步骤S51具体包括:
S51-1:用户输入测试命令,所述脚本执行器发起一个安装或者设置待测试的应用的请求,并将所述请求经计算机端的远程控制模块ArdServer转发到手机端的远程控制服务模块ArdMobile;
S51-2:所述远程控制服务模块ArdMobile启动测试,根据***自带的Instrumentation测试工具的测试框架,启动测试工具类ArdTestRunner;
S51-3:启动所述测试模块中的web服务器和所述测试模块中的所述测试工具类ArdTestRunner实例化的测试单元ArdTestCase,该步骤S51-3具体包括:
S51-3-1:启动所述web服务器,较佳实施例中,所述web服务器为jetty;
S51-3-2:启动所述测试工具类ArdTestRunner实例化的测试单元ArdTestCase;
S51-3-3:所述测试单元ArdTestCase开始启动和监听当前待测试脚本对应的待测试的应用,待所述待测试的应用启动成功,所述测试单元ArdTestCase实例化工具类得到Robotium工具;再等待步骤S51-2-1中的所述web服务器启动成功;
S51-3-5:所述web服务器启动成功后,通知所述测试单元ArdTestCase,所述测试单元ArdTestCase将所述web服务器设置为准备状态;
S51-3-6:所述web服务器通知所述远程控制服务模块ArdMobileHTTP服务进入准备状态,开始接受测试命令,所述测试单元ArdTestCase等待所述web服务器启动成功后,通知所述远程控制服务模块ArdMobile所述测试单元ArdTestCase成功启动。
S51-4:待web服务器和测试单元ArdTestCase都成功启动,所述远程控制服务模块ArdMobile经所述远程控制模块ArdServer通知所述脚本执行器测试模块已经待命,可以开始执行测试命令。
S52、所述测试模块启动后,所述脚本执行器获取一个测试脚本作为当前待测试脚本;
S53、所述测试模块接收所述脚本执行器转发的当前待测试脚本,并自动执行所述当前待测试脚本的所有步骤,参考图3,具体包括:
S53-1:所述脚本执行器选定当前待测试脚本的一个步骤作为当前待测试步骤;
S53-2:所述脚本执行器发送执行当前待测试步骤的测试命令,所述测试命令先后经计算机端的远程控制模块ArdServer和手机端的远程控制服务模块ArdMobile转发到所述测试模块中的web服务器;
S53-3:所述web服务器解析所述测试命令,然后将所述测试命令转发给所述测试模块中的测试单元ArdTestCase处理;
S53-4:所述测试单元ArdTestCase根据所述测试命令通过步骤S51-3-3中生成的Robotium工具操作当前待测试步骤中组件信息所定位的组件以完成当前待测试步骤;
S53-5:所述测试单元ArdTestCase等待当前待测试步骤执行完毕或者出错,返回测试结果给所述web服务器,测试结果包括成功或出错信息,其中出错包括失败、超时等。
S53-6:所述web服务器接收到所述测试结果,并先后经所述远程控制服务模块ArdMobile和远程控制模块ArdServer转发到所述脚本执行器;
S53-7:所述脚本执行器判断当前待测试脚本是否存在下一个测试步骤,如果是,则选定下一个测试步骤为当前待测试步骤,并转步骤S53-2,否则转步骤S54。
S54、脚本执行器判断是否存在下一个测试脚本,若是,则选定下一个测试脚本为当前待测试脚本,转步骤S53,否则转步骤S55;
S55、结束测试,所述测试模块返回测试结果至脚本执行器,所述脚本执行器返回测试结果给用户并关闭所述测试模块。
参考图3,所述步骤S55中所述的关闭所述测试模块具体包括:
S55-1:脚本执行器发送结束测试命令,所述结束测试命令先后经计算机端的远程控制模块ArdServer和手机端的远程控制服务模块ArdMobile转发到所述测试模块中的web服务器;
S55-2:所述web服务器通知所述测试模块中的测试单元ArdTestCase所述web服务器已经退出,HTTP服务已经关闭;
S55-3:所述测试单元ArdTestCase关闭当前待测试脚本对应的应用,并通知测试工具类ArdTestRunner结束测试。
综上所述,本发明利用计算机控制手机运行应用,根据获取到的手机端的每个应用在测试中涉及到的组件信息,测试人员根据对应的所述组件信息利用脚本工具编写对应的测试脚本;然后用户只需要在计算机端输入测试命令,即可触发计算机内的脚本执行器完成对安装于手机端的所有待测试的应用的自动化测试。因此,本发明能够提供一种手机应用的黑盒测试,方便的获取各类手机应用的组件信息,通过可视化的脚本方式实现自动化测试,让普通测试人员快速高效的完成手机应用的批量测试。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。