应用测试方法及装置与流程

文档序号:11654171阅读:197来源:国知局
应用测试方法及装置与流程

本发明涉及软件测试领域,特别涉及一种应用测试方法及装置。



背景技术:

随着互联网技术的不断发展,以及诸如智能手机、平板电脑等移动终端的飞速进步,移动终端中可运行的应用越来越广泛,越来越多的企业投入到应用的开发中。由于在应用的开发过程中,应用可能存在缺陷或故障,这些缺陷或故障可能会造成各类损失,甚至会带来灾难性的后果,因此,应用的质量问题已成为企业的关注焦点。为了保证应用的质量,应用测试是应用开发流程中一个必不可少的环节。随着应用的快速普及,企业内部对应用发布的迭代周期越来越短,对于在应用测试领域的测试人员来讲,如何快速有效的对应用进行高迭代测试是一直以来要挑战的事项,因此,针对需要对应用进行高迭代测试,且周期短的项目来说,如何使用应用自动化测试来代替重复繁琐的人工测试操作是亟需解决的问题。

相关技术中,对于应用自动化测试,在不同的测试语言下,应用自动化测试工作可以采用不同的方式开展,例如,在python(面向对象直译式计算机程序设计)语言下,使用自动化工具、自动化框架来开展应用自动化测试工作。

在实现本发明的过程中,发明人发现相关技术至少存在以下问题:

目前,例如在python语言下,由于自动化框架的不足,多数自动化框架仅能提供部分对应用的测试功能,导致应用测试不完善,智能化较差。



技术实现要素:

为克服相关技术中存在的问题,本发明提供一种应用测试方法及装置。

根据本发明实施例的第一方面,提供一种应用测试方法,所述方法包括:

为所述至少一个测试用例设置设备参数,所述设备参数用于指示所述测试用例运行的移动终端;

将至少一个子任务与所述至少一个测试用例进行关联,所述至少一个子任务属于同一主任务;

基于多任务插件,执行所述至少一个子任务的主任务,以使所述设备参数指示的移动终端执行所述测试用例;

对于所述至少一个子任务中的任一个子任务,

将所述子任务的任务描述信息传输至结果收集任务;

通过所述结果收集任务,基于所述任务描述信息,获取所述子任务的任务运行信息;

基于所述任务运行信息,生成变量文件;

基于所述变量文件,对应用测试的完成情况进行提醒。

本发明的实施例提供的方法,通过为至少一个测试用例设置设备参数,将至少一个子任务与至少一个测试用例进行关联,基于多任务插件,执行至少一个子任务的主任务,以使设备参数指示的移动终端执行测试用例,并收集测试用例执行完成后的结果生成变量文件,基于变量文件,对应用测试的完成情况进行提醒,提供了完整的对应用进行测试的功能,使得对应用测测试过程完整,智能性较优。

在另一个实施例中,所述方法还包括:

当接收到重启指令时,返回当前连接的移动终端的终端地址;

基于所述终端地址,向所述终端地址指示的移动终端发送所述重启指令,以使所述移动终端在接收到所述重启指令后进行重启;

接收所述移动终端在完成重启后发送的成功指令,完成对所述移动终端的重启。

在另一个实施例中,所述方法还包括:

当接收到状态查询指令时,获取执行所述测试用例的移动终端中测试服务的身份标识id和端口号;

基于所述id和所述端口号,读取所述移动终端中测试服务的运行状态,完成状态查询。

在另一个实施例中,所述方法还包括:

当接收到停止指令时,查询执行所述测试用例的移动终端中当前运行的至少一个测试服务;

获取所述至少一个测试服务的服务名称,生成第一服务列表;

基于所述第一服务列表,向所述至少一个测试服务发送所述停止指令,以使所述至少一个测试服务停止运行;

当所述至少一个测试服务中任一测试服务停止运行后,在所述第一服务列表中将所述测试服务的服务名称删除,生成第二服务列表;

检查所述第二服务列表是否为空,若所述第二服务列表为空,则完成停止测试服务,若所述第二服务列表非空,则再次执行上述获取所述至少一个测试服务的服务名称,向所述至少一个测试服务发送所述停止指令的步骤,直至生成的所述第二服务列表为空。

在另一个实施例中,所述方法还包括:

当接收到启动指令时,获取执行所述测试用例的移动终端中的第一测试服务和第二测试服务,所述第一测试服务为移动终端中当前运行的测试服务,所述第二测试服务为移动终端中当前未运行的测试服务;

向所述第一测试服务发送服务停止指令,以使所述第一测试服务停止运行;

当所述第一测试服务停止运行后,向所述第一测试服务和第二测试服务发送启动指令,以使所述第一测试服务和第二测试服务启动运行。

在另一个实施例中,所述基于多任务插件,执行所述至少一个子任务的主任务之前,所述方法还包括:

为所述至少一个子任务配置关联任务,所述关联任务用于将所述至少一个子任务的基本信息传输至结果收集任务;

其中,所述任务描述信息至少包括所述子任务的构建编号number、构建地址url、测试用例总数变量名、失败变量名。

在另一个实施例中,所述通过所述结果收集任务,基于所述任务描述信息,获取所述子任务的任务运行信息包括:

通过所述结果收集任务,在构建命令中触发脚本;

通过所述脚本,基于所述任务描述信息,获取所述子任务的所述任务运行信息,所述任务运行信息至少包括成功测试用例数、失败测试用例数。

在另一个实施例中,所述基于所述变量文件,对应用测试的完成情况进行提醒包括:

在所述子任务中注入所述变量文件,以使所述子任务解析所述变量文件,得到所述任务运行信息,并基于所述任务运行信息对应用测试的完成情况进行提醒。

在另一个实施例中,所述为所述至少一个测试用例设置设备参数之前,所述方法还包括:

获取应用的最新安装包;

基于所述最新安装包,获取所述测试用例。

根据本发明实施例的第二方面,提供一种应用测试装置,所述装置包括:

设置模块,用于为所述至少一个测试用例设置设备参数,所述设备参数用于指示所述测试用例运行的移动终端;

关联模块,用于将至少一个子任务与所述至少一个测试用例进行关联,所述至少一个子任务属于同一主任务;

执行模块,用于基于多任务插件,执行所述至少一个子任务的主任务,以使所述设备参数指示的移动终端执行所述测试用例;

对于所述至少一个子任务中的任一个子任务,

传输模块,用于将所述子任务的任务描述信息传输至结果收集任务;

信息获取模块,用于通过所述结果收集任务,基于所述任务描述信息,获取所述子任务的任务运行信息;

生成模块,用于基于所述任务运行信息,生成变量文件;

提醒模块,用于基于所述变量文件,对应用测试的完成情况进行提醒。

本发明的实施例提供的装置,通过为至少一个测试用例设置设备参数,将至少一个子任务与至少一个测试用例进行关联,基于多任务插件,执行至少一个子任务的主任务,以使设备参数指示的移动终端执行测试用例,并收集测试用例执行完成后的结果生成变量文件,基于变量文件,对应用测试的完成情况进行提醒,提供了完整的对应用进行测试的功能,使得对应用测测试过程完整,智能性较优。

在另一个实施例中,所述装置还包括:

返回模块,用于当接收到重启指令时,返回当前连接的移动终端的终端地址;

第一发送模块,用于基于所述终端地址,向所述终端地址指示的移动终端发送所述重启指令,以使所述移动终端在接收到所述重启指令后进行重启;

接收模块,用于接收所述移动终端在完成重启后发送的成功指令,完成对所述移动终端的重启。

在另一个实施例中,所述装置还包括:

标识获取模块,用于当接收到状态查询指令时,获取执行所述测试用例的移动终端中测试服务的身份标识id和端口号;

读取模块,用于基于所述id和所述端口号,读取所述移动终端中测试服务的运行状态,完成状态查询。

在另一个实施例中,所述装置还包括:

查询模块,用于当接收到停止指令时,查询执行所述测试用例的移动终端中当前运行的至少一个测试服务;

名称获取模块,用于获取所述至少一个测试服务的服务名称,生成第一服务列表;

第二发送模块,用于基于所述第一服务列表,向所述至少一个测试服务发送所述停止指令,以使所述至少一个测试服务停止运行;

删除模块,用于当所述至少一个测试服务中任一测试服务停止运行后,在所述第一服务列表中将所述测试服务的服务名称删除,生成第二服务列表;

检查模块,用于检查所述第二服务列表是否为空,若所述第二服务列表为空,则完成停止测试服务,若所述第二服务列表非空,则再次执行上述获取所述至少一个测试服务的服务名称,向所述至少一个测试服务发送所述停止指令的步骤,直至生成的所述第二服务列表为空。

在另一个实施例中,所述装置还包括:

服务获取模块,用于当接收到启动指令时,获取执行所述测试用例的移动终端中的第一测试服务和第二测试服务,所述第一测试服务为移动终端中当前运行的测试服务,所述第二测试服务为移动终端中当前未运行的测试服务;

第三发送模块,用于向所述第一测试服务发送服务停止指令,以使所述第一测试服务停止运行;

第四发送模块,用于当所述第一测试服务停止运行后,向所述第一测试服务和第二测试服务发送启动指令,以使所述第一测试服务和第二测试服务启动运行。

在另一个实施例中,所述装置还包括:

配置模块,用于为所述至少一个子任务配置关联任务,所述关联任务用于将所述至少一个子任务的基本信息传输至结果收集任务;其中,所述任务描述信息至少包括所述子任务的构建编号number、构建地址url、测试用例总数变量名、失败变量名。

在另一个实施例中,所述信息获取模块包括:

触发子模块,用于通过所述结果收集任务,在构建命令中触发脚本;

获取子模块,用于通过所述脚本,基于所述任务描述信息,获取所述子任务的所述任务运行信息,所述任务运行信息至少包括成功测试用例数、失败测试用例数。

在另一个实施例中,所述提醒模块包括:

注入子模块,用于在所述子任务中注入所述变量文件,以使所述子任务解析所述变量文件,得到所述任务运行信息,并基于所述任务运行信息对应用测试的完成情况进行提醒。

在另一个实施例中,所述装置还包括:

安装包获取模块,用于获取应用的最新安装包;

用例获取模块,用于基于所述最新安装包,获取所述测试用例。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

图1是根据一示例性实施例示出的一种页面校验方法的流程图;

图2a是根据一示例性实施例示出的一种页面校验方法的示意图;

图2b是根据一示例性实施例示出的一种页面校验方法的示意图;

图2c是根据一示例性实施例示出的一种页面校验方法的流程图;

图2d是根据一示例性实施例示出的一种页面校验方法的示意图;

图2e是根据一示例性实施例示出的一种页面校验方法的示意图;

图2f是根据一示例性实施例示出的一种页面校验方法的示意图;

图2g是根据一示例性实施例示出的一种页面校验方法的示意图;

图2h是根据一示例性实施例示出的一种页面校验方法的示意图;

图2i是根据一示例性实施例示出的一种页面校验方法的示意图;

图2j是根据一示例性实施例示出的一种页面校验方法的示意图;

图2k是根据一示例性实施例示出的一种页面校验方法的示意图;

图2l是根据一示例性实施例示出的一种页面校验方法的示意图;

图2m是根据一示例性实施例示出的一种页面校验方法的示意图;

图3a是根据一示例性实施例示出的一种页面校验装置的框图;

图3b是根据一示例性实施例示出的一种页面校验装置的框图;

图3c是根据一示例性实施例示出的一种页面校验装置的框图;

图3d是根据一示例性实施例示出的一种页面校验装置的框图;

图3e是根据一示例性实施例示出的一种页面校验装置的框图;

图3f是根据一示例性实施例示出的一种页面校验装置的框图;

图3g是根据一示例性实施例示出的一种页面校验装置的框图;

图3h是根据一示例性实施例示出的一种页面校验装置的框图;

图3i是根据一示例性实施例示出的一种页面校验装置的框图;

图4是根据一示例性实施例示出的一种页面校验装置400的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

图1是根据一示例性实施例示出的一种应用测试方法的流程图,如图1所示,该方法包括以下步骤。

在步骤101中,为至少一个测试用例设置设备参数,设备参数用于指示测试用例运行的移动终端。

在步骤102中,将至少一个子任务与至少一个测试用例进行关联,至少一个子任务属于同一主任务。

在步骤103中,基于多任务插件,执行至少一个子任务的主任务,以使设备参数指示的移动终端执行测试用例。

在步骤104中,对于至少一个子任务中的任一个子任务,将子任务的任务描述信息传输至结果收集任务。

在步骤105中,通过结果收集任务,基于任务描述信息,获取子任务的任务运行信息。

在步骤106中,基于任务运行信息,生成变量文件。

在步骤107中,基于变量文件,对应用测试的完成情况进行提醒。

本发明实施例提供的方法,通过为至少一个测试用例设置设备参数,将至少一个子任务与至少一个测试用例进行关联,基于多任务插件,执行至少一个子任务的主任务,以使设备参数指示的移动终端执行测试用例,并收集测试用例执行完成后的结果生成变量文件,基于变量文件,对应用测试的完成情况进行提醒,提供了完整的对应用进行测试的功能,使得对应用测测试过程完整,智能性较优。

在另一个实施例中,该方法还包括:

当接收到重启指令时,返回当前连接的移动终端的终端名称;

基于终端名称,向终端名称指示的移动终端发送重启指令,以使移动终端在接收到重启指令后进行重启;

接收移动终端在完成重启后发送的成功指令,完成对移动终端的重启。

在另一个实施例中,该方法还包括:

当接收到状态查询指令时,获取执行测试用例的移动终端中测试服务的身份标识id和端口号;

基于id和端口号,读取移动终端中测试服务的运行状态,完成状态查询。

在另一个实施例中,该方法还包括:

当接收到停止指令时,查询执行测试用例的移动终端中当前运行的至少一个测试服务;

获取至少一个测试服务的服务名称,生成第一服务列表;

基于第一服务列表,向至少一个测试服务发送停止指令,以使至少一个测试服务停止运行;

当至少一个测试服务中任一测试服务停止运行后,在第一服务列表中将测试服务的服务名称删除,生成第二服务列表;

检查第二服务列表是否为空,若第二服务列表为空,则完成停止测试服务,若第二服务列表非空,则再次执行上述获取至少一个测试服务的服务名称,向至少一个测试服务发送停止指令的步骤,直至生成的第二服务列表为空。

在另一个实施例中,该方法还包括:

当接收到启动指令时,获取执行测试用例的移动终端中的第一测试服务和第二测试服务,第一测试服务为移动终端中当前运行的测试服务,第二测试服务为移动终端中当前未运行的测试服务;

向第一测试服务发送服务停止指令,以使第一测试服务停止运行;

当第一测试服务停止运行后,向第一测试服务和第二测试服务发送启动指令,以使第一测试服务和第二测试服务启动运行。

在另一个实施例中,基于多任务插件,执行至少一个子任务的主任务之前,方法还包括:

为至少一个子任务配置关联任务,关联任务用于将至少一个子任务的基本信息传输至结果收集任务;

其中,任务描述信息至少包括子任务的构建编号number、构建地址url、测试用例总数变量名、失败变量名。

在另一个实施例中,通过结果收集任务,基于任务描述信息,获取子任务的任务运行信息包括:

通过结果收集任务,在构建命令中触发脚本;

通过脚本,基于任务描述信息,获取子任务的任务运行信息,参数信息至少包括成功测试用例数、失败测试用例数。

在另一个实施例中,基于变量文件,对应用测试的完成情况进行提醒包括:

在子任务中注入变量文件,以使子任务解析变量文件,得到任务运行信息,并基于任务运行信息对应用测试的完成情况进行提醒。

在另一个实施例中,为至少一个测试用例设置设备参数之前,方法还包括:

获取应用的最新安装包;

基于最新安装包,获取测试用例。

上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。

本发明实施例为一套完整的应用测试自动化执行业务流程,该应用测试自动化执行业务流程可以利用ci(continuousintegration,持续集成)平台构建,该应用测试自动化执行业务流程用于自动执行对应用的测试,可以由下述七部分组成:

第一部分:自动重启adb(androiddebugbridge,安卓调试桥)服务以及被测试的移动终端。

在本发明实施例中,对应用进行测试时,需要以移动终端为载体进行测试,因此,被测试的应用所在的移动终端需要连接到机房的服务器上,由服务器控制移动终端执行测试用例,完成对应用的测试。其中,在将移动终端连接到服务器时,可以基于adb服务进行连接,为了防止adb服务发生错误或者移动终端发生无响应的状况,因此,服务器可以周期性的自动重启被测试的应用所在的移动终端的adb服务以及被测试的应用所在的移动终端。

服务器自动重启被测试的应用所在的移动终端的adb服务以及被测试的应用所在的移动终端的操作可基于代码实现,其中,服务器自动重启的核心代码如图2a所示,服务器可以提供周期设置入口,当检测到开发人员点击周期设置入口时,显示周期设置页面,在周期设置页面显示多种备选周期以及周期输入框;开发人员可以直接点击选择备选周期作为服务器周期性自动重启的时间,也可以在周期输入框中输入需要设置的周期,以便完成对服务器自动重启的周期设置。当服务器每个周期检测到需要进行自动重启时,则自动生成重启指令;当检测到重启指令生成时,获取当前已经连接的全部移动终端的终端地址,将重启指令发送至终端地址指示的全部移动终端。

为了使服务器获知移动终端是否重启完成,对于全部移动终端中的每个移动终端,当接收到重启指令时,移动终端便会进行重启,并在完成重启后生成成功指令,基于与服务器之间的连接,将成功指令返回给服务器;当服务器接收到全部移动终端返回的成功指令时,便确定当前自动重启成功,完成对全部移动终端的自动重启。

第二部分:移动终端连接状态检查。

在本发明实施例中,为了避免服务器与移动终端之间的连接发生异常,服务器需要对和全部移动终端之间的连接进行检查,检查与移动终端之间的连接是否正常,若检查到与某个移动终端之间的连接发生异常,则在主屏幕上进行提示,以使开发人员获知当前移动终端与服务器之间的连接发生异常,并对连接进行修复。

其中,服务器在检查与移动终端之间的连接是否正常时,可以采用心跳方式或轮询方式进行检查。当服务器采用心跳方式检查与移动终端之间的连接是否正常时,与服务器连接的移动终端可以周期性的向服务器发送心跳信号,心跳信号用于指示当前移动终端与服务器之间的连接正常,若服务器可以周期性的接收到移动终端发送的心跳信号,则服务器可确定与移动终端之间的连接正常;若服务器未能在每个周期接收到移动终端返回的心跳信号,则服务器可确定与移动终端之间的连接发生异常,需要对连接进行修复。当服务器采用轮询方式检查与移动终端之间的连接是否正常时,服务器可以周期性的向移动终端发送查询信号,以使移动终端在接收到查询信号后,向服务器返回确认信号;若移动终端与服务器之间的连接正常,则移动终端在接收到服务器发送的查询信号后,便可向服务器返回确认信号,以使服务器获知与移动终端之间的连接正常;若移动终端与服务器之间的连接异常,则移动终端可能未接收到服务器发送的查询信号,亦或无法向服务器返回确认信号,这样服务器便无法接收到移动终端的确认信号,服务器可确定与移动终端之间的连接发生异常,需要进行修复。

需要说明的是,对于服务器检查与移动终端之间的连接是否正常的方式,本发明对此不进行具体限定。

第三部分:应用自动打包。

在本发明实施例中,对应用进行测试之前,为了保证所测试的版本是应用的最新版本,以便对应用的最新版本进行完善,需要对已经连接的移动终端中被测试的应用进行检测,判断移动终端中安装的被测试的应用是否为应用的最新版本,若移动终端中安装的被测试的应用并非最新版本的应用,则需要获取可将当前应用更新至最新版本的应用安装包,对应用进行自动打包。

在判断移动终端中安装的被测试的应用是否为应用的最新版本时,可以获取移动终端中安装的应用的版本号以及应用的具体内容,若根据应用的版本号以及应用的具体内容确定应用当前的版本为最新版本,则可基于移动终端中当前安装的应用继续执行下述第四部分;若根据应用的版本号以及应用的具体内容确定应用当前的版本并非最新版本,则根据移动终端中当前安装应用的应用标识和应用的当前版本号,获取可将当前应用更新至最新版本的应用安装包,对应用进行自动打包,以使后续可以根据当前应用的最新版本确定在对移动终端中安装的应用进行测试时需要执行的测试用例。其中,应用的具体内容可为应用中当前可显示的全部页面的页面标识,这样在判断移动终端中安装的被测试应用是否为应用的最新版本时,可以获取应用的版本号以及应用的具体内容,判断应用的版本号与最新版本号是否一致,并获取最新版本的应用中可显示的全部页面的页面标识,与移动终端中安装的被测试应用可显示的全部页面的页面标识进行比对,若移动终端中安装的被测试应用的版本号与最新版本号一致,且最新版本的应用中可显示的全部页面的页面标识与移动终端中安装的被测试应用可显示的全部页面的页面标识一致,则表示终端中安装的被测试应用为应用的最新版本;若移动终端中安装的被测试应用的版本号与最新版本号不一致,且最新版本的应用中可显示的全部页面的页面标识与移动终端中安装的被测试应用可显示的全部页面的页面标识存在不一致的页面标识,则表示终端中安装的被测试应用并非为应用的最新版本。

第四部分:拉取最新测试用例的用例代码。

在本发明实施例中,为了确保后续可以根据最新的测试用例对应用进行测试,对应用的最新版本进行完善,因此,需要根据最新版本的应用拉取最新测试用例的用例代码。

在拉取最新测试用例的用例代码时,服务器可在用例代码数据库中根据最新版本的被测应用的应用标识确定被测应用的用例代码,并对用例代码进行拉取。其中,用例代码数据库将应用标识与应用对应的用例代码对应进行存储,每个应用对应的用例代码均为开发人员根据应用构建得到的。

第五部分:为各应用构建测试用例,基于测试用例对应用进行测试。

在本发明实施例中,根据用例代码即可在测试用例数据库中确定用例代码对应的测试用例。在获取到被测应用的测试用例后,服务器将应用的应用标识与被测应用的测试用例对应存储至本地,以便后续基于与被测应用对应的测试用例对被测应用进行测试。

在开始基于测试用例对应用进行测试之前,由于一个应用可能需要执行至少一个测试用例,以及可能存在多个应用需要进行测试,因此,为了同时执行至少一个测试用例,通常引入并发模式执行测试。在并发模式中,需要为至少一个测试用例设置设备参数,该设备参数用于指示测试用例运行的移动终端,设备参数可用-u表示。在为至少一个测试用例设置设备参数后,为了实现至少一个测试用例的并发,可将属于同一主任务的至少一个子任务与至少一个测试用例进行关联,并基于多任务插件,执行该主任务,以使设备参数指示的移动终端可以同时执行至少一个测试用例,实现测试用例的并发。其中,多任务插件可为jenkinsmultijobphase(集成多任务)插件功能,上述基于多任务插件对测试用例进行并发执行的过程可以基于图2b所示的代码实现。

为了在各个子任务执行完成后收集执行子任务的测试结果,可为至少一个子任务中的每个子任务配置关联任务,并基于关联子任务将执行各个子任务后得到的测试结果传输至结果收集任务,以便结果收集任务实现对测试结果的收集。

当测试用例执行完毕后,执行测试用例的移动终端可显示测试页面,为了判断测试用例在移动终端上是否执行成功,服务器需要对测试页面进行校验,判断得到的测试页面与预期页面是否一致,若确定得到的测试页面与预期页面一致,则确定对测试页面进行校验成功;若确定得到的测试页面与预期页面不一致,则确定对测试页面进行校验失败。其中,在对测试页面进行校验时,参见图2c,可以基于下述步骤201至步骤205实现。

在步骤201中,当测试用例执行完成后,获取预设数目的比对元素,每个比对元素至少包括一个预期页面元素,每个比对元素用于确定测试用例执行完成后得到的测试页面是否与预期页面一致。

在本发明实施例中,为了判断测试用例执行完成后得到的测试页面与预期页面是否一致,需要基于预期页面上的比对元素进行确定,也即若预期页面上的比对元素可在测试页面上定位成功,则可以确定测试页面与预期页面一致;若预期页面上的比对元素在测试页面上定位失败,则可以确定测试页面与预期页面不一致。由于基于单一的比对元素确定测试页面与预期页面是否一致得到的结果准确性较低,因此,在本发明中设置了预设数目的比对元素,且每个比对元素至少包括一个预期页面元素,可以通过执行图2d所示的代码实现,保证了对测试页面校验的准确性。

在步骤202中,基于页面元素的至少一种查找方式,在测试页面上对预设数目的比对元素进行定位,若至少一种查找方式中任一种查找方式定位到预设数目的比对元素,则测试页面校验成功;若至少一种查找方式中任一种查找方式未定位到预设数目的比对元素,则执行下述步骤203。

在本发明实施例中,基于页面元素的至少一种查找方式,在测试页面上对预设数目的比对元素进行定位时,可以根据查找方式的个数,进行方式的比对元素定位,参见下述情况一和情况二。

情况一、查找方式至少包括第一查找方式和第二查找方式。

在测试页面上定位预设数目的比对元素时,可以通过执行图2e所示的代码实现。首先可以基于少一种查找方式中的第一查找方式,在测试页面上定位比对元素,若第一查找方式在测试页面上成功定位比对元素,则完成对比对元素的定位,也即测试页面校验成功;若第一查找方式在测试页面上未定位到比对元素,则之后可以基于至少一种查找方式中的第二查找方式,在测试页面上定位比对元素,以此类推,直至在预测页面上定位到比对元素。

情况二、查找方式仅为第三查找方式。

在本发明实施例中,为了避免由于测试用例在执行时存在延时,而导致对测试页面的校验发生错误,当仅基于第三查找方式,在测试页面上定位预设数目的比对元素时,可以通过执行图2f所示的代码实现。其中,服务器中可以设置预设时间,并基于在预设时间是否可以定位到预设数目的比对元素,确定对测试页面的校验是否成功。其中,在设置预设时间时,服务器可以提供预设时间设置入口,当检测到开发人员点击进入预设时间设置入口时,显示预设时间设置界面,在预设时间设置界面上显示可供开发人员选择的备选预设时间以及预设时间输入框,若开发人员选取了备选预设时间,则将开发人员选取的备选预设时间作为预设时间;若开发人员在预设时间输入框内输入了时间,则将开发人员输入的时间作为预设时间。

这样,在基于第三查找方式在测试页面上定位预设数目的比对元素时,若在预设时间内定位到预设数目的比对元素,则确定测试页面校验成功;若在预设时间内未定位到预设数目的比对元素,则测试页面校验失败。

其中,为了满足服务器在不同移动终端中定位不同类型的比对元素,使定位比对元素的方式更加的灵活,因此,对于不同类型的比对元素以及不同移动终端上的比对元素,可以采用不用的查找方式。若比对元素为安卓android端名称文本属性固定不变的页面元素,则基于资源标识resource-id对比对元素进行定位;若比对元素为android端动态生成的可变的页面元素,则基于路径语言xpath对比对元素进行定位;若比对元素为ios端名称文本属性固定不变的页面元素,则基于可访问标识accessibility_id或标识符identifier对比对元素进行定位;若比对元素为ios端动态生成的可变的页面元素,则基于ios测试脚本uiautomation对比对元素进行定位。

需要说明的是,若在上述两种情况中,至少一中查找方式中的全部查找方式均为在测试页面定位到比对元素,则确定测试页面校验失败,也即执行下述步骤203。

需要说明的是,上述对测试页面进行检测的过程为基于查找方式在测试页面对比对元素进行定位,其中,也可基于查找方式在预设页面对比对文本进行定位,比对文本为预期页面中的文本信息。在对比对文本进行定位时,可以基于图2g中所示的代码实现,对比对文本进行定位的过程与对比对元素进行定位的过程一致,此处不再进行赘述。

在步骤203中,若至少一种查找方式中任一种查找方式未定位到预设数目的比对元素,则测试页面校验失败,通过网络web访问直通式处理stf平台。

在本发明实施例中,若至少一种查找方式中任一种查找方式未定位到预设数目的比对元素,则测试页面校验失败,因此,为了完成对测试页面的校验,以确定造成测试页面校验失败的原因,需要对发生测试页面校验失败的移动终端进行调试。

在对移动终端进行调试时,如果每次的调试都要把测试页面校验失败的移动终端从机房的服务器拔下来到本地进行调试,会增加开发人员的工作量,因此,可以基于stf(smartphonetestfarm,智能手机测试平台)平台对移动终端进行远程调试。其中,在对移动终端进行远程调试之前,需要在stf平台增加与服务器之间存在连接的各个移动终端的远程调试地址,在向stf平台增加远程调试地址时,需要对stf平台的源代码进行图2h所示的代码修改,以便将各个移动终端的远程调试地址添加至stf平台中。

当确定测试页面校验失败时,为了对发生测试页面校验失败的移动终端进行调试,可以通过web(网络)访问stf平台,并基于stf平台实现对移动终端的远程调试。

在步骤204中,基于stf平台,访问控制control界面,在control界面获取远程调试remote_debug地址。

在本发明实施例中,服务器基于stf平台可以点击移动终端上用于进入control(控制)界面的图标,以此可以访问control界面,在control界面可以查看远程调试remote_debug地址。

在步骤205中,基于命令提示符,连接remote_debug地址,当remote_debug地址连接成功,则进行远程调试,完成测试页面校验。

在本发明实施例中,当获取到remote_debug地址,可在命令提示符中输入remote_debug地址,实现连接到remote_debug地址所指示的移动终端。其中,为了获知连接移动终端是否成功,可以基于图2i中的代码查看是否成功连接到移动终端。这样,当成功连接到移动终端后,便可以对移动终端进行调试,例如对移动终端上安装的应用进行卸载以及获取页面元素等。

第六部分:测试用例执行结果收集。

在本发明实施例中,在对测试用例执行结果进行收集时,对于至少一个子任务中的任一个子任务,需要基于子任务的关联任务,将子任务的任务描述信息传输至结果收集任务。其中,任务描述信息可为子任务的构建编号number、构建地址url、测试用例总数变量名、失败变量名等子任务的基本信息。

当结果收集任务接收到任务描述信息时,可在构建命令中触发脚本;通过脚本并基于任务描述信息,获取到子任务的任务运行信息,其中,任务运行信息可包括成功测试用例数、失败测试用例数。

当获取到子任务的任务运行信息时,基于任务运行信息生成子任务对应的变量文件,以使后续可以基于变量文件发送通知邮件。

第七部分:发送通知邮件。

在本发明实施例中,当生成变量文件后,可在子任务中注入该子任务对应的变量文件,这样该子任务便可以将变量文件进行解析,获取任务运行信息,并生成携带任务运行信息的通知邮件,基于通知邮件提醒应用执行测试用例后的测试结果。

需要说明的是,为了避免对测试页面进行校验后得到的校验结果发生错误,提高准确性,因此本发明实施例中设置了多种查找方法对测试页面进行校验,而且为了提高对应用进行测试的效率,增加了并行执行测试用例的方案,这样,服务器需要执行的操作便会增加,因此,为了方便服务器执行上述的操作,可以为服务器设置一键重启移动终端、一键状态查询、一键停止服务和一键启动服务。在为服务器设置一键重启移动终端、一键状态查询、一键停止服务和一键启动服务时,可以基于图2j所示的代码实现。

其中,服务器在执行一键重启移动终端的操作时,与上述服务器自动执行重启adb服务以及被测试的移动终端的过程一致,此处不再进行赘述;

服务器在执行一键状态查询的操作时,可以基于图2k所示的代码实现,也即服务器可在主界面提供一键状态查询按钮,当检测到开发人员触发一键状态查询按钮时,则服务器获取执行测试用例的移动终端中测试服务的id(identity,身份标识)和端口号,并基于id和端口号,读取移动终端中测试服务的运行状态,完成状态查询。

服务器在执行一键停止服务的操作时,可以基于图2l所示的代码实现,也即服务器可在主界面提供一键停止服务按钮,当检测到开发人员触发一键停止服务按钮时,则服务器查询执行测试用例的移动终端中当前运行的至少一个测试服务,并获取至少一个测试服务的服务名称,生成第一服务列表;之后,基于第一服务列表,向至少一个测试服务发送停止指令,以使至少一个测试服务停止运行。当至少一个测试服务中任一测试服务停止运行后,服务器便在第一服务列表中将测试服务的服务名称删除,生成第二服务列表。服务器随时检查第二服务列表是否为空,若服务器检查到第二服务列表为空,则服务器完成停止测试服务的操作;若服务器检查到第二服务列表非空,则服务器可再次执行上述获取至少一个测试服务的服务名称,向至少一个测试服务发送停止指令的步骤,直至生成的第二服务列表为空,完成一键停止服务。

服务器在执行一键启动服务的操作时,可以基于图2m所示的代码实现,也即服务器可在主界面提供一键启动服务按钮,当检测到开发人员触发一键启动服务按钮时,则服务器获取执行测试用例的移动终端中的第一测试服务和第二测试服务,其中,第一测试服务为移动终端中当前运行的测试服务,第二测试服务为移动终端中当前未运行的测试服务。随后,服务器向第一测试服务发送服务停止指令,以使第一测试服务停止运行;这样,当服务器检测到第一测试服务停止运行后,便可以向第一测试服务和第二测试服务发送启动指令,以使第一测试服务和第二测试服务启动运行,完成一键启动服务。

本发明的实施例提供的方法,通过为至少一个测试用例设置设备参数,将至少一个子任务与至少一个测试用例进行关联,基于多任务插件,执行至少一个子任务的主任务,以使设备参数指示的移动终端执行测试用例,并收集测试用例执行完成后的结果生成变量文件,基于变量文件,对应用测试的完成情况进行提醒,提供了完整的对应用进行测试的功能,使得对应用测测试过程完整,智能性较优。

图3a是根据一示例性实施例示出的一种应用测试装置的框图。参照图3a,该装置包括设置模块301,关联模块302,执行模块303,传输模块304,信息获取模块305,生成模块306和提醒模块307。

该设置模块301,用于为至少一个测试用例设置设备参数,设备参数用于指示测试用例运行的移动终端。

该关联模块302,用于将至少一个子任务与至少一个测试用例进行关联,至少一个子任务属于同一主任务。

该执行模块303,用于基于多任务插件,执行至少一个子任务的主任务,以使设备参数指示的移动终端执行测试用例。

对于至少一个子任务中的任一个子任务,

该传输模块304,用于将子任务的任务描述信息传输至结果收集任务。

该信息获取模块305,用于通过结果收集任务,基于任务描述信息,获取子任务的任务运行信息。

该生成模块306,用于基于任务运行信息,生成变量文件。

该提醒模块307,用于基于变量文件,对应用测试的完成情况进行提醒。

本发明实施例提供的装置,通过为至少一个测试用例设置设备参数,将至少一个子任务与至少一个测试用例进行关联,基于多任务插件,执行至少一个子任务的主任务,以使设备参数指示的移动终端执行测试用例,并收集测试用例执行完成后的结果生成变量文件,基于变量文件,对应用测试的完成情况进行提醒,提供了完整的对应用进行测试的功能,使得对应用测测试过程完整,智能性较优。

在另一个实施例中,参见图3b,该装置还包括返回模块308,第一发送模块309和接收模块310。

该返回模块308,用于当接收到重启指令时,返回当前连接的移动终端的终端地址;

该第一发送模块309,用于基于终端地址,向终端地址指示的移动终端发送重启指令,以使移动终端在接收到重启指令后进行重启;

该接收模块310,用于接收移动终端在完成重启后发送的成功指令,完成对移动终端的重启。

在另一个实施例中,参见图3c,该装置还包括标识获取模块311和读取模块312。

该标识获取模块311,用于当接收到状态查询指令时,获取执行测试用例的移动终端中测试服务的身份标识id和端口号;

该读取模块312,用于基于id和端口号,读取移动终端中测试服务的运行状态,完成状态查询。

在另一个实施例中,参见图3d,该装置还包括查询模块313,名称获取模块314,第二发送模块315,删除模块316和检查模块317。

该查询模块313,用于当接收到停止指令时,查询执行测试用例的移动终端中当前运行的至少一个测试服务;

该名称获取模块314,用于获取至少一个测试服务的服务名称,生成第一服务列表;

该第二发送模块315,用于基于第一服务列表,向至少一个测试服务发送停止指令,以使至少一个测试服务停止运行;

该删除模块316,用于当至少一个测试服务中任一测试服务停止运行后,在第一服务列表中将测试服务的服务名称删除,生成第二服务列表;

该检查模块317,用于检查第二服务列表是否为空,若第二服务列表为空,则完成停止测试服务,若第二服务列表非空,则再次执行上述获取至少一个测试服务的服务名称,向至少一个测试服务发送停止指令的步骤,直至生成的第二服务列表为空。

在另一个实施例中,参见图3e,该装置还包括服务获取模块318,第三发送模块319和第四发送模块320。

该服务获取模块318,用于当接收到启动指令时,获取执行测试用例的移动终端中的第一测试服务和第二测试服务,第一测试服务为移动终端中当前运行的测试服务,第二测试服务为移动终端中当前未运行的测试服务;

该第三发送模块319,用于向第一测试服务发送服务停止指令,以使第一测试服务停止运行;

该第四发送模块320,用于当第一测试服务停止运行后,向第一测试服务和第二测试服务发送启动指令,以使第一测试服务和第二测试服务启动运行。

在另一个实施例中,参见图3f,该装置还包括配置模块321。

该配置模块321,用于为至少一个子任务配置关联任务,关联任务用于将至少一个子任务的基本信息传输至结果收集任务;其中,任务描述信息至少包括子任务的构建编号number、构建地址url、测试用例总数变量名、失败变量名。

在另一个实施例中,参见图3g,该信息获取模块305,包括触发子模块3051和获取子模块3052。

该触发子模块3051,用于通过结果收集任务,在构建命令中触发脚本;

该获取子模块3052,用于通过脚本,基于任务描述信息,获取子任务的任务运行信息,任务运行信息至少包括成功测试用例数、失败测试用例数。

在另一个实施例中,参见图3h,该提醒模块307,包括注入子模块3071。

该注入子模块3071,用于在子任务中注入变量文件,以使子任务解析变量文件,得到任务运行信息,并基于任务运行信息对应用测试的完成情况进行提醒。

在另一个实施例中,参见图3i,该装置还包括安装包获取模块322和用例获取模块323。

该安装包获取模块322,用于获取应用的最新安装包;

该用例获取模块323,用于基于最新安装包,获取测试用例。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

图4是根据一示例性实施例示出的一种应用测试的装置400的框图。例如,装置400可以被提供为一服务器。参照图4,装置400包括处理组件422,其进一步包括一个或多个处理器,以及由存储器432所代表的存储器资源,用于存储可由处理组件422的执行的指令,例如应用程序。存储器432中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件422被配置为执行指令,以执行上述应用测试方法。

装置400还可以包括一个电源组件426被配置为执行装置400的电源管理,一个有线或无线网络接口450被配置为将装置400连接到网络,和一个输入输出(i/o)接口458。装置400可以操作基于存储在存储器432的操作系统,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或类似。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1