一种应用程序的测试方法及系统技术领域
本申请涉及测试领域,尤其是涉及一种应用程序的测试方法及系统。
背景技术
目前,随着网络技术的不断发展,各种类型的应用程序层出不穷。为
了保证应用程序的可靠性,减少用户在使用应用程序时可能出现的问题,
在应用程序正式发布之前,往往都需要对其进行全方面的测试。
一种普遍的对应用程序的测试方法是,将真实设备作为测试设备使用,
通过在测试设备上运行应用程序,以发现可能会出现的问题。由于真实设
备本身具有物理实体,能够100%模拟真实的使用环境,因此具有非常好
的测试效果。然而,上述测试方法却导致了较高的成本。举个例子说明,
如果要在10个测试设备上测试应用程序,则需要10个真实设备,显然成
本较高。
因此如何能够既降低成本,又同时保证较好的测试效果,是现有技术
亟待解决的问题。
发明内容
本申请解决的技术问题在于提供一种应用程序的测试方法及系统,以
实现既降低测试应用程序时的成本,又同时保证较好的测试效果。
为此,本申请解决技术问题的技术方案是:
本申请提供了一种应用程序的测试方法,测试设备池中包括至少一个真
实设备和至少一个模拟设备;各个真实设备和各个模拟设备分别对应一个设
备标识;各个模拟设备对应的设备标识为虚拟映射标识;所述方法包括:
接收用户对待测试应用程序的测试请求;
从所述测试设备池中选取至少一个设备作为当前测试设备;
获取所述当前测试设备分别对应的设备标识;
基于所述当前测试设备分别对应的设备标识,向所述当前测试设备发送
测试指令;所述测试指令用于指示所述当前测试设备测试所述待测试应用程
序;
接收所述当前测试设备返回的测试结果。
优选地,从所述测试设备池中选取至少一个设备作为当前测试设备包括:
从所述测试设备池中选取至少两个设备作为当前测试设备;
所述方法还包括:为所述当前测试设备分别创建对应的线程;
向所述当前测试设备发送测试指令以及接收所述当前测试设备返回的测
试结果包括:
利用所述当前测试设备分别对应的所述线程,向所述当前测试设备发送
测试指令以及接收所述当前测试设备返回的测试结果。
优选地,所述测试请求还包括用户选取的测试设备类型和/或设备个数;
所述测试设备类型用于指示当前测试设备包括真实设备和/或模拟设备;
所述从所述测试设备池中选取至少一个设备作为当前测试设备包括:
基于所述测试设备类型和/或设备个数,从所述测试设备池中选取至少一
个设备作为当前测试设备。
优选地,各个所述模拟设备配置在至少一个物理设备上,所述物理设备
通过虚拟机工具VirtualBox为各个所述模拟设备分配对应的设备标识。
优选地,各个模拟设备对应的设备标识包括:该模拟设备所配置于的物
理设备的地址,以及该模拟设备的虚拟映射端口。
优选地,所述至少一个模拟设备包括第三方模拟器。
本申请还提供了一种应用程序的测试系统,包括测试装置和测试设备池;
所述测试设备池中包括至少一个真实设备和至少一个模拟设备;各个真
实设备和各个模拟设备分别对应一个设备标识;各个模拟设备对应的设备标
识为虚拟映射标识;
所述测试装置用于接收用户对待测试应用程序的测试请求、从所述测试
设备池中选取至少一个设备作为当前测试设备、获取所述当前测试设备分别
对应的设备标识、基于所述当前测试设备分别对应的设备标识,向所述当前
测试设备发送测试指令、以及接收所述当前测试设备返回的测试结果;
其中所述测试指令用于指示所述当前测试设备测试所述待测试应用程
序。
优选地,所述测试装置用于从所述测试设备池中选取至少一个设备作为
当前测试设备包括:
所述测试装置用于从所述测试设备池中选取至少两个设备作为当前测试
设备;
所述测试装置还用于为所述当前测试设备分别创建对应的线程;
所述测试装置用于向所述当前测试设备发送测试指令以及接收所述当前
测试设备返回的测试结果包括:
所述测试装置用于利用所述当前测试设备分别对应的所述线程,向所述
当前测试设备发送测试指令以及接收所述当前测试设备返回的测试结果。
优选地,所述测试请求还包括用户选取的测试设备类型和/或设备个数;
所述测试设备类型用于指示当前测试设备包括真实设备和/或模拟设备;
所述测试装置用于从所述测试设备池中选取至少一个设备作为当前测试
设备包括:
所述测试装置用于基于所述测试设备类型和/或设备个数,从所述测试设
备池中选取至少一个设备作为当前测试设备。
优选地,各个所述模拟设备配置在至少一个物理设备上,所述物理设备
通过虚拟机工具VirtualBox为各个所述模拟设备分配对应的设备标识。
优选地,各个模拟设备对应的设备标识包括:该模拟设备所配置于的物
理设备的地址,以及该模拟设备的虚拟映射端口。
优选地,所述至少一个模拟设备包括第三方模拟器。
通过上述技术方案可知,本申请实施例的测试设备池不仅包括真实设备,
还包括模拟设备,并且各个设备分别对应一个设备标识,从而使得当需要对
待测试应用程序进行测试时,会从测试设备池中选取当前测试设备,并根据
当前测试设备分别对应的设备标识向当前测试设备发送测试指令,从而实现
了对待测试应用程序的测试过程。可见本申请实施例中通过真实设备和模拟
设备混合构建了测试设备池,由于模拟设备不需要物理实体,多个模拟设备
可以同时配置于同一个物理设备上,因此这种方式相比于全部采用真实设备
的方式,能够降低成本。并且由于模拟设备相比于真实设备,在部分实现功
能上存在限制,无法完全代替真实设备的测试效果,因此本申请实施例通过
这种真实设备和模拟设备混合的方式,在能够降低成本的同时,较大可能地
保证了测试效果。
附图说明
图1为本申请提供的测试方法的一种实施例的流程示意图;
图2为本申请提供的测试系统的一种实施例的结构示意图;
图3为本申请提供的测试方法的另一种实施例的流程示意图;
图4为本申请提供的测试系统的另一种实施例的结构示意图。
具体实施方式
目前,一种普遍的对应用程序的测试方法是,将真实设备作为测试设
备使用,通过在测试设备上运行应用程序,以发现可能会出现的问题。由
于真实设备本身具有物理实体,能够100%模拟真实的使用环境,因此具
有非常好的测试效果。然而在对应用程序进行测试时,往往需要应用程序
运行在大量的测试设备上,因此对于上述测试方法必然会导致较高的成本,
举个例子说明,如果要在10个测试设备上测试应用程序,则需要10个真
实设备,显然成本较高。
在本申请实施例中,提供一种应用程序的测试方法及系统,以实现既
降低测试应用程序时的成本,又同时保证较好的测试效果。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行
清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而
不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创
造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参阅图1,本申请实施例提供了应用程序的测试方法的一种实施例。
如图2所示,测试设备池包括至少一个真实设备和至少一个模拟设备。
在本申请实施例中,真实设备指的是具有物理实体的设备,例如计算机、手
机等都属于真实设备。而模拟设备指的是一种本身没有物理实体的虚拟设备,
能够模拟各种具体的运行环境,比如模拟Android、iOS等操作系统的运行环
境等等,从而能够模拟真实设备的操作行为。需要说明的是,虽然模拟设备
本身不具有物理实体,但是其需要配置于物理设备上使用,并且通常一个物
理设备上会配置多个模拟设备。其中物理设备具体配置的模拟设备的个数,
由物理设备的硬件资源(比如内存)大小决定。
在本申请实施例中,为了便于查找出需要进行测试的设备,各个真实设
备和各个模拟设备分别对应一个设备标识。其中,由于模拟设备本身不具有
物理实体,因此各个模拟设备对应的设备标识为虚拟映射标识。
本实施例的方法包括:
S101:接收用户对待测试应用程序的测试请求。
当用户需要测试某一应用程序时,会通过用户侧的客户端发送测试请求,
该测试请求中会指示出用户当前需要测试的应用程序。
由于对应用程序的测试包括性能测试、稳定性测试、适配测试、自动化
测试等多种测试类型,因此该测试请求中还可以指示出当前测试的测试类型,
例如是性能测试还是稳定性测试,具体是哪一方面的性能测试等等。其中适
配测试指的是能够判断应用程序是否适配于操作系统的一种测试。自动化测
试指的是能够自动完成测试过程的一种测试,例如包括UI(用户界面)测试、
monkey测试等。
S102:从测试设备池中选取至少一个设备作为当前测试设备。
在本申请实施例中,测试设备池包括至少一个真实设备和至少一个模拟
设备,因此在该步骤中,从测试设备池中选取出至少一个、真实设备和/或模
拟设备作为当前测试设备。
在接收的测试请求中,还可以包括用户选取的测试设备类型和/或设备个
数,其中测试设备类型用于指示当前测试设备包括真实设备和/或模拟设备。
例如,在用户发送的测试请求中指示出,用户选取了10个测试设备,包括3
个真实设备和7个模拟设备。因此在该步骤中,基于用户选取的测试设备类
型和/或设备个数,从测试设备池中进行选取。
在本申请实施例中,测试设备池的设备信息可以存储在数据库中,其中
设备信息可以包括测试设备池中包括的设备个数、各个设备的设备类型、各
个设备对应的设备标识、以及各个设备的使用状态(一般仅从未处于使用状
态的设备中选取当前测试设备)等等。因此在选取当前测试设备之前,可以
根据设备信息按照预设规则、或者随机选取出符合用户指示的当前测试设备,
如果测试设备池中处于未使用状态的设备个数或者类型不满足用户指示时,
可以结束本实施例的流程并向用户返回选取失败提示。
S103:获取当前测试设备分别对应的设备标识。
在本申请实施例中,由于测试设备池中的每个设备都分别对应一个设备
标识,因此在该步骤中获取到当前测试设备中的各个设备分别对应的设备标
识。其中该步骤具体可以从数据库存储的设备信息中获取。
S104:基于当前测试设备分别对应的设备标识,向当前测试设备发送测
试指令;测试指令用于指示当前测试设备测试所述待测试应用程序。
其中,当前测试设备分别对应的设备标识用于在发送测试指令时,确定
出需发送的各个当前测试设备。例如设备标识可以包括设备通信地址(例如
IP地址+端口信息),因此该步骤中基于设备通信地址确定出各个当前测试设
备并发送测试指令。
测试指令中可以包括当前测试设备需执行的测试程序,从而指示各个当
前测试设备在接收到测试指令后,会分别执行测试程序从而实现对待测试应
用程序的测试过程。
S105:接收当前测试设备返回的测试结果。
各个当前测试在接收到测试指令后,会对待测试应用程序进行测试,并
将测试结果实时返回。通常该测试结果还会向用户进行显示。
通过上述技术方案可知,本实施例的测试设备池不仅包括真实设备,还
包括模拟设备,并且各个设备分别对应一个设备标识,从而使得当需要对待
测试应用程序进行测试时,会从测试设备池中选取当前测试设备,并根据当
前测试设备分别对应的设备标识向各个当前测试设备发送测试指令,从而实
现了对待测试应用程序的测试过程。可见本申请实施例中通过真实设备和模
拟设备混合构建了测试设备池,由于模拟设备不需要物理实体,多个模拟设
备可以同时配置于同一个物理设备上,因此这种方式相比于全部采用真实设
备的方式,能够降低成本。例如,如果要在10个测试设备上测试应用程序,
可以选取3个真实设备和7个模拟设备,该7个模拟设备可以位于1个物理
设备上,显然,通过本申请实施例的方式能够通过3个真实设备和1个物理
设备(一般情况下,物理设备和真实设备的成本基本相当)即实现在10个测
试设备上测试应用程序,相比于现有技术所需的10个真实设备,显然降低了
成本。
由于模拟设备相比于真实设备,在部分实现功能上存在限制,比如模拟
设备一般不能实现模拟震动、多点触摸、PX(即pixels)转DIP(即Device
independentpixels)像素处理等功能,也就是说模拟设备无法完全达到真实设
备的测试效果,因此本申请实施例通过这种真实设备和模拟设备混合的方式,
较好地发挥了模拟设备的作用,在能够降低成本的同时,较大可能地保证了
测试效果。
这里需要强调的是,目前并没有可同时支持模拟设备和真实设备的混合
测试集群,而本实施例则创新性地通过真实设备和模拟设备混合构建了测试
设备池的方式,实现了一种混合测试集群,以满足现有技术的这种需求。
在本申请实施例中,应用程序指的是软件形式的客户端,在一种较优的
实施方式中,应用程序具体为安装在移动终端上的应用程序,或者也称为无
线应用程序。
在本申请实施例中,从测试设备池中选取了至少一个设备作为当前测试
设备进行测试,其中当选取出多个当前测试设备时,为了能够同时在多个当
前测试设备上进行测试,以节省测试时间,可以分别为各个当前测试设备建
立独立线程。具体地,步骤S102中的从测试设备池中选取至少一个设备作为
当前测试设备包括:从测试设备池中选取至少两个设备作为当前测试设备;
本实施例的方法还包括:为当前测试设备分别创建对应的线程;步骤S104和
S105中的向当前测试设备发送测试指令以及接收当前测试设备返回的测试结
果包括:利用当前测试设备分别对应的所述线程,向当前测试设备发送测试
指令以及接收当前测试设备返回的测试结果。可见,通过这种为各个当前测
试设备分别建立独立线程的方式,每当需要对某一个当前测试设备对应的消
息进行处理时(例如接收到该当前测试设备返回的测试结果),只需获取该当
前测试设备对应的线程,利用该对应的线程即能够完成相应的消息处理,从
而实现了同时在多个当前测试设备上的测试过程。
本申请实施例中,各个模拟设备分别对应一个设备标识,该设备标识为
虚拟映射标识,可以通过虚拟机工具VirtualBox进行分配。具体分配方式是:
各个所述模拟设备配置在至少一个物理设备上,所述物理设备通过虚拟机工
具VirtualBox为各个所述模拟设备分配对应的设备标识。
具体地,各个模拟设备对应的设备标识可以包括:该模拟设备所配置于
的物理设备的地址,以及该模拟设备的虚拟映射端口。其中虚拟映射端口可
以由虚拟机工具VirtualBox进行分配,下面具体说明一种由虚拟机工具
VirtualBox分配虚拟映射端口的方式。
通过虚拟机工具VirtualBox启动模拟设备后,虚拟机工具VirtualBox会自
动分配各个模拟设备的虚拟地址。每个模拟设备具有两个网卡,第一块网卡
设置为可访问物理设备模式(例如host-only模式),第二块网卡设置为可访问
外网模式(例如NAT模式)。由于物理设备和外网都不能直接访问模拟设备,
因此通过虚拟机工具VirtualBox的端口映射功能,可以将模拟设备的端口暴
露在物理设备上,对该端口的暴露方式可以是对第二块网卡进行设置,比如
在第二块网卡中添加一条规则:设置物理设备IP地址、端口、模拟设备IP地
址、端口。由于模拟设备已设置TCP/IP等协议端口,因此之后再将物理设备
的端口暴露出来,即可通过物理设备的IP地址、以及模拟设备的虚拟映射端
口连接模拟设备。
本申请实施例中的模拟设备包括各种终端模拟器,比如操作系统自带的
模拟器(例如Android自带模拟器或者iOS自带模拟器),然而由于操作系统
自带的模拟器,不仅运行速率较慢且效率较低。因此本申请中优选第三方模
拟器,即非系统自带的模拟器,例如开源的第三方模拟器Genymotion。并且
经过发明人研究发现,通过第三方模拟器和虚拟机工具VirtualBox结合使用,
即可以实现一个物理设备同时运行多个模拟器,运行速率和效率也有比较大
的提升。
下面本申请实施例将通过一个实施例来说明一个具体的应用场景。在该
实施例中,以模拟设备包括模拟器Genymotion为例加以说明。
请参阅图3,本申请实施例提供了应用程序的测试方法的另一种实施例。
本实施例应用于图2所示的测试系统中,该测试系统包括:用户交互设备201、
执行机202以及测试设备池203。
测试设备池203包括至少一个真实设备和至少一个模拟器Genymotion,
其中至少一个模拟器Genymotion配置于至少一个物理设备上,由于一个物理
设备上通常配置多个模拟器,因此物理设备的个数少于(一般是远少于)模
拟器的个数。在本申请实施例中以测试Android操作系统下的应用程序A为
例,因此模拟器能够模拟Android操作系统的运行环境。更具体地,模拟器还
能够模拟某一型号的手机等终端的具体运行环境(例如该型号手机的操作系
统、屏幕分辨率等)。
各个真实设备和各个模拟器分别对应一个设备标识。其中各个真实设备
对应的设备标识可以包括该真实设备的IP地址。而各个模拟器对应的设备标
识可以包括该模拟设备所配置于的物理设备的地址,以及该模拟设备的虚拟
映射端口。其中虚拟映射端口可以通过虚拟机工具VirtualBox进行分配。比
较重要的是,对于同一个物理设备上的多个虚拟器,设置的虚拟映射端口互
不相同,从而能够实现通过不同的端口区别各个模拟器。
在本申请实施例中,执行机202可以包括执行机集群,并且具体与测试
设备池203中的各个设备网络连接。如图2所示,执行机202与虚拟器
Genymotion网络连接,指的是执行机202与虚拟器Genymotion所配置于的物
理设备网络连接。执行机202与各个设备的网络连接主要包括有线连接和无
线连接两种方式,下面以与真实设备的网络连接为例说明这两种连接方式。
首先说明执行机202与真实设备的有线连接(比如USB连接),通过建立多
个真实设备组成的真机集群,一个执行机可以支持多个真实设备接入,接入
后获取各个真实设备的IP地址。其次说明执行机202与真实设备的无线连接
(比如WIFI连接),在实现无线连接之前,一般都需要执行机202获取对各
个设备的相应权限,因此执行机202首先会借助于USB等有线方式进行连接,
当连接成功之后通过TCP/IP等命令开启各个真实设备的无线通信端口,最后
获取IP地址后断开有线连接,即可通过无线连接访问真实设备。而执行机202
与虚拟设备的连接方式,与上述与真实设备的连接方式类似,这里不再赘述。
本实施例的方法包括:
S301:用户交互设备201接收用户对在Android系统下的应用程序A的
测试请求。该测试请求中还包括用户选取的测试设备类型和/或设备个数。
例如,在用户发送的测试请求中指示出,用户选取了10个测试设备,包
括3个真实设备和7个模拟设备。
S302:用户交互设备201执行必要性检查,从而判断测试环境是否出现
异常,如果没有异常,则表明可以继续测试过程,因此执行步骤S303;如果
出现异常,则进一步排查出现异常的原因。
其中必要性检查可以包括检测用户交互设备201、执行机202以及设备连
接池之间的连接是否出现异常等等。
S303:用户交互设备201基于用户选取的测试设备类型和/或设备个数,
从测试设备池中选取至少两个未处于使用状态的设备作为当前测试设备。
例如若测试设备池中包括有5个真实设备和20个虚拟设备,则从5个真
实设备中随机选取3个未处于使用状态的真实设备,从20个虚拟设备中随机
选取出7个未处于使用状态的真实设备。其中用户交互设备201在选取当前
测试设备之前,还可以判断未处于使用状态的设备个数或者类型是否满足用
户指示,如果否,则可以结束流程并向用户返回选取失败提示。
用户交互设备201可以从数据库中获取到测试设备池的设备信息。其中
设备信息包括测试设备池中包括的设备个数、各个设备的设备类型、各个设
备对应的设备标识、以及各个设备的使用状态等等。
S304:用户交互设备201将选取的各个当前测试设备标记为处于使用状
态。
由于某一设备(无论是真实设备还是虚拟设备)处于测试过程中时,无
法再调用该设备测试其他应用程序,因此将当前测试设备标记为处于使用状
态,测试完毕后再进行状态释放。
S305:用户交互设备201获取各个当前测试设备分别对应的设备标识。
S306:用户交互设备201将步骤S305中获取的设备标识发送至执行机
202。
S307:执行机202为各个当前测试设备分别建立一个线程,利用建立的
各个线程,分别向各个当前测试设备发送测试指令。测试指令用于指示各个
当前测试设备测试应用程序A。
能够同时建立的线程个数通常会受到软硬件的限制,例如同时最多建立
10个线程。
本申请实施例中还可以通过编写程序对测试环境进行搭建,其中该程序
支持shell脚本语言,其中该程序可以用于执行机202远程连接和安装当前测
试设备。此外,该程序还可以用于获取执行机202待发送的测试指令并对其
进行编译,将编译后的指令发送至各个当前测试设备。
S308:执行机202利用建立的各个线程,接收各个当前测试设备返回的
测试结果。
S309:执行机202将各个当前测试设备标记为未处于使用状态,以实现
状态释放。
S310:执行机202将测试结果返回至用户交互设备201以向用户显示。
如图4所示,对应图1所示的方法实施例,本申请还提供了应用程序的
测试系统的一种实施例。本实施例的系统包括测试设备池401和测试装置402。
测试设备池401中包括至少一个真实设备和至少一个模拟设备。在本申
请实施例中,真实设备指的是具有物理实体的设备,例如计算机、手机等都
属于真实设备。而模拟设备指的是一种本身没有物理实体的虚拟设备,能够
模拟各种具体的运行环境,比如模拟Android、iOS等操作系统的运行环境等
等,从而能够模拟真实设备的操作行为。需要说明的是,虽然模拟设备本身
不具有物理实体,但是其需要配置于物理设备上使用,并且通常一个物理设
备上会配置多个模拟设备。其中物理设备具体配置的模拟设备的个数,由物
理设备的硬件资源(比如内存)大小决定。
在本申请实施例中,为了便于查找出需要进行测试的设备,各个真实设
备和各个模拟设备分别对应一个设备标识。其中,由于模拟设备本身不具有
物理实体,因此各个模拟设备对应的设备标识为虚拟映射标识。
测试装置402用于接收用户对待测试应用程序的测试请求。
由于对应用程序的测试包括性能测试、稳定性测试、适配测试、自动化
测试等多种测试类型,因此该测试请求中还可以指示出当前测试的测试类型,
例如是性能测试还是稳定性测试,具体是哪一方面的性能测试等等。
测试装置402还用于从所述测试设备池中选取至少一个设备作为当前测
试设备。
在本申请实施例中,测试设备池包括至少一个真实设备和至少一个模拟
设备,因此测试装置402从测试设备池中选取出至少一个、真实设备和/或模
拟设备作为当前测试设备。因此测试装置402基于用户选取的测试设备类型
和/或设备个数,从测试设备池中进行选取。
在接收的测试请求中,还可以包括用户选取的测试设备类型和/或设备个
数,其中测试设备类型用于指示当前测试设备包括真实设备和/或模拟设备。
在本申请实施例中,测试设备池的设备信息可以存储在数据库中,其中
设备信息可以包括测试设备池中包括的设备个数、各个设备的设备类型、各
个设备对应的设备标识、以及各个设备的使用状态(一般仅从未处于使用状
态的设备中选取当前测试设备)等等。因此在选取当前测试设备之前,测试
装置402可以根据设备信息按照预设规则、或者随机选取出符合用户指示的
当前测试设备,如果测试设备池中处于未使用状态的设备个数或者类型不满
足用户指示时,可以停止工作并向用户返回选取失败提示。
测试装置402还用于获取所述当前测试设备分别对应的设备标识。
在本申请实施例中,由于测试设备池中的每个设备都分别对应一个设备
标识,因此测试装置402获取到当前测试设备中的各个设备分别对应的设备
标识。其中测试装置402具体可以从数据库存储的设备信息中获取。
测试装置402还用于基于所述当前测试设备分别对应的设备标识,向所
述当前测试设备发送测试指令。
其中,当前测试设备分别对应的设备标识用于在发送测试指令时,确定
出需发送的各个当前测试设备。例如设备标识可以包括设备通信地址(例如
IP地址+端口信息),因此测试装置402基于设备通信地址确定出各个当前测
试设备并发送测试指令。
测试指令中可以包括当前测试设备需执行的测试程序,从而指示各个当
前测试设备在接收到测试指令后,会分别执行测试程序从而实现对待测试应
用程序的测试过程。
测试装置402还用于接收所述当前测试设备返回的测试结果。其中所述
测试指令用于指示所述当前测试设备测试所述待测试应用程序。
各个当前测试在接收到测试指令后,会对待测试应用程序进行测试,并
将测试结果实时返回。通常该测试结果还会向用户进行显示。
在本申请实施例中,应用程序指的是软件形式的客户端,在一种较优的
实施方式中,应用程序具体为安装在移动终端上的应用程序,或者也称为无
线应用程序。
在本申请实施例中,从测试设备池中选取了至少一个设备作为当前测试
设备进行测试,其中当选取出多个当前测试设备时,为了能够同时在多个当
前测试设备上进行测试,以节省测试时间,可以分别为各个当前测试设备建
立独立线程。具体地,测试装置402用于从所述测试设备池中选取至少一个
设备作为当前测试设备包括:测试装置402用于从所述测试设备池中选取至
少两个设备作为当前测试设备;测试装置402还用于为所述当前测试设备分
别创建对应的线程;测试装置402用于向所述当前测试设备发送测试指令以
及接收所述当前测试设备返回的测试结果包括:测试装置402用于利用所述
当前测试设备分别对应的所述线程,向所述当前测试设备发送测试指令以及
接收所述当前测试设备返回的测试结果。可见,通过这种为各个当前测试设
备分别建立独立线程的方式,每当需要对某一个当前测试设备对应的消息进
行处理时(例如接收到该当前测试设备返回的测试结果),只需获取该当前测
试设备对应的线程,利用该对应的线程即能够完成相应的消息处理,从而实
现了同时在多个当前测试设备上的测试过程。
本申请实施例中,各个模拟设备分别对应一个设备标识,该设备标识为
虚拟映射标识,可以通过虚拟机工具VirtualBox进行分配。具体分配方式是:
各个所述模拟设备配置在至少一个物理设备上,所述物理设备通过虚拟机工
具VirtualBox为各个所述模拟设备分配对应的设备标识。
具体地,各个模拟设备对应的设备标识可以包括:该模拟设备所配置于
的物理设备的地址,以及该模拟设备的虚拟映射端口。其中虚拟映射端口可
以由虚拟机工具VirtualBox进行分配,下面具体说明一种由虚拟机工具
VirtualBox分配虚拟映射端口的方式。
通过虚拟机工具VirtualBox启动模拟设备后,虚拟机工具VirtualBox会自
动分配各个模拟设备的虚拟地址。每个模拟设备具有两个网卡,第一块网卡
设置为可访问物理设备模式(例如host-only模式),第二块网卡设置为可访问
外网模式(例如NAT模式)。由于物理设备和外网都不能直接访问模拟设备,
因此通过虚拟机工具VirtualBox的端口映射功能,可以将模拟设备的端口暴
露在物理设备上,对该端口的暴露方式可以是对第二块网卡进行设置,比如
在第二块网卡中添加一条规则:设置物理设备IP地址、端口、模拟设备IP地
址、端口。由于模拟设备已设置TCP/IP等协议端口,因此之后再将物理设备
的端口暴露出来,即可通过物理设备的IP地址、以及模拟设备的虚拟映射端
口连接模拟设备。
本申请实施例中的模拟设备包括各种终端模拟器,比如操作系统自带的
模拟器(例如Android自带模拟器或者iOS自带模拟器),然而由于操作系统
自带的模拟器,不仅运行速率较慢且效率较低。因此本申请中优选第三方模
拟器,即非系统自带的模拟器,例如开源的第三方模拟器Genymotion。并且
经过发明人研究发现,通过第三方模拟器和虚拟机工具VirtualBox结合使用,
即可以实现一个物理设备同时运行多个模拟器,运行速率和效率也有比较大
的提升。
需要说明的是,在本申请实施例中,测试装置402可以如图2所示,包
括用户交互设备和执行机。执行机具体与测试设备池中的各个设备网络连接。
因此在本实施例中,由用户交互设备执行:接收用户对待测试应用程序
的测试请求、从所述测试设备池中选取至少一个设备作为当前测试设备、以
及获取所述当前测试设备分别对应的设备标识。由执行机执行:基于所述当
前测试设备分别对应的设备标识,向所述当前测试设备发送测试指令、以及
接收所述当前测试设备返回的测试结果。在一种更加具体的应用场景中,用
户交互设备和执行机的具体功能可以参见图3所示的实施例,这里不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描
述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应
过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和
方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示
意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可
以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个
系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间
的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合
或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作
为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,
或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或
者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,
也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单
元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单
元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售
或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本
申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的
全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个
存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,
服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步
骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only
Memory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘
等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;
尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应
当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其
中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案
的本质脱离本申请各实施例技术方案的精神和范围。