发明内容
有鉴于此,本公开至少提供一种测试方案,以提高针对软件测试的稳定性。
第一方面,本公开实施例提供了一种测试方法,应用于测试服务器,所述测试服务器中存储有与多个测试终端分别匹配的测试虚拟机的网络端口的信息以及该测试终端的互联网协议IP端口,多个所述测试虚拟机所在的同一宿主机与所述多个测试终端之间通过数据线进行连接;所述测试方法包括:
接收到针对所述多个测试终端中至少一个测试终端的测试指令后,基于所述至少一个测试终端分别匹配的目标测试虚拟机的网络端口,指示每个所述目标测试虚拟机对该目标测试虚拟机匹配的测试终端进行软件测试;
若在设定时长内未接收到所述至少一个测试终端中任一测试终端反馈的测试结果,基于所述任一测试终端的IP端口,与该任一测试终端建立无线通信连接,并通过所述无线通信连接指示所述任一测试终端进行软件测试。
在一种可能的实施方式中,在设定时长内未接收到所述至少一个测试终端中任一测试终端反馈的测试结果之后,所述测试方法还包括:
通过与所述任一测试终端之间的无线通信连接获取所述任一测试终端的操作页面的信息;所述操作页面的信息中包含所述任一测试终端的当前工作模式的信息,所述当前工作模式与正常状态下的工作模式不匹配,所述正常状态下的工作模式是指所述任一测试终端能够在设定时长内反馈所述测试结果的情况下的工作模式;
响应在所述操作页面上触发的工作模式恢复指令,控制所述任一测试终端恢复至所述正常状态下的工作模式。
在一种可能的实施方式中,所述在设定时长内未接收到所述至少一个测试终端中任一测试终端反馈的测试结果之后,所述测试方法还包括:
通过与所述任一测试终端之间的无线通信连接获取所述任一测试终端的操作页面的信息;所述操作页面的信息中包含用于指示所述任一测试终端与所述宿主机之间的数据线连接是否断开的信息;
响应在所述操作页面上触发的指示所述任一测试终端与所述宿主机之间的数据线连接断开的反馈指令,向后台服务器发送指示所述任一测试终端与所述宿主机之间的数据线连接断开的消息。
在一种可能的实施方式中,所述测试方法还包括:
接收到任一目标测试虚拟机反馈的测试日志后,将所述测试日志发送至后台服务器;所述测试日志是由所述任一目标测试虚拟机在匹配的测试终端进行软件测试时,基于所述软件测试产生的测试记录信息生成的;
所述测试记录信息包括软件的测试开始时间,软件的测试结束时间和软件运行占用的内存空间。
第二方面,本申请实施例提供了一种测试方法,应用于宿主机,所述测试方法包括:
针对多个测试终端中的每个测试终端,在检测到该测试终端通过通用串行总线usb接口接入所述宿主机后,创建与该测试终端对应的虚拟容器;
在所述虚拟容器中挂载预先设置的系统调试桥镜像,并将与所述虚拟容器对应的测试终端挂载至所述系统调试桥镜像,生成控制所述测试终端进行软件测试的测试虚拟机;
所述测试虚拟机用于在接收到测试服务器发送的测试指令后,将所述测试指令发送至对应的测试终端。
在一种可能的实施方式中,所述测试方法还包括:
检测到任一测试终端与所述usb接口的连接断开时,将所述任一测试终端匹配的测试虚拟机删除。
在一种可能的实施方式中,检测所述测试终端通过通用串行总线usb接口接入所述宿主机,包括:
检测接入所述usb接口的设备的属性信息,若该属性信息与测试终端的属性信息匹配,则确定当前接入所述usb接口的设备为测试终端。
第三方面,本申请实施例提供了一种测试方法,应用于进行软件测试的多个测试终端中的任一测试终端,与所述多个测试终端分别匹配的测试虚拟机配置有相同的认证秘钥,所述多个测试终端中的每个测试终端保存有所述认证秘钥;所述测试方法包括:
所述测试终端在接收到测试虚拟机发送的数据连接请求时,基于保存的认证秘钥和所述数据连接请求中携带的待认证秘钥,对所述数据连接请求进行安全认证;
在确定所述数据连接请求为合法连接请求后,与所述测试虚拟机建立数据连接;
在通过所述数据连接接收到所述测试虚拟机发送的测试指令时,基于所述测试指令进行软件测试。
在一种可能的实施方式中,所述测试方法还包括:
向匹配的测试虚拟机反馈测试结果,所述测试结果包括用于指示测试完成的信息或者用于指示测试失败的信息。
第四方面,本申请实施例提供了一种测试系统,所述测试系统包括测试服务器、宿主机和多个测试终端;所述测试服务器和多个测试终端,分别与所述宿主机之间通过数据线连接;所述宿主机中包含与多个测试终端分别匹配的测试虚拟机;所述测试服务器中存储有与多个测试终端分别匹配的测试虚拟机的网络端口的信息以及该测试终端的互联网协议IP端口;
所述测试服务器,用于接收到针对所述多个测试终端中至少一个测试终端的测试指令后,基于所述至少一个测试终端分别匹配的目标测试虚拟机的网络端口,向所述目标测试虚拟机发送用于指示该目标测试虚拟机对该目标测试虚拟机匹配的测试终端进行软件测试的测试指令;以及若在设定时长内未接收到所述至少一个测试终端中任一测试终端反馈的测试结果,基于所述任一测试终端的IP端口,与该任一测试终端建立无线通信连接,并通过所述无线通信连接指示所述任一测试终端进行软件测试;
所述目标测试虚拟机,用于接收到所述测试指令后,向匹配的测试终端发送所述测试指令;以及在接收到测试终端反馈的测试结果后,将所述测试结果发送至所述测试服务器;
所述测试终端,用于接收到所述目标测试虚拟机或所述测试服务器发送的所述测试指令后,针对所述测试指令对应的软件进行测试,并反馈测试结果,所述测试结果用于指示测试完成的信息或者用于指示测试失败的信息。
第五方面,本申请实施例提供了一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如第一方面至第三方面任一所述测试方法的步骤。
第六方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如第一方面至第三方面任一所述测试方法的步骤。
本公开实施例提供的测试方法,接收到针对多个测试终端中至少一个测试终端的测试指令后,先基于该至少一个测试终端分别匹配的目标测试虚拟机的网络端口,指示每个目标测试虚拟机对该目标测试虚拟机匹配的测试终端进行软件测试,若在设定时长内未接收到该至少一个测试终端中任一测试终端反馈的测试结果,则可以基于该任一测试终端的IP端口,与该任一测试终端建立无线通信连接,保证测试终端中的软件测试能够继续进行。
可见,本公开实施例先选择通过数据线连接的方式,对测试终端进行软件测试,当数据线连接方式的测试过程无法进行时,再切换成无线通信连接的方式继续对测试终端进行软件测试,保证软件测试的连续性,提高了针对软件测试的稳定性。另外,本公开实施例提出的测试方法,每个测试虚拟机只负责控制一个测试终端进行测试,当其中一个测试虚拟机奔溃无法继续工作时,并不会影响其它测试终端的测试过程,当多个测试终端同时进行测试时,相互之间不会干扰。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,应当理解,本公开中附图仅起到说明和描述的目的,并不用于限定本公开的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本公开中使用的流程图示出了根据本公开的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本公开内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
随着智能终端设备的发展,越来越多的应用软件应运而生,比如一些手机应用程序(Application,App),为了保证应用软件在用户的终端设备中运行时的稳定性,一般都会提前在多个测试终端运行该应用软件,以便对该应用软件进行测试。
在测试过程中,通常会通过数据线连接好测试终端和测试服务器,测试服务器通过系统调试桥,比如安卓调试桥与测试终端进行通信,从而控制测试终端完成对应用软件的测试,然而在测试过程中,当测试服务器和测试终端的通信中断时,就会导致测试中断,测试中断后,在重新恢复连接后,需要重新开始测试,可见目标应用软件的测试过程常常存在不稳定的情况,针对此,本公开实施例提供了一种测试方法,用于解决上述技术问题。
首先,为了介绍本公开实施例提供的测试方法,这里先引入本公开实施例中的测试系统,如图1所示,为测试系统的一种结构示意图,包括测试服务器11、宿主机12和若干测试终端13,其中,宿主机12中包括与多个测试终端13分别匹配的测试虚拟机14,测试服务器11与宿主机12可以通过网线连接,宿主机12与每个测试终端13通过数据线连接,比如通过通用串行总线(Universal Serial Bus,USB)连接,这里测试服务器11可以存储有与多个测试终端13分别匹配的测试虚拟机14的网络端口的信息以及该测试终端13的互联网协议IP端口。
具体地,这里测试服务器存储的网络端口用于确定指示哪个测试虚拟机对该测试虚拟机匹配的测试终端进行软件测试,IP端口用于确定指示对哪个测试终端进行软件测试。
这里,首先针对测试虚拟机的创建过程将在后文进行介绍,这里首先介绍测试方法。
如图2所示,为本公开实施例提供的一种测试方法的流程示意图,具体包括以下步骤S201~S202
S201,接收到针对多个测试终端中至少一个测试终端的测试指令后,基于至少一个测试终端分别匹配的目标测试虚拟机的网络端口,指示每个目标测试虚拟机对该目标测试虚拟机匹配的测试终端进行软件测试。
这里,测试指令可以是指示至少一个测试终端中的某个应用软件开始运行的指令,比如指示测试终端1和测试终端2对安装的应用软件A进行运行,可以基于测试终端1和测试终端2分别匹配的目标测试虚拟机,即测试虚拟机1和测试虚拟机2的网络端口,指示每个目标测试虚拟机对该目标测试虚拟机匹配的测试终端进行软件测试,为了便于描述,这里将基于目标测试虚拟机对该目标测试虚拟机匹配的测试终端进行软件测试的方式记为第一种测试方式。
具体地,这里的网络端口用于确定将该测试指令发送至哪个测试虚拟机,比如图1中的测试虚拟机1、测试虚拟机2和测试虚拟机3的端口号码分别为1111、1112和1113,若指示测试终端1和测试终端2进行软件测试,则可以向端口号码分别为1111和1112的测试虚拟机发送测试指令。
测试虚拟机接收到测试指令后,就会基于系统调试桥协议(比如安卓调试桥协议adb)与该测试虚拟机匹配的测试终端建立数据连接,并在数据连接建立成功后,将测试指令通过该数据连接发送至匹配的测试终端,指示该测试终端进行软件测试,该测试终端会在设定时长内将测试结果反馈至匹配的测试虚拟机,然后测试虚拟机将该测试结果发送至测试服务器,这里的测试结果可以是指示测试完成的信息,也可以是指示测试失败的信息,这里的设定时长可以是指测试终端中的应用软件正常执行完与测试指令对应的流程后所需要的时长,比如应用软件为音乐播放软件,测试指令为控制该音乐播放软件打开,则这里的设定时长可以为该音乐播放软件正常打开所需要的时长。
这里,测试虚拟机基于系统调试桥协议(比如安卓调试桥协议adb)与该测试虚拟机匹配的测试终端建立数据连接时,可以先向匹配的测试终端发送数据连接请求,在测试服务器进行安全验证后,成功建立数据连接,具体建立数据连接的过程将在下文进行详细阐述,在此不做赘述。
这里的目标测试虚拟机泛指与某个测试终端匹配的测试虚拟机,比如接收到针对多个测试终端中编号为001的测试终端的测试指令后,这里的目标测试虚拟机即为编号为001的测试终端匹配的测试虚拟机。
S202,若在设定时长内未接收到至少一个测试终端中任一测试终端反馈的测试结果,基于任一测试终端的IP端口,与该任一测试终端建立无线通信连接,并通过该无线通信连接指示任一测试终端进行软件测试。
若在设定时长内未接收到任一测试终端反馈的测试结果,则说明该任一测试终端与该任一测试终端匹配的测试虚拟机之间无法建立数据连接,或者与该任一测试终端匹配的测试虚拟机发生奔溃,再或者该任一测试终端与宿主机之间的数据线连接断开,此时,第一种测试方式无法实施,这里考虑引入基于无线通信连接指示测试终端进行测试的第二种测试方式,即测试服务器可以通过预先保存的该任一测试终端的IP端口,与该任一测试终端建立无线通信连接,比如建立WIFI连接,就可以基于该WIFI连接,向该任一测试终端发送测试指令,使得该任一测试终端继续开始未结束的软件测试,并在测试完毕后,向测试服务器反馈测试结果。
本公开实施例提出的测试方法,宿主机中包括与多个测试终端分别匹配的测试虚拟机,每个测试虚拟机只负责控制一个测试终端进行测试,当其中一个测试虚拟机奔溃无法继续工作时,并不会影响其它测试终端的测试过程,此外,当测试虚拟机和测试终端之间的数据连接中断时,测试服务器能够通过无线连接控制测试终端继续进行测试,从而保证测试的稳定性。
以上过程,若在设定时长内未接收到至少一个测试终端中任一测试终端反馈的测试结果,考虑到可能的原因为该任一测试终端与匹配的测试虚拟机之间无法基于系统调试桥协议建立数据连接,或者该任一测试终端与宿主机之间的数据线连接断开导致的,考虑到切换至通过无线连接直接控制测试终端进行软件测试的第二种测试方式后,测试服务器通过无线连接向测试终端发送测试指令的速度较慢,且测试终端通过该无线连接反馈测试结果的速度也较慢,因而整个测试流程就会比较耗时,此时可以考虑远程恢复第一种测试方式,比如,若需要测试终端对应用软件A、应用软件B和应用软件C依次进行测试,在针对应用软件A进行测试时,若第一种测试方式无法实施,则采用第二种测试方式对应用软件A在该测试终端中的运行进行测试,因为第二种测试方式的测试速度较慢,故可以考虑远程恢复第一种测试方式,为了不干扰当前测试的应用软件A,当前测试的应用软件A仍可以通过第二种测试方式进行测试,后续则通过恢复后的第一种测试方式对未开始测试的应用软件B和应用软件C进行测试。
在一种实施方式中,在设定时长内未接收到至少一个测试终端中任一测试终端反馈的测试结果之后,如图3所示,测试方法还包括以下具体步骤S301~S302:
S301,通过与任一测试终端之间的无线通信连接获取任一测试终端的操作页面的信息。
其中,操作页面的信息中包含任一测试终端的当前工作模式的信息,当前工作模式与正常状态下的工作模式不匹配,正常状态下的工作模式是指任一测试终端能够在设定时长内反馈测试结果的情况下的工作模式。
S302,响应在操作页面上触发的工作模式恢复指令,控制任一测试终端恢复至正常状态下的工作模式。
比如,针对测试终端可以包括三种工作模式,图片传输模式、文件传输模式以及充电模式,当任一测试终端开始对应用软件进行测试时,可能为图片传输模式或者文件传输模式,若该任一测试终端发生故障,导致工作模式由图片传输模式或者文件传输模式变为充电模式,则此时与该任一测试终端匹配的测试虚拟机无法与该任一测试终端建立数据连接,进而该任一测试终端无法接收该任一测试终端匹配的测试虚拟机发送的测试指令,或者无法在设定时长内将测试结果反馈至测试虚拟机。
这里考虑通过与任一测试终端之间的无线通信连接获取任一测试终端的操作页面的信息,通过操作页面的信息来确定该任一测试终端的当前工作模式的信息,若确定当前工作模式与正常状态下的工作模式不匹配,则可以更改该任一测试终端的当前工作模式,控制任一测试终端恢复至正常状态下的工作模式,这样,当该任一测试终端匹配的测试虚拟机再次接收到后续测试指令后,即可以与该任一测试终端建立数据连接,进而将后续测试指令发送至该任一测试终端,使得该任一测试终端基于后续测试指令继续进行软件测试,即恢复测试流程较快的第一种测试方式。
在一种实施方式中,在设定时长内未接收到至少一个测试终端中任一测试终端反馈的测试结果之后,如图4所示,测试方法还包括以下具体步骤S401~S402:
S401,通过与任一测试终端之间的无线通信连接获取任一测试终端的操作页面的信息;操作页面的信息中包含用于指示任一测试终端与宿主机之间的数据线连接是否断开的信息。
S402,响应在操作页面上触发的指示任一测试终端与宿主机之间的数据线连接断开的反馈指令,向后台服务器发送指示任一测试终端与宿主机之间的数据线连接断开的消息。
这里指示任一测试终端与宿主机之间的数据线连接是否断开的信息,可以通过预先设置的标识进行表示,比如通过“on”表示连接,通过“off”表示断开连接,或者通过该任一测试终端中操作页面的显示区域显示的图形标识符来确定该任一测试终端与宿主机之间的数据线连接是否断开。当通过与任一测试终端之间的无线通信连接获取任一测试终端的操作页面的信息中包含的标识为指示断开连接的标识时,则可以确定该任一测试终端与宿主机之间的数据线连接断开。
若确定该任一测试终端与宿主机之间的数据线连接断开后,则可以触发向后台服务器进行反馈的触发操作,进而测试服务器可以接收到指示该任一测试终端与宿主机之间的数据线连接断开的反馈指令,并向后台服务器进行反馈指示该任一测试终端与宿主机之间的数据线连接断开的消息,以便工作人员能够恢复该任一测试终端与宿主机之间的数据线连接,进而再恢复通过第一种测试方式进行的软件测试。
以上实施例,在设定时长内未接收到至少一个测试终端中任一测试终端反馈的测试结果的情况下,通过与任一测试终端之间的无线通信连接能够获取该任一测试终端的操作页面的信息,进而可以基于该操作页面的信息确定无法基于第一种测试方式进行测试的故障原因,在解决故障后,即可恢复基于第一种测试方式进行测试,从而提高对该任一测试终端中后续待测试软件的测试速度。
另外,在对测试终端中的应用软件进行测试时,可以向后台服务器反馈测试日志,便于工作人员能够得知应用软件在各个测试终端中的运行情况。
具体地,本公开实施例提出的测试方法还包括:
(1)接收到任一目标测试虚拟机反馈的测试日志后,将测试日志发送至后台服务器;测试日志是由任一目标测试虚拟机在匹配的测试终端进行软件测试时,基于软件测试产生的测试记录信息生成的;
(2)测试记录信息包括软件的测试开始时间,软件的测试结束时间和软件运行占用的内存空间。
这里的测试日志可以由测试虚拟机生成,具体地,该测试虚拟机匹配的测试终端在进行软件测试过程中,会产生测试记录信息,比如测试终端在针对应用软件A进行测试过程中,会将应用软件A的测试开始时间、应用软件A的测试结束时间和应用软件A在运行时所占用的内存空间发送至该测试终端匹配的测试虚拟机,测试虚拟机按照预先设置好的日志格式,生成该测试终端的测试日志,并将该测试日志发送至后台服务器,便于工作人员得知应用软件在该测试终端中的运行情况。
下面,将详细介绍上文提到的测试虚拟机的创建过程,如图5所示,本公开实施例还提供了一种测试方法,应用于宿主机,测试方法包括以下具体步骤S501~S502:
S501,针对多个测试终端中的每个测试终端,在检测到该测试终端通过通用串行总线usb接口接入宿主机后,创建与该测试终端对应的虚拟容器。
S502,在虚拟容器中挂载预先设置的系统调试桥镜像,并将与虚拟容器对应的测试终端挂载至系统调试桥镜像,生成控制测试终端进行软件测试的测试虚拟机,其中,测试虚拟机用于在接收到测试服务器发送的测试指令后,将测试指令发送至对应的测试终端。
具体地,在宿主机中创建测试虚拟机可以包括两个部分,首先是创建虚拟管理服务器,然后通过虚拟管理服务器创建测试虚拟机,虚拟管理服务器的创建过程为:可以先在宿主机中创建一个虚拟容器,然后在该虚拟容器中挂载管理服务器镜像,得到由虚拟容器和管理服务器镜像构成的虚拟管理服务器,该虚拟管理服务器能够创建测试虚拟机以及能够监测宿主机的usb接口中usb设备的接入和断开。
进一步地,为了提高硬件上的稳定性,本公开实施例中的宿主机与包括多个usb接口的集线器hub连接,该集线器配置有独立电源,虚拟管理服务器对集线器相连的usb接口实时监测过程中,若监测到任一测试终端通过usb接口接入宿主机后,则开始创建该任一测试终端匹配的测试虚拟机,具体过程为:先创建与该任一测试终端对应的虚拟容器,然后在该虚拟容器中挂载预先设置的系统调试桥镜像,进而将该任一测试终端挂载至该系统调试桥镜像,这样就得到能够控制该任一测试终端进行软件测试的测试虚拟机,在得到该测试虚拟机后,会为该测试虚拟机开启一个网络端口,以及该测试虚拟机会开启其匹配的该任一测试终端的系统调试桥协议端口以及IP端口。
这里得到的测试虚拟机在接收到测试服务器发送的测试指令后,能够基于该测试虚拟机匹配的测试终端的系统调试桥协议端口与该测试终端建立数据连接,将测试指令发送至该测试终端,使得该测试终端进行软件测试。
这里宿主机中的虚拟管理服务器在检测测试终端通过通用串行总线usb接口接入宿主机时,具体可以包括:
检测接入usb接口的设备的属性信息,若该属性信息与测试终端的属性信息匹配,则确定当前接入usb接口的设备为测试终端。
这里接入usb接口的设备可以包括其它非测试终端类型的设备,比如鼠标、键盘等可以通过usb接口接入的设备,每种接入的usb设备包含其特有的属性信息,可以通过其特有的属性信息来识别哪些为测试终端,比如测试终端为智能手机,则可以通过智能手机的生产厂商信息来作为该测试终端的属性信息,当确定接入usb设备的属性信息与测试终端的属性信息匹配时,即可以确定当前接入usb接口的设备为测试终端,此时即开始创建与该测试终端匹配的测试虚拟机。
进一步地,为了节省宿主机的运行空间,测试方法还包括:
检测到任一测试终端与usb接口的连接断开时,将任一测试终端匹配的测试虚拟机删除。
具体为虚拟管理服务器检测到任一测试终端与usb接口的连接断开时,则从宿主机中将该任一测试终端匹配的测试虚拟机删除,这样,宿主机即可以释放该测试虚拟机所占用的运行空间。
另外,宿主机在与测试终端建立数据线连接,并在创建了与该测试终端匹配的测试虚拟机后,测试虚拟机可以向匹配的测试终端发送连接请求,即请求测试终端进行安全认证,这里若提前使得测试终端保存匹配的测试虚拟机的认证秘钥,则测试终端在接收到测试虚拟机发送的连接请求后,即可以通过连接请求中携带的待认证秘钥和保存的认证秘钥确定该连接请求是否为合法连接请求,在通过安全认证后与匹配的测试虚拟机建立数据连接,进而在通过该数据连接接收到匹配的测试虚拟机发送的测试指令后,能够基于该测试指令进行软件测试。
这样通过提前在测试终端中保存匹配的测试虚拟机的认证秘钥,且使得每个测试虚拟机的认证秘钥均保持相同,这样即使在测试终端与宿主机的数据线在断开重新恢复连接后,也能够很快与匹配的测试虚拟机的连接请求进行安全认证,无需弹框进行人工认证,从而保证自动化测试的进行。下面结合图6,以检测到两个测试终端接入为例,阐述一种创建与这两个测试终端分别匹配的测试虚拟机的方式:
首先将宿主机和集线器通过数据线连接,然后在宿主机中创建虚拟容器1,并在虚拟容器1中挂载预先设置好的管理服务器镜像,虚拟容器1和管理服务器镜像构成虚拟管理服务器,该虚拟管理服务器负责监控通过usb接口接入集线器的测试终端,以及创建与每个测试终端匹配的测试虚拟机,以图6为例,当监测到测试终端2和测试终端3接入usb接口后,会在宿主机中分别创建与测试终端2匹配的测试虚拟机以及与测试终端3匹配的测试虚拟机,以与测试终端2匹配的测试虚拟机的创建过程为例,首先,虚拟管理服务器创建与测试终端对应的虚拟容器2,然后将预先设置的系统调试桥镜像挂载至该虚拟容器2内,确定测试终端2的挂载路径后,基于该挂载路径将测试终端2挂载至虚拟容器2中的系统调试桥镜像,即得到有虚拟容器2和内部的系统调试桥镜像构成的与测试终端2匹配的测试虚拟机,与测试终端3匹配的测试虚拟机的创建过程类似,在此不再赘述。
如图7所示,为本公开实施例提供应用于测试终端的测试方法的流程图,该测试方法应用于进行软件测试的多个测试终端中的至少一个测试终端,与多个测试终端分别匹配的测试虚拟机配置有相同的认证秘钥,多个测试终端中的每个测试终端保存有认证秘钥;测试方法具体包括以下步骤S701~S703:
S701,测试终端在接收到测试虚拟机发送的数据连接请求时,基于保存的认证秘钥和数据连接请求中携带的待认证秘钥,对数据连接请求进行安全认证;
S702,在确定数据连接请求为合法连接请求后,与测试虚拟机建立数据连接;
S703,在通过数据连接接收到测试虚拟机发送的测试指令时,基于测试指令进行软件测试。
这里的认证秘钥可以是在宿主机中得到测试管理服务器后,由测试管理服务器在创建每个测试虚拟机的过程中,为各个测试虚拟机分配的相同的认证秘钥,且使得与每个测试终端保留该认证秘钥,这样当测试虚拟机需要向匹配的测试终端发送测试指令之前,可以先向匹配的测试终端发送连接请求,即请求测试终端进行安全认证,则测试终端在接收到测试虚拟机发送的连接请求后,即可以通过连接请求中携带的待认证秘钥和保存的认证秘钥确定该连接请求为合法连接请求,即通过安全认证并与匹配的测试虚拟机建立数据连接,在通过该数据连接接收到匹配的测试虚拟机发送的测试指令后,能够基于该测试指令进行软件测试。
这样通过提前在测试终端中保存匹配的测试虚拟机的认证秘钥,且使得每个测试虚拟机的认证秘钥均保持相同,这样即使在测试终端与测试虚拟机所处的宿主机的数据线在断开重新恢复连接后,也能够很快与匹配的测试虚拟机的连接请求进行安全认证,无需弹框进行人工认证,从而保证自动化测试的进行。
进一步地,测试方法还包括:
向匹配的测试虚拟机反馈测试结果,测试结果包括用于指示测试完成的信息或者用于指示测试失败的信息。
这里测试终端在基于测试指令进行软件测试过程中,若软件的运行出现故障,则可以向匹配的测试虚拟机发送指示测试失败的信息,比如可以通过标识码“0”表示测试失败;若软件的运行过程未出现故障,成功运行完毕后,可以向匹配的测试虚拟机发送指示测试完成的信息,比如通过标识码“1”表示测试完成。
本公开实施例还提供了一种测试系统,该测试系统的结构示意图可以参见图1所示,测试系统包括测试服务器、宿主机和多个测试终端;测试服务器和多个测试终端,分别与宿主机之间通过数据线连接;宿主机中包含与多个测试终端分别匹配的测试虚拟机;测试服务器中存储有与多个测试终端分别匹配的测试虚拟机的网络端口的信息以及该测试终端的互联网协议IP端口;
测试服务器,用于接收到针对多个测试终端中至少一个测试终端的测试指令后,基于至少一个测试终端分别匹配的目标测试虚拟机的网络端口,向目标测试虚拟机发送用于指示该目标测试虚拟机对该目标测试虚拟机匹配的测试终端进行软件测试的测试指令;以及若在设定时长内未接收到至少一个测试终端中任一测试终端反馈的测试结果,基于任一测试终端的IP端口,与该任一测试终端建立无线通信连接,并通过无线通信连接指示任一测试终端进行软件测试;
目标测试虚拟机,用于接收到测试指令后,向匹配的测试终端发送测试指令;以及在接收到测试终端反馈的测试结果后,将测试结果发送至测试服务器;
测试终端,用于接收到目标测试虚拟机或测试服务器发送的测试指令后,针对测试指令对应的软件进行测试,并反馈测试结果,测试结果用于指示测试完成的信息或者用于指示测试失败的信息。
在一种可能的实施方式中,测试服务器,还用于在设定时长内未接收到至少一个测试终端中任一测试终端反馈的测试结果之后,通过与任一测试终端之间的无线通信连接获取任一测试终端的操作页面的信息;操作页面的信息中包含任一测试终端的当前工作模式的信息,当前工作模式与正常状态下的工作模式不匹配,正常状态下的工作模式是指任一测试终端能够在设定时长内反馈测试结果的情况下的工作模式;以及响应在操作页面上触发的工作模式恢复指令,控制任一测试终端恢复至正常状态下的工作模式。
在一种可能的实施方式中,测试服务器,还用于在设定时长内未接收到至少一个测试终端中任一测试终端反馈的测试结果之后,通过与任一测试终端之间的无线通信连接获取任一测试终端的操作页面的信息;操作页面的信息中包含用于指示任一测试终端与宿主机之间的数据线连接是否断开的信息;以及响应在操作页面上触发的指示任一测试终端与宿主机之间的数据线连接断开的反馈指令,向后台服务器发送指示任一测试终端与宿主机之间的数据线连接断开的消息。
在一种可能的实施方式中,测试终端,还用于在进行软件测试时,生成测试记录信息,并将生成的测试记录信息发送至与该测试终端匹配的目标测试虚拟机,该测试记录信息包括软件的测试开始时间,软件的测试结束时间和软件运行占用的内存空间;
目标测试虚拟机,还用于接收到测试记录信息后,基于该测试记录信息生成匹配的测试终端的测试日志,并将该测试日志发送至测试服务器;
测试服务器,还用于接收到目标测试虚拟机发送的测试日志后,将该测试日志发送至后台服务器。
在一种可能的实施方式中,宿主机用于按照以下方式创建测试虚拟机:
针对多个测试终端中的每个测试终端,在检测到该测试终端通过通用串行总线usb接口接入宿主机后,创建与该测试终端对应的虚拟容器;
在虚拟容器中挂载预先设置的系统调试桥镜像,并将与虚拟容器对应的测试终端挂载至系统调试桥镜像,生成控制测试终端进行软件测试的测试虚拟机;
测试虚拟机用于在接收到测试服务器发送的测试指令后,将测试指令发送至对应的测试终端。
在一种可能的实施方式中,宿主机,还用于检测到任一测试终端与usb接口的连接断开时,将任一测试终端匹配的测试虚拟机删除。
在一种可能的实施方式中,宿主机,具体用于检测接入usb接口的设备的属性信息,若该属性信息与测试终端的属性信息匹配,则确定当前接入usb接口的设备为测试终端。
在一种可能的实施方式中,与多个测试终端分别匹配的测试虚拟机配置有相同的认证秘钥,多个测试终端中的每个测试终端保存有认证秘钥;
测试服务器,用于接收到针对任一测试终端的测试指令后,向该任一测试终端对应的目标测试虚拟机发送用于指示该目标测试虚拟机对该任一测试终端进行软件测试的测试指令;
目标测试虚拟机,还用于接收到该测试指令后,向匹配的任一测试终端发送数据连接请求;该数据连接请求中携带待认证秘钥;
任一测试终端,还用于在接收到目标测试虚拟机发送的数据连接请求时,基于保存的认证秘钥和待认证秘钥,对数据连接请求进行安全认证;在确定数据连接请求为合法连接请求后,与测试虚拟机建立数据连接;以及在通过数据连接接收到测试虚拟机发送的测试指令时,基于测试指令进行软件测试。
在一种可能的实施方式中,任一测试终端,还用于向匹配的目标测试虚拟机反馈测试结果,测试结果包括用于指示测试完成的信息或者用于指示测试失败的信息。
基于同一技术构思,本公开实施例中还提供了与测试方法对应的测试装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述测试方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
如图8所示,为本公开实施例提供的一种测试装置800,应用于测试服务器,测试服务器中存储有与多个测试终端分别匹配的测试虚拟机的网络端口的信息以及该测试终端的互联网协议IP端口,多个测试虚拟机所在的同一宿主机与多个测试终端之间通过数据线进行连接;测试装置800包括:
第一测试模块801,接收到针对多个测试终端中至少一个测试终端的测试指令后,基于至少一个测试终端分别匹配的目标测试虚拟机的网络端口,指示每个目标测试虚拟机对该目标测试虚拟机匹配的测试终端进行软件测试;
第二测试模块802,用于若在设定时长内未接收到第一测试模块801传输的至少一个测试终端中任一测试终端反馈的测试结果,基于任一测试终端的IP端口,与该任一测试终端建立无线通信连接,并通过无线通信连接指示任一测试终端进行软件测试。
在一种可能的实施方式中,在设定时长内未接收到至少一个测试终端中任一测试终端反馈的测试结果之后,第二测试模块802还用于:
通过与任一测试终端之间的无线通信连接获取任一测试终端的操作页面的信息;操作页面的信息中包含任一测试终端的当前工作模式的信息,当前工作模式与正常状态下的工作模式不匹配,正常状态下的工作模式是指任一测试终端能够在设定时长内反馈测试结果的情况下的工作模式;
响应在操作页面上触发的工作模式恢复指令,控制任一测试终端恢复至正常状态下的工作模式。
在一种可能的实施方式中,在设定时长内未接收到至少一个测试终端中任一测试终端反馈的测试结果之后,第二测试模块802还用于:
通过与任一测试终端之间的无线通信连接获取任一测试终端的操作页面的信息;操作页面的信息中包含用于指示任一测试终端与宿主机之间的数据线连接是否断开的信息;
响应在操作页面上触发的指示任一测试终端与宿主机之间的数据线连接断开的反馈指令,向后台服务器发送指示任一测试终端与宿主机之间的数据线连接断开的消息。
在一种可能的实施方式中,第一测试模块801还用于:
接收到任一目标测试虚拟机反馈的测试日志后,将测试日志发送至后台服务器;测试日志是由任一目标测试虚拟机在匹配的测试终端进行软件测试时,基于软件测试产生的测试记录信息生成的;
测试记录信息包括软件的测试开始时间,软件的测试结束时间和软件运行占用的内存空间。
如图9所示,为本公开实施例提供的另一种测试装置900,应用于宿主机,测试装置900包括:
创建模块901,用于针对多个测试终端中的每个测试终端,在检测到该测试终端通过通用串行总线usb接口接入宿主机后,创建与该测试终端对应的虚拟容器;
生成模块902,用于在虚拟容器中挂载预先设置的系统调试桥镜像,并将与虚拟容器对应的测试终端挂载至系统调试桥镜像,生成控制测试终端进行软件测试的测试虚拟机;其中,测试虚拟机用于在接收到测试服务器发送的测试指令后,将测试指令发送至对应的测试终端。
在一种可能的实施方式中,创建模块901还用于:
检测到任一测试终端与usb接口的连接断开时,将任一测试终端匹配的测试虚拟机删除。
在一种可能的实施方式中,创建模块901在执行检测测试终端通过通用串行总线usb接口接入宿主机时,包括:
检测接入usb接口的设备的属性信息,若该属性信息与测试终端的属性信息匹配,则确定当前接入usb接口的设备为测试终端。
如图10所示,本公开实施例提供了另一种测试装置1000,应用于进行软件测试的多个测试终端中的任一测试终端,与多个测试终端分别匹配的测试虚拟机配置有相同的认证秘钥,多个测试终端中的每个测试终端保存有认证秘钥;测试装置1000包括:
认证模块1001,用于测试终端在接收到测试虚拟机发送的数据连接请求时,基于保存的认证秘钥和数据连接请求中携带的待认证秘钥,对数据连接请求进行安全认证;
连接模块1002,用于在确定数据连接请求为合法连接请求后,与测试虚拟机建立数据连接;
测试模块1003,用于在通过数据连接接收到测试虚拟机发送的测试指令时,基于测试指令进行软件测试。
在一种可能的实施方式中,测试模块1003还用于:
向匹配的测试虚拟机反馈测试结果,测试结果包括用于指示测试完成的信息或者用于指示测试失败的信息。
本公开实施例还提供了一种电子设备1100,该电子设备1100可以为测试服务器,如图11所示,为本公开实施例提供的电子设备1100的结构示意图,包括:处理器1101、存储介质1102和总线1103,存储介质1102存储有处理器1101可执行的机器可读指令,当电子设备1100运行时,处理器1101与存储介质1102之间通过总线803通信,机器可读指令被处理器1101执行时执行如下处理:
测试服务器中存储有与多个测试终端分别匹配的测试虚拟机的网络端口的信息以及该测试终端的互联网协议IP端口,多个测试虚拟机所在的同一宿主机与多个测试终端之间通过数据线进行连接;
接收到针对多个测试终端中至少一个测试终端的测试指令后,基于至少一个测试终端分别匹配的目标测试虚拟机的网络端口,指示每个目标测试虚拟机对该目标测试虚拟机匹配的测试终端进行软件测试;
若在设定时长内未接收到至少一个测试终端中任一测试终端反馈的测试结果,基于任一测试终端的IP端口,与该任一测试终端建立无线通信连接,并通过无线通信连接指示任一测试终端进行软件测试。
一种可能的实施方式中,在设定时长内未接收到至少一个测试终端中任一测试终端反馈的测试结果之后,处理器1101执行的指令中,还包括:
通过与任一测试终端之间的无线通信连接获取任一测试终端的操作页面的信息;操作页面的信息中包含任一测试终端的当前工作模式的信息,当前工作模式与正常状态下的工作模式不匹配,正常状态下的工作模式是指任一测试终端能够在设定时长内反馈测试结果的情况下的工作模式;
响应在操作页面上触发的工作模式恢复指令,控制任一测试终端恢复至正常状态下的工作模式。
一种可能的实施方式中,在设定时长内未接收到至少一个测试终端中任一测试终端反馈的测试结果之后,处理器1101执行的指令中,还包括:
通过与任一测试终端之间的无线通信连接获取任一测试终端的操作页面的信息;操作页面的信息中包含用于指示任一测试终端与宿主机之间的数据线连接是否断开的信息;
响应在操作页面上触发的指示任一测试终端与宿主机之间的数据线连接断开的反馈指令,向后台服务器发送指示任一测试终端与宿主机之间的数据线连接断开的消息。
一种可能的实施方式中,处理器1101执行的指令中,还包括:
接收到任一目标测试虚拟机反馈的测试日志后,将测试日志发送至后台服务器;测试日志是由任一目标测试虚拟机在匹配的测试终端进行软件测试时,基于软件测试产生的测试记录信息生成的;
测试记录信息包括软件的测试开始时间,软件的测试结束时间和软件运行占用的内存空间。
本公开实施例还提供了一种电子设备1200,该电子设备1200可以为宿主机,如图12所示,为本公开实施例提供的电子设备1200的结构示意图,包括:处理器1201、存储介质1202和总线1203,存储介质1202存储有处理器1201可执行的机器可读指令,当电子设备1200运行时,处理器1201与存储介质1202之间通过总线1203通信,机器可读指令被处理器1201执行时执行如下处理:
针对多个测试终端中的每个测试终端,在检测到该测试终端通过通用串行总线usb接口接入宿主机后,创建与该测试终端对应的虚拟容器;
在虚拟容器中挂载预先设置的系统调试桥镜像,并将与虚拟容器对应的测试终端挂载至系统调试桥镜像,生成控制测试终端进行软件测试的测试虚拟机;
测试虚拟机用于在接收到测试服务器发送的测试指令后,将测试指令发送至对应的测试终端。
一种可能的实施方式中,处理器1201执行的指令中,还包括:
检测到任一测试终端与usb接口的连接断开时,将任一测试终端匹配的测试虚拟机删除。
一种可能的实施方式中,处理器1201执行的指令中,按照以下方式检测接入的测试终端:
检测接入usb接口的设备的属性信息,若该属性信息与测试终端的属性信息匹配,则确定当前接入usb接口的设备为测试终端。
本公开实施例还提供了一种电子设备1300,该电子设备1300可以为宿主机,如图13所示,为本公开实施例提供的电子设备1300的结构示意图,包括:处理器1301、存储介质1302和总线1303,存储介质1302存储有处理器1301可执行的机器可读指令,当电子设备1300运行时,处理器1301与存储介质1302之间通过总线1303通信,机器可读指令被处理器1301执行时执行如下处理:
与多个测试终端分别匹配的测试虚拟机配置有相同的认证秘钥,多个测试终端中的每个测试终端保存有认证秘钥;
测试终端在接收到测试虚拟机发送的数据连接请求时,基于保存的认证秘钥和数据连接请求中携带的待认证秘钥,对数据连接请求进行安全认证;
在确定数据连接请求为合法连接请求后,与测试虚拟机建立数据连接;
在通过数据连接接收到测试虚拟机发送的测试指令时,基于测试指令进行软件测试。
一种可能的实施方式中,处理器1301执行的指令中,还包括:
向匹配的测试虚拟机反馈测试结果,测试结果包括用于指示测试完成的信息或者用于指示测试失败的信息。
本公开实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述测试方法的步骤。
具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述的测试方法,从而提高测试的稳定性。
本公开实施例提供的测试方法,接收到针对多个测试终端中至少一个测试终端的测试指令后,先基于该至少一个测试终端分别匹配的目标测试虚拟机的网络端口,指示每个目标测试虚拟机对该目标测试虚拟机匹配的测试终端进行软件测试,若在设定时长内未接收到该至少一个测试终端中任一测试终端反馈的测试结果,则可以基于该任一测试终端的IP端口,与该任一测试终端建立无线通信连接,保证测试终端中的软件测试能够继续进行。
可见,本公开实施例先选择通过数据线连接的方式,对测试终端进行软件测试,当数据线连接方式的测试过程无法进行时,再切换成无线连接的方式继续对测试终端进行软件测试,保证软件测试的连续性,提高了针对软件测试的稳定性。另外,本公开实施例提出的测试方法,每个测试虚拟机只负责控制一个测试终端进行测试,当其中一个测试虚拟机奔溃无法继续工作时,并不会影响其它测试终端的测试过程,当多个测试终端同时进行测试时,相互之间不会干扰。
本公开实施例所提供的测试方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
本公开实施例所提供的测试装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本公开实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。
在本公开所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围。都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。