CN105573902A - 一种应用程序的测试方法及系统 - Google Patents

一种应用程序的测试方法及系统 Download PDF

Info

Publication number
CN105573902A
CN105573902A CN201410532512.2A CN201410532512A CN105573902A CN 105573902 A CN105573902 A CN 105573902A CN 201410532512 A CN201410532512 A CN 201410532512A CN 105573902 A CN105573902 A CN 105573902A
Authority
CN
China
Prior art keywords
testing apparatus
equipment
test
current testing
analog machine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410532512.2A
Other languages
English (en)
Other versions
CN105573902B (zh
Inventor
程召
汪志贞
袁翠
刘磊
赵仕豪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201410532512.2A priority Critical patent/CN105573902B/zh
Publication of CN105573902A publication Critical patent/CN105573902A/zh
Application granted granted Critical
Publication of CN105573902B publication Critical patent/CN105573902B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本申请提供了一种应用程序的测试方法及系统,在所述方法中,测试设备池中包括至少一个真实设备和至少一个模拟设备;各个真实设备和各个模拟设备分别对应一个设备标识;各个模拟设备对应的设备标识为虚拟映射标识;所述方法包括:接收用户对待测试应用程序的测试请求;从测试设备池中选取至少一个设备作为当前测试设备;获取当前测试设备分别对应的设备标识;基于当前测试设备分别对应的设备标识,向当前测试设备发送测试指令;测试指令用于指示当前测试设备测试待测试应用程序;接收当前测试设备返回的测试结果。可见本申请实施例中通过真实设备和模拟设备混合构建了测试设备池,在能够降低成本的同时,较大可能地保证了测试效果。

Description

一种应用程序的测试方法及系统
技术领域
本申请涉及测试领域,尤其是涉及一种应用程序的测试方法及系统。
背景技术
目前,随着网络技术的不断发展,各种类型的应用程序层出不穷。为了保证应用程序的可靠性,减少用户在使用应用程序时可能出现的问题,在应用程序正式发布之前,往往都需要对其进行全方面的测试。
一种普遍的对应用程序的测试方法是,将真实设备作为测试设备使用,通过在测试设备上运行应用程序,以发现可能会出现的问题。由于真实设备本身具有物理实体,能够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(即Deviceindependentpixels)像素处理等功能,也就是说模拟设备无法完全达到真实设备的测试效果,因此本申请实施例通过这种真实设备和模拟设备混合的方式,较好地发挥了模拟设备的作用,在能够降低成本的同时,较大可能地保证了测试效果。
这里需要强调的是,目前并没有可同时支持模拟设备和真实设备的混合测试集群,而本实施例则创新性地通过真实设备和模拟设备混合构建了测试设备池的方式,实现了一种混合测试集群,以满足现有技术的这种需求。
在本申请实施例中,应用程序指的是软件形式的客户端,在一种较优的实施方式中,应用程序具体为安装在移动终端上的应用程序,或者也称为无线应用程序。
在本申请实施例中,从测试设备池中选取了至少一个设备作为当前测试设备进行测试,其中当选取出多个当前测试设备时,为了能够同时在多个当前测试设备上进行测试,以节省测试时间,可以分别为各个当前测试设备建立独立线程。具体地,步骤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-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (12)

1.一种应用程序的测试方法,其特征在于,测试设备池中包括至少一个真实设备和至少一个模拟设备;各个真实设备和各个模拟设备分别对应一个设备标识;各个模拟设备对应的设备标识为虚拟映射标识;所述方法包括:
接收用户对待测试应用程序的测试请求;
从所述测试设备池中选取至少一个设备作为当前测试设备;
获取所述当前测试设备分别对应的设备标识;
基于所述当前测试设备分别对应的设备标识,向所述当前测试设备发送测试指令;所述测试指令用于指示所述当前测试设备测试所述待测试应用程序;
接收所述当前测试设备返回的测试结果。
2.根据权利要求1所述的方法,其特征在于,从所述测试设备池中选取至少一个设备作为当前测试设备包括:
从所述测试设备池中选取至少两个设备作为当前测试设备;
所述方法还包括:为所述当前测试设备分别创建对应的线程;
向所述当前测试设备发送测试指令以及接收所述当前测试设备返回的测试结果包括:
利用所述当前测试设备分别对应的所述线程,向所述当前测试设备发送测试指令以及接收所述当前测试设备返回的测试结果。
3.根据权利要求1所述的方法,其特征在于,所述测试请求还包括用户选取的测试设备类型和/或设备个数;所述测试设备类型用于指示当前测试设备包括真实设备和/或模拟设备;
所述从所述测试设备池中选取至少一个设备作为当前测试设备包括:
基于所述测试设备类型和/或设备个数,从所述测试设备池中选取至少一个设备作为当前测试设备。
4.根据权利要求1所述的方法,其特征在于,各个所述模拟设备配置在至少一个物理设备上,所述物理设备通过虚拟机工具VirtualBox为各个所述模拟设备分配对应的设备标识。
5.根据权利要求4所述的方法,其特征在于,各个模拟设备对应的设备标识包括:该模拟设备所配置于的物理设备的地址,以及该模拟设备的虚拟映射端口。
6.根据权利要求1所述的方法,其特征在于,所述至少一个模拟设备包括第三方模拟器。
7.一种应用程序的测试系统,其特征在于,包括测试装置和测试设备池;
所述测试设备池中包括至少一个真实设备和至少一个模拟设备;各个真实设备和各个模拟设备分别对应一个设备标识;各个模拟设备对应的设备标识为虚拟映射标识;
所述测试装置用于接收用户对待测试应用程序的测试请求、从所述测试设备池中选取至少一个设备作为当前测试设备、获取所述当前测试设备分别对应的设备标识、基于所述当前测试设备分别对应的设备标识,向所述当前测试设备发送测试指令、以及接收所述当前测试设备返回的测试结果;
其中所述测试指令用于指示所述当前测试设备测试所述待测试应用程序。
8.根据权利要求7所述的系统,其特征在于,所述测试装置用于从所述测试设备池中选取至少一个设备作为当前测试设备包括:
所述测试装置用于从所述测试设备池中选取至少两个设备作为当前测试设备;
所述测试装置还用于为所述当前测试设备分别创建对应的线程;
所述测试装置用于向所述当前测试设备发送测试指令以及接收所述当前测试设备返回的测试结果包括:
所述测试装置用于利用所述当前测试设备分别对应的所述线程,向所述当前测试设备发送测试指令以及接收所述当前测试设备返回的测试结果。
9.根据权利要求7所述的系统,其特征在于,所述测试请求还包括用户选取的测试设备类型和/或设备个数;所述测试设备类型用于指示当前测试设备包括真实设备和/或模拟设备;
所述测试装置用于从所述测试设备池中选取至少一个设备作为当前测试设备包括:
所述测试装置用于基于所述测试设备类型和/或设备个数,从所述测试设备池中选取至少一个设备作为当前测试设备。
10.根据权利要求7所述的系统,其特征在于,各个所述模拟设备配置在至少一个物理设备上,所述物理设备通过虚拟机工具VirtualBox为各个所述模拟设备分配对应的设备标识。
11.根据权利要求10所述的系统,其特征在于,各个模拟设备对应的设备标识包括:该模拟设备所配置于的物理设备的地址,以及该模拟设备的虚拟映射端口。
12.根据权利要求7所述的系统,其特征在于,所述至少一个模拟设备包括第三方模拟器。
CN201410532512.2A 2014-10-10 2014-10-10 一种应用程序的测试方法及系统 Active CN105573902B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410532512.2A CN105573902B (zh) 2014-10-10 2014-10-10 一种应用程序的测试方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410532512.2A CN105573902B (zh) 2014-10-10 2014-10-10 一种应用程序的测试方法及系统

Publications (2)

Publication Number Publication Date
CN105573902A true CN105573902A (zh) 2016-05-11
CN105573902B CN105573902B (zh) 2018-07-03

Family

ID=55884068

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410532512.2A Active CN105573902B (zh) 2014-10-10 2014-10-10 一种应用程序的测试方法及系统

Country Status (1)

Country Link
CN (1) CN105573902B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106201798A (zh) * 2016-07-14 2016-12-07 努比亚技术有限公司 产品序列号处理装置及方法
CN108228407A (zh) * 2018-01-31 2018-06-29 深圳市证通电子股份有限公司 设备功能测试方法、装置及可读存储介质
CN109388532A (zh) * 2018-09-26 2019-02-26 Oppo广东移动通信有限公司 测试方法、装置、电子设备及计算机可读取存储介质
CN109769100A (zh) * 2019-01-17 2019-05-17 苏州科达科技股份有限公司 视频会议测试方法、装置及存储介质
CN109979444A (zh) * 2017-12-27 2019-07-05 深圳市优必选科技有限公司 一种语音指令自动化测试方法、终端以及装置
CN110618944A (zh) * 2019-09-20 2019-12-27 百度在线网络技术(北京)有限公司 设备模拟方法、装置、电子设备及存储介质
CN110704311A (zh) * 2019-09-24 2020-01-17 香港乐蜜有限公司 一种应用程序测试方法、装置、电子设备及可读存储介质
CN112650666A (zh) * 2019-10-12 2021-04-13 北京达佳互联信息技术有限公司 一种软件测试系统、方法、装置、控制设备及存储介质
CN112988322A (zh) * 2019-12-17 2021-06-18 菜鸟智能物流控股有限公司 一种模拟硬件驱动方法及装置
WO2022116427A1 (zh) * 2020-12-03 2022-06-09 平安科技(深圳)有限公司 一种测试方法、装置、电子设备和存储介质
WO2023185482A1 (zh) * 2022-03-29 2023-10-05 中兴通讯股份有限公司 测试方法、存储介质及电子装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102214139A (zh) * 2011-06-01 2011-10-12 北京航空航天大学 一种面向分布式系统的自动化测试的执行控制与调度方法
CN102495799A (zh) * 2011-12-02 2012-06-13 刘伟 移动终端的自动化测试系统和方法
US20130117609A1 (en) * 2011-11-03 2013-05-09 Tata Consultancy Services Limited System and Method for Testing and Analyses of the Computer Applications
CN103365770A (zh) * 2012-04-09 2013-10-23 陆兵 移动终端软件测试系统及软件测试方法
CN103853655A (zh) * 2012-11-30 2014-06-11 英业达科技有限公司 于待测装置外部产生虚拟测试单元的测试系统及其方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102214139A (zh) * 2011-06-01 2011-10-12 北京航空航天大学 一种面向分布式系统的自动化测试的执行控制与调度方法
US20130117609A1 (en) * 2011-11-03 2013-05-09 Tata Consultancy Services Limited System and Method for Testing and Analyses of the Computer Applications
CN102495799A (zh) * 2011-12-02 2012-06-13 刘伟 移动终端的自动化测试系统和方法
CN103365770A (zh) * 2012-04-09 2013-10-23 陆兵 移动终端软件测试系统及软件测试方法
CN103853655A (zh) * 2012-11-30 2014-06-11 英业达科技有限公司 于待测装置外部产生虚拟测试单元的测试系统及其方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张询等: "一种分布式的手机测试云系统", 《电信网技术》 *

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106201798A (zh) * 2016-07-14 2016-12-07 努比亚技术有限公司 产品序列号处理装置及方法
CN109979444A (zh) * 2017-12-27 2019-07-05 深圳市优必选科技有限公司 一种语音指令自动化测试方法、终端以及装置
CN108228407A (zh) * 2018-01-31 2018-06-29 深圳市证通电子股份有限公司 设备功能测试方法、装置及可读存储介质
CN109388532B (zh) * 2018-09-26 2022-10-28 Oppo广东移动通信有限公司 测试方法、装置、电子设备及计算机可读取存储介质
CN109388532A (zh) * 2018-09-26 2019-02-26 Oppo广东移动通信有限公司 测试方法、装置、电子设备及计算机可读取存储介质
CN109769100A (zh) * 2019-01-17 2019-05-17 苏州科达科技股份有限公司 视频会议测试方法、装置及存储介质
CN110618944A (zh) * 2019-09-20 2019-12-27 百度在线网络技术(北京)有限公司 设备模拟方法、装置、电子设备及存储介质
CN110704311A (zh) * 2019-09-24 2020-01-17 香港乐蜜有限公司 一种应用程序测试方法、装置、电子设备及可读存储介质
CN110704311B (zh) * 2019-09-24 2023-11-21 卓米私人有限公司 一种应用程序测试方法、装置、电子设备及可读存储介质
CN112650666A (zh) * 2019-10-12 2021-04-13 北京达佳互联信息技术有限公司 一种软件测试系统、方法、装置、控制设备及存储介质
CN112650666B (zh) * 2019-10-12 2024-04-09 北京达佳互联信息技术有限公司 一种软件测试系统、方法、装置、控制设备及存储介质
CN112988322A (zh) * 2019-12-17 2021-06-18 菜鸟智能物流控股有限公司 一种模拟硬件驱动方法及装置
WO2022116427A1 (zh) * 2020-12-03 2022-06-09 平安科技(深圳)有限公司 一种测试方法、装置、电子设备和存储介质
WO2023185482A1 (zh) * 2022-03-29 2023-10-05 中兴通讯股份有限公司 测试方法、存储介质及电子装置

Also Published As

Publication number Publication date
CN105573902B (zh) 2018-07-03

Similar Documents

Publication Publication Date Title
CN105573902A (zh) 一种应用程序的测试方法及系统
CN111200535B (zh) 设备的模拟系统和方法
CN105426298A (zh) 一种基于adb的软件测试方法和系统
CN102880546B (zh) 一种基于xml数据库的软件集成测试方法及系统
CN108121654B (zh) 一种基于Docker的软件大规模测试方法
CN111865708B (zh) 物联网系统的性能测试方法、平台、设备及存储介质
CN105787364B (zh) 任务的自动化测试方法、装置及系统
CN107659455B (zh) 一种iOS端Mock数据的方法、存储介质、设备及系统
JP2015534688A (ja) アプリの開発・コンパイル・デバッグ方法及び装置
CN110442043B (zh) 卫星gnc系统实时-半物理柔性化仿真测试系统
CN105653438B (zh) 安卓设备的跨进程自动化测试方法和装置
CN105468490A (zh) 一种服务器性能自动化测试方法及系统及装置
CN108111364B (zh) 一种业务系统的测试方法及装置
CN104317618A (zh) 一种固件分区处理方法和装置
CN111143150A (zh) 一种测试pcba板的方法、系统、测试设备及微控制单元
CN115184764A (zh) 一种芯片测试方法、装置、电子设备及存储介质
CN105868109A (zh) 一种改进的移动端应用测试方法和系统
CN103123605A (zh) 一种Android平台自动化集成测试方法和装置
CN111400167A (zh) Redfish服务合规性验证方法、装置及设备和介质
CN104679648B (zh) 跨应用的自动化测试方法
CN112559335A (zh) 测试方法、装置、设备和存储介质
CN111124772A (zh) 一种云平台存储性能测试方法、系统、终端及存储介质
CN105095063A (zh) 应用程序测试方法、装置及系统
CN104580298A (zh) 文件上传处理方法及装置
CN104834586A (zh) 安卓界面自动化测试方法、装置及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant