测试系统、方法和装置
技术领域
本发明涉及计算机技术领域,特别是一种测试系统、方法和装置。
背景技术
USB(Universal Serial Bus,通用串行总线)是连接计算机系统与外部设备的一个串口总线标准,也是一种输入输出接口的技术规范,被广泛应用于个人电脑和移动设备等信息通讯产品,并扩展至摄影器材、数字电视(机顶盒)、游戏机等其它相关领域。目前,常见的USB设备包括U盘(全称USB闪存驱动器)、摄像头、键盘、鼠标、打印机、扫描仪等。很多软件的功能涉及到与USB设备交互,因此此类软件的测试环节中,测试人员需要在实体机上插入USB设备进行测试。
相关技术中,USB设备测试主要依靠测试人员在实体机上手工进行测试。为了模拟USB设备初始连接系统、以及从系统断开等场景,测试过程需要经常手工插拔设备。由于人工能够同时操作的实体机数量以及单台实体机上能操作的USB设备的数量限制,导致手工测试效率非常低。针对该问题,已有的半自动化测试方案是将USB设备的插拔过程工具化,测试人员可以使用实体机上的工具操作USB设备,在一定程度上提高了测试效率。然而,这种半自动化测试方案仍然不能解决大量USB设备测试的问题,测试效率提升幅度小。
因此,在大量设备测试的需求下,如何提高测试效率成为目前亟待解决的技术问题。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的测试系统、方法和相应的装置。
依据本发明的第一个方面,提供了一种测试系统,包括中央控制器,至少一台实体机,以及同所述实体机的连接器接口物理连接的多个被测试设备,其中,
所述至少一台实体机,每台实体机上设置有至少一个能够对被测试设备进行测试的虚拟机;
所述中央控制器,适于接收测试任务,向一个或多个虚拟机各自所在的实体机下发测试命令;
所述至少一台实体机,适于接收所述测试命令,启动实体机上对应的虚拟机,由启动的各虚拟机识别被测试设备,以执行所述测试任务。
所述中央控制器,接收测试任务,根据预先存储的测试任务与虚拟机的对应关系,查询能够执行所述测试任务的一个或多个虚拟机;
所述中央控制器下发的所述测试命令中携带有对应的实体机上能够执行所述测试任务的虚拟机的信息;
所述至少一台实体机,根据所述测试命令中携带的虚拟机的信息启动实体机上对应的虚拟机。
可选地,由启动的各虚拟机执行所述测试任务之前,启动的各虚拟机,检查其是否识别被测试设备,若是,则在虚拟机中执行所述测试任务;若否,则在虚拟机中生成表示虚拟机未识别被测试设备的日志文件,以在所述实体机扫描到所述日志文件时,由所述实体机关闭虚拟机,并先禁用再启用被测试设备,进而重新启动虚拟机执行所述测试任务。
可选地,所述各虚拟机,创建与被测试设备建立初始连接的虚拟机快照,并保存;所述虚拟机通过回滚到所述虚拟机快照,进而遍历其上所有设备的设备标识,通将对被测试设备的识别结果同所述虚拟机快照比对,判断虚拟机是否识别被测试设备。
可选地,所述设备标识包括下列至少之一:
设备类型;
设备接口标准协议分配给各个设备厂商的标识;
设备厂商分配给各个设备的标识;
设备接口的标识。
可选地,由启动的各虚拟机执行所述测试任务之后,所述至少一台实体机,检查被测试设备是否已从虚拟机中释放;若否,则先禁用再启用被测试设备,以便下次在虚拟机中对被测试设备进行测试操作。
可选地,所述至少一台实体机,检查被测试设备在虚拟机的设备管理器中的设备名称;若检查到的所述设备名称与被测试设备从虚拟机中释放后的设备名称不相同,则确定被测试设备未从虚拟机中释放;若检查到的所述设备名称与被测试设备从虚拟机中释放后的设备名称相同,则确定被测试设备已从虚拟机中释放。
可选地,所述实体机先禁用再启用被测试设备,包括:所述实体机遍历其上所有的设备句柄,发现设备句柄的设备实例路径等于被测试设备的设备标识时,将被测试设备的连接状态先置为断开disable,然后置为连接enable,实现对被测试设备的插拔操作。
可选地,在所述多个被测试设备同所述实体机的连接器接口物理连接、且分别与所述实体机上设置的虚拟机建立初始连接时,
所述至少一台实体机,根据被测试设备的类型,为各虚拟机配置能够执行的测试任务;
所述各虚拟机,将其自身的信息、被配置的能够执行的测试任务以及所在的实体机的信息发送至所述中央控制器,由所述中央控制器对应存储;
所述中央控制器,还适于接收所述各虚拟机发送的其自身的信息、被配置的能够执行的测试任务以及所在的实体机的信息,并对应存储。
依据本发明的第二个方面,提供了一种测试方法,应用于至少一台实体机,每台实体机上设置有至少一个能够对被测试设备进行测试的虚拟机,多个被测试设备同所述实体机的连接器接口物理连接,包括:
接收测试命令,所述测试命令由中央控制器根据测试任务下发的;
启动实体机上对应的虚拟机,由启动的各虚拟机识别被测试设备,以执行所述测试任务。
可选地,所述测试命令中携带有对应的实体机上能够执行所述测试任务的虚拟机的信息,所述启动实体机上对应的虚拟机,包括:
根据所述测试命令中携带的虚拟机的信息启动实体机上对应的虚拟机。
可选地,由启动的各虚拟机执行所述测试任务之前,还包括:
由启动的各虚拟机检查其是否识别被测试设备;
若是,则在虚拟机中执行所述测试任务;
若否,则在虚拟机中生成表示虚拟机未识别被测试设备的日志文件,以在所述实体机扫描到所述日志文件时,由所述实体机关闭虚拟机,并先禁用再启用被测试设备,进而重新启动虚拟机执行所述测试任务。
可选地,由启动的各虚拟机检查其是否识别被测试设备,包括:
所述各虚拟机创建与被测试设备建立初始连接的虚拟机快照,并保存;
由启动的各虚拟机通过回滚到所述虚拟机快照,进而遍历其上所有设备的设备标识,通将对被测试设备的识别结果同所述虚拟机快照比对,判断虚拟机是否识别被测试设备。
可选地,所述设备标识包括下列至少之一:
设备类型;
设备接口标准协议分配给各个设备厂商的标识;
设备厂商分配给各个设备的标识;
设备接口的标识。
可选地,由启动的各虚拟机执行所述测试任务之后,还包括:
检查被测试设备是否已从虚拟机中释放;
若否,则先禁用再启用被测试设备,以便下次在虚拟机中对被测试设备进行测试操作。
可选地,检查被测试设备是否已从虚拟机中释放,包括:
检查被测试设备在虚拟机的设备管理器中的设备名称;
若检查到的所述设备名称与被测试设备从虚拟机中释放后的设备名称不相同,则确定被测试设备未从虚拟机中释放;
若检查到的所述设备名称与被测试设备从虚拟机中释放后的设备名称相同,则确定被测试设备已从虚拟机中释放。
可选地,所述实体机先禁用再启用被测试设备,包括:所述实体机遍历其上所有的设备句柄,发现设备句柄的设备实例路径等于被测试设备的设备标识时,将被测试设备的连接状态先置为断开disable,然后置为连接enable,实现对被测试设备的插拔操作。
可选地,在所述多个被测试设备同所述实体机的连接器接口物理连接、且分别与所述实体机上设置的虚拟机建立初始连接时,还包括:
根据被测试设备的类型,为各虚拟机配置能够执行的测试任务,由各虚拟机将其自身的信息、被配置的能够执行的测试任务以及所在的实体机的信息发送至所述中央控制器。
依据本发明的第三个方面,提供了一种测试装置,应用于至少一台实体机,每台实体机上设置有至少一个能够对被测试设备进行测试的虚拟机,多个被测试设备同所述实体机的连接器接口物理连接,包括:
接收模块,适于接收测试命令,所述测试命令由中央控制器根据测试任务下发的;
测试模块,适于启动实体机上对应的虚拟机,由启动的各虚拟机识别被测试设备,以执行所述测试任务。
可选地,所述测试命令中携带有对应的实体机上能够执行测试任务的虚拟机的信息,所述测试模块,还适于:
根据所述测试命令中携带的虚拟机的信息启动实体机上对应的虚拟机。
可选地,由启动的各虚拟机执行所述测试任务之前,所述测试模块,还适于:
由启动的各虚拟机检查其是否识别被测试设备;
若是,则在虚拟机中执行所述测试任务;
若否,则在虚拟机中生成表示虚拟机未识别被测试设备的日志文件,以在所述实体机扫描到所述日志文件时,由所述实体机关闭虚拟机,并先禁用再启用被测试设备,进而重新启动虚拟机执行所述测试任务。
可选地,所述装置还包括:
创建模块,适于所述各虚拟机创建与被测试设备建立初始连接的虚拟机快照,并保存;
所述测试模块,还适于由启动的各虚拟机通过回滚到所述虚拟机快照,进而遍历其上所有设备的设备标识,通将对被测试设备的识别结果同所述虚拟机快照比对,判断虚拟机是否识别被测试设备。
可选地,所述设备标识包括下列至少之一:
设备类型;
设备接口标准协议分配给各个设备厂商的标识;
设备厂商分配给各个设备的标识;
设备接口的标识。
可选地,由启动的各虚拟机执行所述测试任务之后,所述测试模块,还适于:
检查被测试设备是否已从虚拟机中释放;
若否,则先禁用再启用被测试设备,以便下次在虚拟机中对被测试设备进行测试操作。
可选地,所述测试模块,还适于:
检查被测试设备在虚拟机的设备管理器中的设备名称;
若检查到的所述设备名称与被测试设备从虚拟机中释放后的设备名称不相同,则确定被测试设备未从虚拟机中释放;
若检查到的所述设备名称与被测试设备从虚拟机中释放后的设备名称相同,则确定被测试设备已从虚拟机中释放。
可选地,所述测试模块,还适于:
所述实体机遍历其上所有的设备句柄,发现设备句柄的设备实例路径等于被测试设备的设备标识时,将被测试设备的连接状态先置为断开disable,然后置为连接enable,实现对被测试设备的插拔操作。
可选地,在所述多个被测试设备同所述实体机的连接器接口物理连接、且分别与所述实体机上设置的虚拟机建立初始连接时,还包括配置模块,适于:
根据被测试设备的类型,为各虚拟机配置能够执行的测试任务,由各虚拟机将其自身的信息、被配置的能够执行的测试任务以及所在的实体机的信息发送至所述中央控制器。
本发明提供的测试系统,包括了中央控制器,至少一台实体机,以及同实体机的连接器接口物理连接的多个被测试设备,其中,至少一台实体机中的每台实体机上设置有至少一个能够对被测试设备进行测试的虚拟机。中央控制器接收到测试任务时,向一个或多个虚拟机各自所在的实体机下发测试命令,即是由中央控制器进行测试任务的分发。随后,至少一台实体机接收中央控制器下发的测试命令,启动实体机上对应的虚拟机,由启动的各虚拟机识别被测试设备,以执行所述测试任务。由此可见,本发明采用中央控制器、至少一台实体机以及每台实体机上设置的至少一个能够对被测试设备进行测试的虚拟机,构建了一个分布式虚拟机系统,利用各虚拟机并发地对被测试设备进行测试,有效地提高了测试效率。并且,本发明通过实体机与虚拟机的交互工作,虚拟机识别被测试设备,实现在虚拟机中对被测试设备的自动化测试,而无需手动进行插拔,解放人力资源,测试效率提升幅度大。
进一步地,本发明可以对测试过程中遇到的两种异常(即测试时虚拟机与用于测试的设备未连接,以及测试之后用于测试的设备未从虚拟机中释放)自动进行处理,无需手动进行插拔实现被测试设备的修复,解放了人力资源,提高测试效率,并提高了测试的准确性和稳定性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的测试系统的结构示意图;
图2示出了根据本发明一个实施例的应用于中央控制器110的测试方法的流程图;
图3示出了根据本发明一个实施例的应用于至少一台实体机120的测试方法的流程图;
图4示出了各虚拟机中创建连接U盘的虚拟机快照;
图5示出了根据本发明一个实施例的在实体机Q1中的虚拟机S1上执行U盘测试任务的方法的流程图;
图6示出了U盘的设备实例路径;
图7示出了U盘连接到VMware虚拟机后的设备名称;
图8示出了根据本发明一个实施例的应用于中央控制器的测试装置的结构示意图;以及
图9示出了根据本发明一个实施例的应用于至少一台实体机的测试装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为解决上述技术问题,本发明实施例提供了一种测试系统,图1示出了根据本发明一个实施例的测试系统的结构示意图。如图1所示,该系统至少包括:中央控制器110,至少一台实体机120,以及同实体机120的连接器接口物理连接的多个被测试设备140,其中,
至少一台实体机120,每台实体机上设置有至少一个能够对被测试设备进行测试的虚拟机130;
中央控制器110,适于接收测试任务,向一个或多个虚拟机各自所在的实体机下发测试命令;
至少一台实体机120,适于接收测试命令,启动实体机上对应的虚拟机,由启动的各虚拟机识别被测试设备,以执行所述测试任务。
本发明提供的测试系统,包括了中央控制器,至少一台实体机,以及同实体机的连接器接口物理连接的多个被测试设备,其中,至少一台实体机中的每台实体机上设置有至少一个能够对被测试设备进行测试的虚拟机。中央控制器接收到测试任务时,向一个或多个虚拟机各自所在的实体机下发测试命令,即是由中央控制器进行测试任务的分发。随后,至少一台实体机接收中央控制器下发的测试命令,启动实体机上对应的虚拟机,由启动的各虚拟机识别被测试设备,以执行所述测试任务。由此可见,本发明采用中央控制器、至少一台实体机以及每台实体机上设置的至少一个能够对被测试设备进行测试的虚拟机,构建了一个分布式虚拟机系统,利用各虚拟机并发地对被测试设备进行测试,有效地提高了测试效率。并且,本发明通过实体机与虚拟机的交互工作,虚拟机识别被测试设备,实现在虚拟机中对被测试设备的自动化测试,而无需手动进行插拔,解放人力资源,测试效率提升幅度大。
需要说明的是,本发明中的被测试设备140可以是USB、VGA(Video GraphicsArray,视频图形阵列)、PS/2(Personal System 2,个人系统2)等接口类型的设备。另外,将被测试设备140同实体机120的连接器接口物理连接的,进而实体机上的操作系统通过连接器接口识别被测试设备140。
利用本发明实施例提供的测试系统进行测试,可以分为两个阶段,第一个阶段是测试系统的构建,第二个阶段是利用构建好的测试系统进行测试。下面将分别对这两个阶段进行详细说明。
首先介绍测试系统的构建,主要包括分布式虚拟机系统的搭建,虚拟机的注册以及创建虚拟机快照等步骤。
先是关于分布式虚拟机系统的搭建。基于前文图1部分的介绍,本发明提供的测试系统包括了中央控制器110,至少一台实体机120,以及同实体机120的连接器接口物理连接的多个被测试设备140,其中,至少一台实体机120中每台实体机上设置有至少一个能够对被测试设备进行测试的虚拟机130。
然后是虚拟机的注册。在多个被测试设备140同实体机120的连接器接口物理连接、且分别与至少一台实体机120上设置的虚拟机130建立初始连接,即虚拟机130识别到物理连接的被测试设备时,至少一台实体机120将会根据被测试设备的类型,为各虚拟机130配置能够执行的测试任务。例如,被测试设备的类型为U盘,则为与U盘建立初始连接的虚拟机配置能够执行的测试任务为U盘测试任务。又例如,被测试设备的类型为摄像头,则为与摄像头建立初始连接的虚拟机配置能够执行的测试任务为摄像头测试任务。进一步地,各虚拟机130会将其自身的信息、被配置的能够执行的测试任务以及所在的实体机的信息发送至中央控制器110,由中央控制器110对应存储,也就是说,每个虚拟机与被测试设备建立初始连接时,会向中央控制器110注册其相关信息,包括其自身的信息、被配置的能够执行的测试任务以及所在的实体机的信息(例如,所在的实体机的IP(Internet Protocol,网络之间互连的协议)地址)等。中央控制器110接收到虚拟机注册的相关信息后,对应存储注册的相关信息,这样,中央控制器110就管理了各虚拟机与其对应的能够执行的测试任务。例如当中央控制器110接收到一个测试任务A时,可以根据它管理的各虚拟机与其对应的能够执行的测试任务,查询到能够执行测试任务A的一个或多个虚拟机,进而向一个或多个虚拟机所在的实体机下发测试命令,从而实现了测试任务A的分发。
接着是创建虚拟机快照。在多个被测试设备140同实体机120的连接器接口物理连接、且分别与至少一台实体机120上设置的虚拟机130建立初始连接,即虚拟机130识别到物理连接的被测试设备时,各虚拟机130还会创建与被测试设备建立初始连接的虚拟机快照,并保存。实体机启动对应的虚拟机之后,回滚到虚拟机快照;虚拟机遍历其上所有设备的设备标识,通将对被测试设备的识别结果同所述虚拟机快照比对,判断虚拟机是否识别被测试设备。这样,保证了实体机启动虚拟机时,回滚到虚拟机快照,实现虚拟机自动识别被测试设备,无需通过手动操作将虚拟机与被测试设备连接,提高测试效率。
此外,在多个被测试设备与实体机连接时,实体机将会分配给每个被测试设备一个设备标识,这样,实体机可以根据这些设备标识,对被测试设备进行管理。以及,在多个被测试设备分别与实体机上设置的虚拟机建立初始连接,即虚拟机识别到物理连接的被测试设备时,虚拟机也会给被测试设备分配一个设备标识,这样,虚拟机也可以根据其分配的设备标识对被测试设备进行管理。
所述设备标识还包括设备句柄。
举例来说,通过遍历虚拟机上所有的设备句柄,当发现设备句柄的设备实例路径等于被测试设备连接到虚拟机上的设备实例路径时,可以确定虚拟机识别被测试设备,反之,当未找到设备句柄的设备实例路径等于被测试设备连接到虚拟机上的设备实例路径时,则确定虚拟机未识别被测试设备。所述被测试设备连接到虚拟机上的设备实例路径可以以虚拟机快照作为标准。
以上介绍了前期的测试系统的构建过程,下面将介绍利用构建好的测试系统进行测试。
基于前文图1部分的介绍,中央控制器110接收测试任务,根据预先存储的测试任务与虚拟机的对应关系,查询能够执行接收的测试任务的一个或多个虚拟机,并向一个或多个虚拟机各自所在的实体机下发测试命令,其中,测试命令中携带有对应的实体机上能够执行测试任务的虚拟机的信息。随后,至少一台实体机120接收中央控制器110下发的测试命令,并根据测试命令中携带的虚拟机的信息启动实体机上对应的虚拟机,由启动的各虚拟机识别被测试设备,以执行测试任务。在测试的过程中,本发明能够及时处理两种可能存在的异常情况,即测试时虚拟机未识别被测试设备,以及执行测试任务之后被测试设备未从虚拟机中释放。
首先,关于第一种异常情况,本发明实施例提供了一种优选的处理方案,在该方案中,在启动的各虚拟机中进行测试操作之前,启动的各虚拟机检查其是否已与被测试设备连接,即测试各虚拟机是否识别被测试设备,若识别被测试设备,则继续在虚拟机中执行测试任务;反之,则生成表示虚拟机未识别被测试设备的日志文件,以在实体机扫描到该日志文件时,由实体机关闭虚拟机,先禁用再启用被测试设备,进而重新启动虚拟机执行测试任务。
这里,先禁用再启用被测试设备是由实体机通过遍历所有的设备句柄,发现设备句柄的设备实例路径等于该被测试设备的设备实例路径时,将被测试设备的设备句柄先置为disable(断开),然后置为enable(连接),实现对被测试设备的插拔操作,即实现对被测试设备的先禁用再启用操作。
进一步地,检查虚拟机是否识别被测试设备,可以遍历虚拟机上所有设备的设备标识,判断是否存在被测试设备的设备标识,若存在,则确定虚拟机识别被测试设备,若不存在,则确定虚拟机未识别被测试设备。这里的设备标识可以用于标识被测试设备的多种信息,例如设备类型、设备接口标准协议分配给各个设备厂商的标识、设备厂商分配给各个设备的标识、设备接口的标识等。举例来说,当虚拟机与被测试设备建立初始连接,即虚拟机识别到物理连接的被测试设备时,虚拟机会分配给该被测试设备一个设备标识,该设备标识可以作为被测试设备连接到虚拟机上的一个设备实例路径,即设备句柄如“USB\VID_1908&PID_2310\6&30D4F9B0&0&3”,其中,USB为该设备的设备类型;VID_1908为USB设备接口标准协议分配给各个设备厂商的标识,1908为USB设备接口标准协议分配给金士顿U盘的标识,且是唯一的;PID_2310是设备厂商分配给各个设备的标识;最后一串字符6&30D4F9B0&0&3是设备接口的标识,如果该设备更换嵌入实体机的插槽,该字符串就会更改为更换后的插槽的标识。
此时,可以通过遍历虚拟机上所有的设备句柄来实现,当发现设备句柄的设备实例路径等于“USB\VID_1908&PID_2310\6&30D4F9B0&0&3”时,则确定虚拟机识别被测试设备,反之,当未找到设备句柄的设备实例路径等于“USB\VID_1908&PID_2310\6&30D4F9B0&0&3”时,则确定虚拟机未识别被测试设备。
这里,所述设备句柄也是一种设备标识。
其次,关于第二种异常情况,本发明实施例提供了一种优选的处理方案,在该方案中,可以由启动的各虚拟机执行测试任务之后,至少一台实体机关闭各虚拟机,此时,至少一台实体机检查被测试设备是否已从虚拟机中释放,若否,则先禁用再启用被测试设备,以便下次在虚拟机中对被测试设备进行测试操作。这里,先禁用再启用被测试设备是由实体机根据被测试设备的设备标识(这里被测试设备的设备标识是由实体机分配的,可以作为实体机分配给被测试设备的设备实例路径),通过遍历实体机上所有的设备句柄,发现设备句柄的设备实例路径等于该被测试设备的设备实例路径时,将被测试设备的连接状态先置为disable(断开),然后置为enable(连接),实现对被测试设备的插拔操作,即实现对被测试设备的先禁用再启用操作。同时,还可以实现对被测试设备的其他操作,例如查询状态,重启,移除等操作。
并且,先禁用设备使得被测试设备从虚拟机中释放,再启用设备是为了下次在虚拟机中对被测试设备进行测试操作。
进一步地,检查被测试设备是否已从虚拟机中释放,其可以采用的技术手段为:检查被测试设备在虚拟机的设备管理器中的设备名称,若检查到的设备名称与被测试设备从虚拟机中释放后的设备名称不相同,则确定被测试设备未从虚拟机中释放;反之,若检查到的设备名称与被测试设备从虚拟机中释放后的设备名称相同,则确定被测试设备已从虚拟机中释放。以被测试设备为U盘、且虚拟机为VMware(Virtual Machine ware,虚拟机软件)虚拟机为例,当U盘设备连接到VMware虚拟机后,设备管理器中该设备的设备名称是“VMware USB Device”。当关闭虚拟机,释放U盘设备后,设备管理器中显示的名称会变成“USB大容量存储设备”。当测试结束后,若设备管理器中U盘的名称没有从“VMware USBDevice”变成“USB大容量存储设备”,则确定U盘未从虚拟机中成功释放;反之,则确定U盘已从虚拟机中释放。
基于同一发明构思,本发明实施例提供了一种应用上述任意一个优选实施例或其组合所提供的测试方法,该方法应用于中央控制器110,图2示出了根据本发明一个实施例的应用于中央控制器110的测试方法的流程图。如图2所示,该方法至少包括以下步骤S202至步骤S204。
步骤S202、接收测试任务,根据预先存储的测试任务与虚拟机的对应关系,查询能够执行接收的测试任务的一个或多个虚拟机。
步骤S204、向一个或多个虚拟机各自所在的实体机下发测试命令,其中,测试命令中携带有对应的实体机上能够执行测试任务的虚拟机的信息。
基于前文测试系统的构建中关于虚拟机的注册的介绍,每个虚拟机与被测试设备建立初始连接时,会向中央控制器110注册其相关信息,包括其自身的信息、被配置的能够执行的测试任务以及所在的实体机的信息(例如,所在的实体机的IP地址)等。中央控制器110接收到虚拟机注册的相关信息后,对应存储注册的相关信息,这样,中央控制器110就管理了各虚拟机与其对应的能够执行的测试任务。例如当中央控制器110接收到一个测试任务A时,可以根据它管理的各虚拟机与其对应的能够执行的测试任务,查询到能够执行测试任务A的一个或多个虚拟机,进而向一个或多个虚拟机所在的实体机下发测试命令,从而实现了测试任务A的分发。例如,中央控制器管理的各虚拟机与其对应的能够执行的测试任务如下表1所示,表1中存储了虚拟机的信息、能够执行的测试任务、所在的实体机的信息三者的对应关系,这些信息会实时进行更新,例如,虚拟机的状态信息,虚拟机会向中央控制器110上报其当前的状态(空闲或繁忙)。另外,表1中存储的内容并不限于此,还可以对应存储其他内容。
假设,中央控制器110接收的测试任务A为5个U盘测试任务和2个摄像头测试任务,此时,中央控制器110从表1中查询到能够执行测试任务A(5个U盘测试任务和2个摄像头测试任务)的虚拟机为虚拟机1、虚拟机2、虚拟机3、虚拟机4、虚拟机8执行5个U盘测试任务,以及虚拟机5、虚拟机6执行2个摄像头测试任务。进而,向虚拟机1、虚拟机2、虚拟机3、虚拟机4所在的实体机1下发测试命令,测试命令中携带了实体机1执行测试任务的虚拟机的信息(即虚拟机1、虚拟机2、虚拟机3、虚拟机4均执行U盘测试任务),以及向虚拟机5、虚拟机6、虚拟机8所在的实体机2下发测试命令,测试命令中携带了实体机2执行测试任务的虚拟机的信息(即虚拟机5、虚拟机6均执行摄像头测试任务,虚拟机8执行U盘测试任务)。需要说明的是,若测试任务的数量大于目前能够执行测试任务的虚拟机的数量时,那么超出的任务会排队,等待当前执行的测试任务测试结束后,再进行测试。例如,中央控制器110接收的测试任务B为10个U盘测试任务,此时,表1中只有6个虚拟机(虚拟机1、虚拟机2、虚拟机3、虚拟机4、虚拟机8、虚拟机9)处于空闲能够执行6个U盘测试任务,那么剩余的4个U盘测试任务会排队,等待当前执行的测试任务测试结束后,再进行测试。
表1
相应的,本发明实施例提供了一种应用上述任意一个优选实施例或其组合所提供的测试方法,该方法应用于至少一台实体机120,每台实体机上设置有至少一个能够对被测试设备进行测试的虚拟机130。图3示出了根据本发明一个实施例的应用于至少一台实体机120的测试方法的流程图。如图3所示,该方法至少包括以下步骤S302至步骤S304。
步骤S302、接收测试命令,该测试命令由中央控制器根据测试任务下发的。
步骤S304、启动实体机上对应的虚拟机,由启动的各虚拟机识别被测试设备,以执行测试任务。
至少一台实体机120中每台实体机上设置有至少一个能够对被测试设备进行测试的虚拟机,能够利用一个虚拟机实现对一个连接的、被测试设备的测试。在实体机接收到测试命令,并根据测试命令中携带的一个或多个虚拟机的信息启动相应的虚拟机后,由启动的各虚拟机检查其是否识别被测试设备,若识别被测试设备则在虚拟机中执行测试任务;反之,则在虚拟机中生成表示虚拟机未识别被测试设备的日志文件,以在实体机扫描到日志文件时,由实体机关闭虚拟机,并先禁用再启用被测试设备,进而重新启动虚拟机执行测试任务,从而实现了由实体机先禁用再启用被测试设备实现被测试设备的修复,而无需手动进行插拔,解放了人力资源,提高测试效率。
至少一台实体机120中各虚拟机会向中央控制器注册其相关信息,即在多个被测试设备嵌入至少一台实体机、且分别与至少一台实体机上设置的虚拟机建立初始连接时,至少一台实体机根据嵌入的、被测试设备的类型,为各虚拟机配置能够执行的测试任务,并由各虚拟机将其自身的信息、被配置的能够执行的测试任务以及所在的实体机的信息发送至中央控制器。
进一步地,在多个被测试设备嵌入至少一台实体机、且分别与至少一台实体机上设置的虚拟机建立初始连接,即虚拟机识别到物理连接的被测试设备时,各虚拟机还会创建与被测试设备建立初始连接的虚拟机快照,并保存,以在各虚拟机中对被测试设备进行测试之前,回滚到虚拟机快照,进而恢复到与被测试设备初始连接的状态,实现各虚拟机识别被测试设备。这样,保证了实体机启动虚拟机时,回滚到虚拟机快照,实现虚拟机自动识别被测试设备,无需通过手动操作将虚拟机与被测试设备连接,提高测试效率。
此外,由启动的各虚拟机检查其是否识别被测试设备,各虚拟机可以遍历其上所有设备的设备标识,判断是否存在被测试设备的设备标识,若存在,可以确定虚拟机识别被测试设备;反之,则确定虚拟机未识别被测试设备。这里,设备标识可以包括用于标识被测试设备的多种信息,例如设备类型、设备接口标准协议分配给各个设备厂商的标识、设备厂商分配给各个设备的标识、设备接口的标识等等,本发明不限于此。另外,各虚拟机遍历其上所有设备的设备标识,可以通过遍历虚拟机上所有的设备句柄来实现,被测试设备的设备标识可以作为被测试设备连接到虚拟机上的一个设备实例路径,当发现设备句柄的设备实例路径等于被测试设备的设备实例路径时,则确定虚拟机识别被测试设备,反之,当未找到设备句柄的设备实例路径等于被测试设备的设备实例路径时,则确定虚拟机未识别被测试设备。
在步骤S304中启动的各虚拟机执行测试任务之后,可以进一步检查被测试设备是否已从虚拟机中释放,若未从虚拟机中释放则由实体机先禁用再启用被测试设备,以便下次在虚拟机中对被测试设备进行测试。本发明提供的技术方案由实体机先禁用再启用被测试设备实现被测试设备的修复,而无需手动插拔设备实现设备的修复,并且先禁用设备使得被测试设备从虚拟机中释放,再启用设备是为了下次在虚拟机中对被测试设备进行测试操作。
以上介绍了图1、图2以及图3所示的实施例中各环节的多种实现方式,下面通过具体的优选实施例对本发明实施例提供的测试系统和方法做进一步说明。
下面以多个被测试设备为U盘、且虚拟机为VMware虚拟机为例,其他类型的设备(如摄像头、鼠标、VGA接口设备、PS/2接口设备等)以及虚拟机均可以使用该方法。
首先是测试系统的构建,具体包括分布式虚拟机系统的搭建,虚拟机的注册以及创建虚拟机快照等步骤。
先是分布式虚拟机系统的搭建,分布式虚拟机系统包括:中央控制器,至少一台实体机,以及同实体机的连接器接口物理连接的多个被测试设备(即U盘),其中,至少一台实体机中每台实体机上设置有至少一个能够对U盘进行测试的虚拟机。
然后是虚拟机的注册,在多个U盘同实体机的连接器接口物理连接、且分别与至少一台实体机上设置的虚拟机建立初始连接时,至少一台实体机将会为各虚拟机配置能够执行的测试任务(即U盘测试任务)。进一步地,各虚拟机会将其自身的信息、被配置的能够执行的测试任务以及所在的实体机的信息发送至中央控制器,由中央控制器对应存储,也就是说,每个虚拟机与U盘建立初始连接时,会向中央控制器注册其相关信息,包括其自身的信息、被配置的能够执行的测试任务以及所在的实体机的信息(例如,所在的实体机的IP地址)等。中央控制器接收到虚拟机注册的相关信息后,对应存储注册的相关信息,这样,中央控制器就管理了各虚拟机与其对应的能够执行的测试任务。例如,中央控制器管理的各虚拟机与其对应的能够执行的测试任务如下表2所示,表2中存储了虚拟机的信息、能够执行的测试任务、所在的实体机的信息三者的对应关系,这些信息会实时进行更新,例如,虚拟机的状态信息,虚拟机会向中央控制器上报其当前的状态(空闲或繁忙)。另外,表2中存储的内容并不限于此,还可以对应存储其他内容。
表2
接着是创建虚拟机快照。在多个U盘同实体机的连接器接口物理连接、且分别与至少一台实体机上设置的虚拟机建立初始连接,即虚拟机识别到物理连接的U盘时,各虚拟机还会创建与U盘建立初始连接的虚拟机快照,并保存,以在各虚拟机中对U盘进行测试之前,回滚到虚拟机快照,进而恢复到与U盘初始连接的状态。这样,保证了实体机启动虚拟机时,回滚到虚拟机快照,实现虚拟机自动识别U盘,无需手动将虚拟机与U盘连接,提高测试效率。如图4所示,为各虚拟机中创建连接U盘的虚拟机快照,41所示是U盘在系统中显示的磁盘,42所示是虚拟机已连接U盘的图标。
下面将利用构建好的测试系统进行测试。假设,中央控制器接收测试任务C,为20个U盘测试任务,此时,中央控制器从表2中查询到能够执行测试任务C的虚拟机为虚拟机S1-S10,剩余的10个U盘测试任务进行排队,等待当前执行的测试任务测试结束后,再进行测试。进而,中央控制器向虚拟机S1-S4所在的实体机Q1下发测试命令,测试命令中携带了实体机Q1执行测试任务的虚拟机的信息(即虚拟机S1-S4均执行U盘测试任务),以及向虚拟机S5-S8所在的实体机Q2下发测试命令,测试命令中携带了实体机Q2执行测试任务的虚拟机的信息(即虚拟机S5-S8均执行U盘测试任务),以及向虚拟机S9-S10所在的实体机Q3下发测试命令,测试命令中携带了实体机Q3执行测试任务的虚拟机的信息(即虚拟机S9-S10均执行U盘测试任务)。随后,实体机Q1、实体机Q2以及实体机Q3分别接收到中央控制器下发的测试命令,并根据测试命令中携带的虚拟机的信息启动实体机上对应的虚拟机,以在启动的各虚拟机中进行测试操作。在测试的过程中,本发明能够及时处理两种可能存在的异常情况,即测试时虚拟机未识别被测试设备,以及测试之后被测试设备未从虚拟机中释放。
下面介绍在实体机Q1中的虚拟机S1上执行U盘测试任务的方法,其他实体机中的虚拟机上执行U盘测试任务均可以使用该方法。图5示出了根据本发明一个实施例的在实体机Q1中的虚拟机S1上执行U盘测试任务的方法的流程图。如图5所示,该方法至少包括以下步骤S500至步骤S514。
步骤S500、实体机Q1接收到中央控制器下发的测试命令。
步骤S502、实体机Q1启动虚拟机S1。
即回滚到虚拟机快照,进而恢复到虚拟机S1与U盘初始连接的状态。
步骤S504、虚拟机S1检查虚拟机S1是否识别U盘,若是,则继续执行步骤S506;否则,继续执行步骤S508。
例如,U盘与实体机Q1连接时,实体机Q1分配给U盘的设备标识为P1,U盘与实体机Q1连接进而连接到虚拟机S1后,虚拟机S1分配给U盘的设备标识P2为“USB\VID_1908&PID_2310\6&30D4F9B0&0&3”,该设备标识可以作为虚拟机S1操作系统为外接USB设备分配的设备实例路径。如图6所示,61所示为U盘的设备实例路径。假设虚拟机S1的操作系统为windows(窗口)操作系统,windows操作系统首先调用接口SetupDiEnumDeviceInfo枚举系统硬件设备,得到所有的硬件设备的详细信息。接着调用接口SetupDiClassNameFromGuidW获取设备类别名称,只处理USB类别的设备。随后,调用接口SetupDiGetDeviceRegistryPropertyW获取设备实例路径,如果存在“USB\VID_1908&PID_2310\6&30D4F9B0&0&3”的设备实例路径,则确定虚拟机S1识别U盘,若不存在,则确定虚拟机S1未识别U盘。此外,还可以通过检查虚拟机中是否存在可移动磁盘,若存在,则确定虚拟机S1识别U盘,若不存在,则确定虚拟机S1未识别U盘。
步骤S506、继续在虚拟机S1中执行U盘测试任务,并继续执行步骤S510。
步骤S508、虚拟机S1生成表示虚拟机S1未与U盘连接的日志文件,以在实体机Q1扫描到该日志文件时,由实体机Q1关闭虚拟机S1,先禁用再启U盘,返回执行步骤S502。
实体机Q1可以利用实体机Q1分配给U盘的设备标识P1,先禁用再启用U盘,即实体机Q1根据设备标识P1,查找到实体机上连接U盘的通用串行总线接口,通过先禁用再启用该接口,实现对U盘的先禁用再启用。
步骤S510、U盘测试任务执行结束后,实体机Q1关闭虚拟机S1。
步骤S512、实体机Q1检查U盘是否已从虚拟机S1中释放,若是,则结束本次流程,否则,继续执行步骤S514。
可以通过检查U盘在虚拟机S1的设备管理器中的设备名称,若检查到的设备名称与U盘从虚拟机S1中释放后的设备名称不相同,则确定U盘未从虚拟机S1中释放;反之,若检查到的设备名称与U盘从虚拟机S1中释放后的设备名称相同,则确定U盘已从虚拟机S1中释放。当U盘设备连接到VMware虚拟机S1后,设备管理器中该设备的设备名称是“VMware USBDevice”,如图7所示,71所示为U盘连接到VMware虚拟机S1后的设备名称。当关闭虚拟机S1,释放U盘设备后,设备管理器中显示的名称会变成“USB大容量存储设备”。当测试结束后,若设备管理器中U盘的名称没有从“VMware USBDevice”变成“USB大容量存储设备”,则确定U盘未从虚拟机S1中成功释放;反之,则确定U盘已从虚拟机S1中成功释放。
步骤S514、实体机Q1先禁用再启用U盘,以便下次在虚拟机S1中对U盘进行测试操作。
以上以多个被测试设备为U盘、且虚拟机为VMware虚拟机为例,介绍了测试的方法,通过一个分布式虚拟机系统,利用各虚拟机并发地对U盘进行测试,有效地提高了测试效率。并且,通过实体机与虚拟机的交互工作,实现在虚拟机中对U盘的自动化测试,无需人工参与测试工作,解放了人力资源,测试效率提升幅度大。进一步地,可以对测试过程中遇到的两种异常(即测试时虚拟机与U盘未连接,以及测试之后U盘未从虚拟机中释放)自动进行处理,无需手工重启U盘,解放了人力资源,提高测试效率,并提高了测试的准确性和稳定性。
需要说明的是,实际应用中,上述所有可选实施方式可以采用结合的方式任意组合,形成本发明的可选实施例,在此不再一一赘述。
基于同一发明构思,本发明实施例还提供了一种测试装置,以实现上述测试方法。
图8示出了根据本发明一个实施例的应用于中央控制器的测试装置的结构示意图。参见图8,该装置至少包括:查询模块810以及命令下发模块820。
现介绍本发明实施例的测试装置的各组成或器件的功能以及各部分间的连接关系:
查询模块810,适于接收测试任务;
命令下发模块820,与查询模块810相耦合,适于向一个或多个虚拟机各自所在的实体机下发测试命令。
在一个实施例中,上述查询模块810,还适于根据预先存储的测试任务与虚拟机的对应关系,查询能够执行接收的测试任务的一个或多个虚拟机;
上述命令下发模块820,还适于向一个或多个虚拟机各自所在的实体机下发测试命令,其中,测试命令中携带有对应的实体机上能够执行测试任务的虚拟机的信息。
在一个实施例中,上述装置还可以包括存储模块830,与查询模块810相耦合,适于接收各虚拟机发送的其自身的信息、被配置的能够执行的测试任务以及所在的实体机的信息,并对应存储。
相应的,图9示出了根据本发明一个实施例的应用于至少一台实体机的测试装置的结构示意图,每台实体机上设置有至少一个能够对被测试设备进行测试的虚拟机。参见图9,该装置至少包括:接收模块910以及测试模块920。
现介绍本发明实施例的测试装置的各组成或器件的功能以及各部分间的连接关系:
接收模块910,适于接收测试命令,该测试命令由中央控制器根据测试任务下发的;
测试模块920,与接收模块910相耦合,适于启动实体机上对应的虚拟机,由启动的各虚拟机识别被测试设备,以执行测试任务。
在一个实施例中,测试命令中携带有对应的实体机上能够执行测试任务的虚拟机的信息,上述测试模块920,还适于:根据测试命令中携带的虚拟机的信息启动实体机上对应的虚拟机。
在一个实施例中,由启动的各虚拟机执行测试任务之前,上述测试模块920,还适于:由启动的各虚拟机检查其是否识别被测试设备;若是,则在虚拟机中执行测试任务;若否,则在虚拟机中生成表示虚拟机未识别被测试设备的日志文件,以在实体机扫描到日志文件时,由实体机关闭虚拟机,并先禁用再启用被测试设备,进而重新启动虚拟机执行测试任务。
在一个实施例中,上述装置还可以包括创建模块940与测试模块920相耦合,适于:各虚拟机创建与被测试设备建立初始连接的虚拟机快照,并保存;
上述测试模块920,还适于:由启动的各虚拟机通过回滚到虚拟机快照,进而遍历其上所有设备的设备标识,通将对被测试设备的识别结果同虚拟机快照比对,判断虚拟机是否识别被测试设备。
在一个实施例中,设备标识包括下列至少之一:
设备类型;
设备接口标准协议分配给各个设备厂商的标识;
设备厂商分配给各个设备的标识;
设备接口的标识。
在一个实施例中,由启动的各虚拟机执行测试任务之后,上述测试模块920,还适于:检查被测试设备是否已从虚拟机中释放;若否,则先禁用再启用被测试设备,以便下次在虚拟机中对被测试设备进行测试操作。
在一个实施例中,上述测试模块920,还适于:检查被测试设备在虚拟机的设备管理器中的设备名称;若检查到的设备名称与被测试设备从虚拟机中释放后的设备名称不相同,则确定被测试设备未从虚拟机中释放;若检查到的设备名称与被测试设备从虚拟机中释放后的设备名称相同,则确定被测试设备已从虚拟机中释放。
在一个实施例中,在多个被测试设备同实体机的连接器接口物理连接、且分别与实体机上设置的虚拟机建立初始连接时,上述装置还可以包括配置模块930,与测试模块920相耦合,适于:根据被测试设备的类型,为各虚拟机配置能够执行的测试任务,由各虚拟机将其自身的信息、被配置的能够执行的测试任务以及所在的实体机的信息发送至中央控制器。
在一个实施例中,上述测试模块920,还适于:实体机遍历其上所有的设备句柄,发现设备句柄的设备实例路径等于被测试设备的设备标识时,将被测试设备的连接状态先置为disable,然后置为enable,实现对被测试设备的插拔操作。
根据上述任意一个优选实施例或多个优选实施例的组合,本发明实施例能够达到如下有益效果:
本发明提供的测试系统,包括了中央控制器,至少一台实体机,以及同实体机的连接器接口物理连接的多个被测试设备,其中,至少一台实体机中的每台实体机上设置有至少一个能够对被测试设备进行测试的虚拟机。中央控制器接收到测试任务时,向一个或多个虚拟机各自所在的实体机下发测试命令,即是由中央控制器进行测试任务的分发。随后,至少一台实体机接收中央控制器下发的测试命令,启动实体机上对应的虚拟机,由启动的各虚拟机识别被测试设备,以执行所述测试任务。由此可见,本发明采用中央控制器、至少一台实体机以及每台实体机上设置的至少一个能够对被测试设备进行测试的虚拟机,构建了一个分布式虚拟机系统,利用各虚拟机并发地对被测试设备进行测试,有效地提高了测试效率。并且,本发明通过实体机与虚拟机的交互工作,虚拟机识别被测试设备,实现在虚拟机中对被测试设备的自动化测试,而无需手动进行插拔,解放人力资源,测试效率提升幅度大。
进一步地,本发明可以对测试过程中遇到的两种异常(即测试时虚拟机与用于测试的设备未连接,以及测试之后用于测试的设备未从虚拟机中释放)自动进行处理,无需手动进行插拔实现被测试设备的修复,解放了人力资源,提高测试效率,并提高了测试的准确性和稳定性。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的设备测试的系统和装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
本发明还公开A1、一种测试系统,包括中央控制器,至少一台实体机,以及同所述实体机的连接器接口物理连接的多个被测试设备,其中,
所述至少一台实体机,每台实体机上设置有至少一个能够对被测试设备进行测试的虚拟机;
所述中央控制器,接收测试任务,向一个或多个虚拟机各自所在的实体机下发测试命令;
所述至少一台实体机,接收所述测试命令,启动实体机上对应的虚拟机,由启动的各虚拟机识别被测试设备,以执行所述测试任务。
A2、根据A1所述的系统,其中,
所述中央控制器,接收测试任务,根据预先存储的测试任务与虚拟机的对应关系,查询能够执行所述测试任务的一个或多个虚拟机;
所述中央控制器下发的所述测试命令中携带有对应的实体机上能够执行所述测试任务的虚拟机的信息;
所述至少一台实体机,根据所述测试命令中携带的虚拟机的信息启动实体机上对应的虚拟机。
A3、根据A1或A2所述的系统,其中,由启动的各虚拟机执行所述测试任务之前,启动的各虚拟机,检查其是否识别被测试设备,若是,则在虚拟机中执行所述测试任务;若否,则在虚拟机中生成表示虚拟机未识别被测试设备的日志文件,以在所述实体机扫描到所述日志文件时,由所述实体机关闭虚拟机,并先禁用再启用被测试设备,进而重新启动虚拟机执行所述测试任务。
A4、根据A3所述的系统,其中,所述各虚拟机,创建与被测试设备建立初始连接的虚拟机快照,并保存;
所述虚拟机通过回滚到所述虚拟机快照,进而遍历其上所有设备的设备标识,通将对被测试设备的识别结果同所述虚拟机快照比对,判断虚拟机是否识别被测试设备。
A5、根据A4所述的系统,其中,所述设备标识包括下列至少之一:
设备类型;
设备接口标准协议分配给各个设备厂商的标识;
设备厂商分配给各个设备的标识;
设备接口的标识。
A6、根据A1所述的系统,其中,由启动的各虚拟机执行所述测试任务之后,所述至少一台实体机,检查被测试设备是否已从虚拟机中释放;若否,则先禁用再启用被测试设备,以便下次在虚拟机中对被测试设备进行测试操作。
A7、根据A6所述的系统,其中,所述至少一台实体机,检查被测试设备在虚拟机的设备管理器中的设备名称;若检查到的所述设备名称与被测试设备从虚拟机中释放后的设备名称不相同,则确定被测试设备未从虚拟机中释放;若检查到的所述设备名称与被测试设备从虚拟机中释放后的设备名称相同,则确定被测试设备已从虚拟机中释放。
A8、根据A3或A6所述的系统,其中,所述实体机先禁用再启用被测试设备,包括:所述实体机遍历其上所有的设备句柄,发现设备句柄的设备实例路径等于被测试设备的设备标识时,将被测试设备的连接状态先置为断开disable,然后置为连接enable,实现对被测试设备的插拔操作。
A9、根据A1所述的系统,其中,在所述多个被测试设备同所述实体机的连接器接口物理连接、且分别与所述实体机上设置的虚拟机建立初始连接时,
所述至少一台实体机,根据被测试设备的类型,为各虚拟机配置能够执行的测试任务;
所述各虚拟机,将其自身的信息、被配置的能够执行的测试任务以及所在的实体机的信息发送至所述中央控制器,由所述中央控制器对应存储;
所述中央控制器,还适于接收所述各虚拟机发送的其自身的信息、被配置的能够执行的测试任务以及所在的实体机的信息,并对应存储。
B10、一种测试方法,应用于至少一台实体机,每台实体机上设置有至少一个能够对被测试设备进行测试的虚拟机,多个被测试设备同所述实体机的连接器接口物理连接,包括:
接收测试命令,所述测试命令由中央控制器根据测试任务下发的;
启动实体机上对应的虚拟机,由启动的各虚拟机识别被测试设备,以执行所述测试任务。
B11、根据B10所述的方法,其中,所述测试命令中携带有对应的实体机上能够执行所述测试任务的虚拟机的信息,所述启动实体机上对应的虚拟机,包括:
根据所述测试命令中携带的虚拟机的信息启动实体机上对应的虚拟机。
B12、根据B10或B11所述的方法,其中,由启动的各虚拟机执行所述测试任务之前,还包括:
由启动的各虚拟机检查其是否识别被测试设备;
若是,则在虚拟机中执行所述测试任务;
若否,则在虚拟机中生成表示虚拟机未识别被测试设备的日志文件,以在所述实体机扫描到所述日志文件时,由所述实体机关闭虚拟机,并先禁用再启用被测试设备,进而重新启动虚拟机执行所述测试任务。
B13、根据B12所述的方法,其中,由启动的各虚拟机检查其是否识别被测试设备,包括:
所述各虚拟机创建与被测试设备建立初始连接的虚拟机快照,并保存;
由启动的各虚拟机通过回滚到所述虚拟机快照,进而遍历其上所有设备的设备标识,通将对被测试设备的识别结果同所述虚拟机快照比对,判断虚拟机是否识别被测试设备。
B14、根据B13所述的方法,其中,所述设备标识包括下列至少之一:
设备类型;
设备接口标准协议分配给各个设备厂商的标识;
设备厂商分配给各个设备的标识;
设备接口的标识。
B15、根据B10所述的方法,其中,由启动的各虚拟机执行所述测试任务之后,还包括:
检查被测试设备是否已从虚拟机中释放;
若否,则先禁用再启用被测试设备,以便下次在虚拟机中对被测试设备进行测试操作。
B16、根据B15所述的方法,其中,检查被测试设备是否已从虚拟机中释放,包括:
检查被测试设备在虚拟机的设备管理器中的设备名称;
若检查到的所述设备名称与被测试设备从虚拟机中释放后的设备名称不相同,则确定被测试设备未从虚拟机中释放;
若检查到的所述设备名称与被测试设备从虚拟机中释放后的设备名称相同,则确定被测试设备已从虚拟机中释放。
B17、根据B12或B15所述的方法,其中,所述实体机先禁用再启用被测试设备,包括:所述实体机遍历其上所有的设备句柄,发现设备句柄的设备实例路径等于被测试设备的设备标识时,将被测试设备的连接状态先置为断开disable,然后置为连接enable,实现对被测试设备的插拔操作。
B18、根据B10所述的方法,其中,在所述多个被测试设备同所述实体机的连接器接口物理连接、且分别与所述实体机上设置的虚拟机建立初始连接时,还包括:
根据被测试设备的类型,为各虚拟机配置能够执行的测试任务,由各虚拟机将其自身的信息、被配置的能够执行的测试任务以及所在的实体机的信息发送至所述中央控制器。
C19、一种测试装置,应用于至少一台实体机,每台实体机上设置有至少一个能够对被测试设备进行测试的虚拟机,多个被测试设备同所述实体机的连接器接口物理连接,包括:
接收模块,适于接收测试命令,所述测试命令由中央控制器根据测试任务下发的;
测试模块,适于启动实体机上对应的虚拟机,由启动的各虚拟机识别被测试设备,以执行所述测试任务。
C20、根据C19所述的装置,其中,所述测试命令中携带有对应的实体机上能够执行测试任务的虚拟机的信息,所述测试模块,还适于:
根据所述测试命令中携带的虚拟机的信息启动实体机上对应的虚拟机。
C21、根据C19或C20所述的装置,其中,由启动的各虚拟机执行所述测试任务之前,所述测试模块,还适于:
由启动的各虚拟机检查其是否识别被测试设备;
若是,则在虚拟机中执行所述测试任务;
若否,则在虚拟机中生成表示虚拟机未识别被测试设备的日志文件,以在所述实体机扫描到所述日志文件时,由所述实体机关闭虚拟机,并先禁用再启用被测试设备,进而重新启动虚拟机执行所述测试任务。
C22、根据C21所述的装置,其中,还包括:
创建模块,适于各虚拟机创建与被测试设备建立初始连接的虚拟机快照,并保存;
所述测试模块,还适于由启动的各虚拟机通过回滚到所述虚拟机快照,进而遍历其上所有设备的设备标识,通将对被测试设备的识别结果同所述虚拟机快照比对,判断虚拟机是否识别被测试设备。
C23、根据C22所述的装置,其中,所述设备标识包括下列至少之一:
设备类型;
设备接口标准协议分配给各个设备厂商的标识;
设备厂商分配给各个设备的标识;
设备接口的标识。
C24、根据C19所述的装置,其中,由启动的各虚拟机执行所述测试任务之后,所述测试模块,还适于:
检查被测试设备是否已从虚拟机中释放;
若否,则先禁用再启用被测试设备,以便下次在虚拟机中对被测试设备进行测试操作。
C25、根据C24所述的装置,其中,所述测试模块,还适于:
检查被测试设备在虚拟机的设备管理器中的设备名称;
若检查到的所述设备名称与被测试设备从虚拟机中释放后的设备名称不相同,则确定被测试设备未从虚拟机中释放;
若检查到的所述设备名称与被测试设备从虚拟机中释放后的设备名称相同,则确定被测试设备已从虚拟机中释放。
C26、根据C21或C24所述的装置,其中,所述测试模块,还适于:
所述实体机遍历其上所有的设备句柄,发现设备句柄的设备实例路径等于被测试设备的设备标识时,将被测试设备的连接状态先置为断开disable,然后置为连接enable,实现对被测试设备的插拔操作。
C27、根据C19所述的装置,其中,在所述多个被测试设备同所述实体机的连接器接口物理连接、且分别与所述实体机上设置的虚拟机建立初始连接时,还包括配置模块,适于:
根据被测试设备的类型,为各虚拟机配置能够执行的测试任务,由各虚拟机将其自身的信息、被配置的能够执行的测试任务以及所在的实体机的信息发送至所述中央控制器。