虚拟机测试方法及工具与流程

文档序号:11250798阅读:1517来源:国知局
虚拟机测试方法及工具与流程
本发明涉及计算机
技术领域
,特别是涉及一种虚拟机测试方法及工具。
背景技术
:随着虚拟机技术的应用日益广泛,各种云计算解决方案层出不穷。大量政务机关,企事业单位将原本运行在物理服务器上的业务迁移至虚拟化环境,以求降低运维成本并增强系统的可扩展性。为了保障业务能够正常运行,如何提升虚拟机本身的测试效率成为亟待解决的问题。技术实现要素:本发明提供了一种虚拟机测试方法及工具以克服上述问题或者至少部分地解决上述问题。根据本发明的一个方面,提供了一种虚拟机测试方法,包括:定义测试环境;将远程测试工具和远程测试脚本推送到一个或多个待测虚拟机中;在所述待测虚拟机中安装所述远程测试工具,执行所述远程测试脚本;收集所述远程测试脚本执行过程中的测试日志和测试结果,完成测试。可选地,所述定义测试环境包括以下至少之一:定义全局变量;定义测试套件;定义测试用例;定义所述待测虚拟机。可选地,所述执行所述远程测试脚本之前还包括:判断所述待测虚拟机是否处于关机状态;若是,则通过快照恢复将所述待测虚拟机的系统恢复至初始状态。可选地,所述通过快照恢复将所述待测虚拟机的系统恢复至初始状态之后还包括:启动所述待测虚拟机;检查所述待测虚拟机的ssh安全外壳协议端口是否处于监听状态,若是,则确定所述待测虚拟机的系统启动成功。可选地,所述将远程测试工具和远程测试脚本推送到一个或多个待测虚拟机中之后还包括:根据所述远程测试脚本的名称创建测试入口脚本,将所述测试入口脚本提交至所述待测虚拟机的计划任务中进行执行。可选地,上述方法还包括:通过所述状态引擎处理所述待测虚拟机在测试过程中出现的各种测试状态。可选地,所述定义测试环境包括:基于xml可扩展性标记语言文件定义所述测试环境。可选地,所述在所述待测虚拟机中安装所述远程测试工具并执行所述远程测试脚本之后还包括:复制所述待测虚拟机中的状态文件;根据所述状态文件内容判断所述远程测试脚本是否开始执行和/或是否执行结束。可选地,所述收集所述远程测试脚本执行过程中的测试日志和测试结果,完成测试之后,还包括:将所述收集到的测试日志和测试结果发送至指定用户。根据本发明的另一个方面,还提供了一种虚拟机测试工具,包括:定义模块,配置为定义测试环境;推送模块,配置为将远程测试工具和远程测试脚本推送到一个或多个待测虚拟机中;执行模块,配置为在所述待测虚拟机中安装所述远程测试工具,执行所述远程测试脚本;收集模块,配置为收集所述远程测试脚本执行过程中的测试日志和测试结果,完成测试。可选地,所述定义模块包括以下至少之一:第一定义单元,配置为定义全局变量;第二定义单元,配置为定义测试套件;第三定义单元,配置为定义测试用例;第四定义单元,配置为定义所述待测虚拟机。可选地,上述测试工具还包括:恢复模块,配置为判断所述待测虚拟机是否处于关机状态;若是,则通过快照恢复将所述待测虚拟机的系统恢复至初始状态。可选地,上述测试工具还包括;启动模块,配置为启动所述待测虚拟机;检查所述待测虚拟机的ssh安全外壳协议端口是否处于监听状态,若是,则确定所述待测虚拟机的系统启动成功。可选地,上述测试工具还包括:创建模块,配置为根据所述远程测试脚本的名称创建测试入口脚本,并将所述测试入口脚本提交至所述待测虚拟机的计划任务中进行执行。可选地,通过所述状态引擎处理所述待测虚拟机在测试过程中出现的各种测试状态。可选地,所述定义模块还配置为基于xml可扩展性标记语言文件定义所述测试环境。可选地,上述测试工具还包括:判断模块,配置为复制所述待测虚拟机中的状态文件;根据所述状态文件内容判断所述远程测试脚本是否开始执行和/或是否执行结束。可选地,上述测试工具还包括:发送模块,配置为将所述收集到的测试日志和测试结果发送至指定用户。本发明提供了一种自动化的虚拟机测试方法及工具,测试前,先定义测试环境,启动测试时,根据配置将测试工具和测试脚本推送到待测虚拟机中,进行工具安装、测试脚本执行,再收集测试结果。根据本发明实施例提供的虚拟机测试方案,可以同时对多台虚拟机进行不同功能、性能的测试,简化操作步骤的同时提升虚拟机的测试效率,进而保障虚拟机上业务的正常进行。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1是根据本发明一个实施例的虚拟机测试方法流程示意图;图2是根据本发明另一个实施例的虚拟机测试方法流程示意图;图3是根据本发明一个优选实施例的虚拟机测试方法流程示意图;图4是根据本发明另一个优选实施例的虚拟机测试方法流程示意图;图5是根据本发明实施例的虚拟机测试工具结构示意图;图6是根据本发明优选实施例的虚拟机测试工具结构示意图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。图1是根据本发明一个实施例的虚拟机测试方法流程示意图。如图1所述,本发明实施例的虚拟机测试方法包括:步骤s102,定义测试环境;步骤s104,将远程测试工具和远程测试脚本推送到一个或多个待测虚拟机中;步骤s106,在待测虚拟机中安装远程测试工具,执行远程测试脚本;步骤s108,收集远程测试脚本执行过程中的测试日志和测试结果,完成测试。本发明实施例提供了一种自动化的虚拟机测试方法,测试前,先定义测试环境,启动测试时,根据配置将测试工具和测试脚本推送到待测虚拟机中,进行工具安装、测试脚本执行,再收集测试结果。根据本发明实施例提供的虚拟机测试方案,可以同时对多台虚拟机进行不同功能、性能的测试,简化操作步骤的同时提升虚拟机的测试效率,进而保障虚拟机上业务的正常进行。优选地,在本实施例中,可以使用xml(extensiblemarkuplanguage,可扩展标记语言)文件定义测试环境。在定义测试环境时,可以分别对全局变量、测试套件、测试用例以及待测虚拟机进行定义,详细介绍如下。1.定义全局变量该部分定义测试环境所需要的一般信息,不依赖于任何特定的测试或虚拟机,该部分定义内容可以如表1所示:表1xmltag描述<resrootdir>日志文件存放的基础目录<snapshot>用于虚拟机快照恢复的快照名称<recipients>测试结果发送的目的邮箱地址集合<to>收件箱地址<sender>发件箱地址<subject>邮件主题<smtpserver>发送邮件使用的smtp服务器定义全局变量的可由以下程序代码实现:2.定义测试套件测试套件部分定义一个或多个测试套件。一个测试套件只是测试用例名称的集合。该测试工具将按照测试套件中测试用例列出的顺序运行测试用例。下表列出测试套件中可能出现的xml标签。表2xmltag描述<testsuites>测试套件部分起始位置<suite>测试套件定义起始位置<suitename>测试套件名称<suitetests>测试用例列表开始位置<suitetest>测试套件包含的测试用例名称测试套件部分定义可由以下程序代码实现:3.定义测试用例测试用例部分定义所有能运行的测试用例。一个测试套件通常是xml文件中测试用例部分定义的测试用例的子集。测试用例部分只定义可以运行的测试,可运行的测试即指目前该自动化测试工具能够实现的自动化测试用例。表3列出测试用例中可能出现的xml标签。表3测试用例部分定义可由以下程序代码实现:4.定义待测虚拟机虚拟机部分定义测试环境中所有的待测虚拟机,包含虚拟机将要运行的测试套件名称。表4列出虚拟机中可能出现的xml标签.表4xmltag描述<vms>待测虚拟机部分起始位置<vm>一个虚拟机定义<host>运行虚拟机的主机ip地址<vmname>虚拟机名称<os>虚拟机中运行的操作系统<ipv4>虚拟机的ipv4地址。<suite>在<testsuites>部分定义的测试套件名称。虚拟机部分定义可由以下程序代码实现:在本发明实施例提供的虚拟机测试方法中,测试环境是由控制服务器和待测虚拟机组成的,而整个相关的自动化的测试工具部署到控制服务器上。它包含xml文件、状态引擎、入口测试脚本、测试开始时需要推送到虚拟机中的远程测试工具和远程测试脚本、从虚拟机中收集的测试日志和测试结果、该测试工具的运行日志,根据本发明实施例提供的虚拟机测试方法,能够同时对多台虚拟机进行不同的功能、性能测试。远程测试工具和远程测试脚本,只是该测试工具的组成部分,存放在该测试工具的目录下,测试开始时,将它们推送到虚拟机中,这些远程测试工具和远程测试脚本是在虚拟机中运行的,用来测试虚拟机的功能和性能。进一步地,在本发明实施例中,通过控制服务器将远程测试工具和测试脚本推送到待测虚拟机中,然后进行工具安装、测试执行和测试结果回收。避免了人为登录到各待测虚拟机中分别进行操作,简化了操作步骤,提高了测试效率。开始进行测试时,可以在控制服务器上以root用户执行测试工具的入口脚本autotest.sh,命令行的语法如下:#shautotest.shxmlfile[-debuglevel][-email][-help]表5为在执行测试时,可能出现的参数的相关信息。表5优选地,在上述步骤s104中的执行远程测试脚本之前,还可以判断待测虚拟机是否处于关机状态,如果待测虚拟机处于关机状态,则通过快照恢复功能将待测虚拟机的系统恢复至初始状态。初始状态即虚拟机没有运行测试前的状态,对于测试人员来说,可以知道虚拟机中启动了哪些服务,安装了哪些rpm包等信息,进而保证了测试的稳定性和可重复性。图2是根据本发明优选实施例的操作系统为linux版本的虚拟机测试方法流程示意图,在本优选实施例中,虚拟机安装了ssh(secureshell,安全外壳协议)服务,并设置了开机自启动;允许root用户通过ssh登录;虚拟机的防火墙开放22号端口,22端口就是ssh端口;虚拟机配置了sshkey,控制服务器能够免密码登录虚拟机;虚拟机创建了快照,能够进行快照恢复。如图2所示,根据本发明优选实施例的虚拟机测试方法包括:步骤s202,判断当前用户是否为root用户;如果是,则执行下一步s204.如果否,则结束测试;开始测试时,为了执行测试,在控制服务器上使用root用户执行该测试工具的入口脚本,入口脚本首先判断当前用户是否是root用户,如果不是,退出脚本,结束测试;如果是,继续下一步;步骤s204,判断指定的xml文件是否存在,如果不存在,退出脚本,结束测试;如果存在,继续下一步;步骤s206,解析xml文件;步骤s208,创建测试结果目录;测试结果目录用来存放从虚拟机中收集的测试日志、测试结果和该测试工具的运行日志,测试结果目录使用名称<xmlfilename>_<date/time>,其中xmlfilename是命令行传入的xml文件名称,date/time是入口脚本启动时的日期和时间;步骤s210,判断待虚拟机是否是关机状态;如果待测虚拟机不是关机状态,则执行步骤s212,关闭虚拟机;如果待测虚拟机为关机状态,则执行步骤s214;步骤s214,虚拟机快照恢复;即将待测虚拟机的系统恢复至初始状态,对虚拟机进行快照恢复,保证虚拟机从一个已知的良好状态开始测试;使用虚拟机的快照恢复功能在测试前将虚拟机系统恢复到初始状态,保证了每次运行测试工具时,虚拟机的状态已知。步骤s216,判断是否存在setup脚本;如果存在setup脚本,则执行步骤s218,执行setup脚本,如果不存在setup脚本,则执行步骤s220;步骤s220,执行测试;步骤s222,判断是否存在cleanup脚本;如果是,则执行步骤s224,执行cleanup脚本,如果否,则执行步骤s226;步骤s226,判断是否需要发送邮件;如果是,则执行步骤s228,如果否,则结束测试;步骤s228,发送邮件;根据配置判断需要发送邮件,则将测试结果目录发送邮件到指定邮箱,通知用户,结束测试。在上述步骤s214通过快照恢复将待测虚拟机的系统恢复至初始状态之后就可以启动待测虚拟机了,可选地,可以通过检查待测虚拟机的ssh端口是否处于监听状态,如果是,则确定待测虚拟机的系统启动成功。ssh端口即待测虚拟机的22号端口,在本发明实施例中,通过检查待测虚拟机的22号端口是否处于监听状态来判断虚拟机的系统是否启动成功,可以提高判断的准确性。待测虚拟机启动成功就会执行setup脚本进而开始安装测试。进一步地,对于测试工具的日志完善,不仅包括测试工具本身的所以输出日志,同时也包括从待测虚拟机中收集到的测试脚本输出日志,日志级别可设置,方便测试结果的查看以及问题的定位。本发明实施例提供了一种灵活性更强的虚拟机测试方法,在测试之前,可以通过快照恢复将待测虚拟机恢复至已知状态,保证测试的稳定性和可重复性。结束测试之后,还可以将存储有测试日志和测试结果的测试结果目录以发送邮件或其他方式通知指定用户,使得相关人员即使不在现场也能及时掌握测试情况,提升用户体验。本发明实施例提供的虚拟机测试方案,其核心为状态引擎,是通过状态引擎处理待测虚拟机在测试过程中出现的各种测试状态,即基于虚拟机的不同测试状态调用相应的函数进行处理。虚拟机的测试状态主要包括:systemdown(关机成功)、startsystem(开机)、systemstarting(正在开机)、systemup(开机成功)、pushtestfiles(推送测试文件)、starttest(启动测试)、teststarting(正在开始测试)、testrunning(测试执行)、collectresfiles(收集测试结果)、determinereboot(判断是否重启)、shutdownsystem(关机)、shuttingdown(正在关机)。虚拟机快照恢复后,设置虚拟机当前的测试状态为systemdown。调用状态引擎,开始测试。每种测试状态对应的功能函数名是在状态名称前加“do”。例如,systemdown测试状态对应的功能函数就是dosystemdown函数。图3为根据本发明优选实施例操作系统为linux版本的虚拟机测试方法流程示意图,在优选实施例中,通过状态引擎处理待测虚拟机在测试过程中出现的各种状态,如图3所示,根据本发明优选实施例的虚拟机测试方法包括:步骤s302,systemdown;流程开始时,虚拟机的测试状态为systemdown,调用dosystemdown函数,获取虚拟机信息,执行步骤s304;步骤s304,判断虚拟机状态是否为off;在上述dosystemdown函数中,判断虚拟机状态;如果虚拟机状态不是off,则更新虚拟机的测试状态为forcesystemdown,执行步骤s306;如果虚拟机状态是off,则执行步骤s308;步骤s306,forcesystemdown;调用doforcesystemdown函数,对虚拟机进行强制关机,再更新虚拟机的测试状态为systemdown,执行步骤s302;步骤s308,判断当前测试是否为done;在上述dosystemdown函数中,判断当前测试是否为done;如果当前测试为done,则说明测试已经完成,更新虚拟机的测试状态为finished,执行步骤s310;如果当前测试不为done,则更新虚拟机的测试状态为startsystem,执行步骤s312;步骤s310,finished;结束测试;步骤s312,startsystem;调用dostartsystem函数,启动虚拟机,当虚拟机的状态变为running时,更新虚拟机的测试状态为systemstarting,执行步骤s314;步骤s314,systemstarting;调用dosystemstarting函数,执行步骤s316;步骤s316,判断虚拟机处于systemstarting测试状态是否超时;在上述调用dosystemstarting函数中,通过检查虚拟机的22号端口是否处于监听状态,来判断虚拟机的系统是否启动成功;如果虚拟机系统启动成功,更新虚拟机的测试状态为systemup,执行步骤s324;如果虚拟机系统一直没有启动成功,导致虚拟机处于systemstarting测试状态超时,则更新虚拟机的测试状态为slowsystemstarting,执行步骤s318;步骤s318,slowsystemstarting;调用doslowsystemstarting函数,执行步骤s320;步骤s320,判断虚拟机处于slowsystemstarting测试状态是否超时;在上述调用doslowsystemstarting函数中,继续等待虚拟机系统启动;如果虚拟机启动成功,更新虚拟机的测试状态为systemup,执行步骤s324;如果虚拟机系统一直没有启动成功,导致虚拟机处于slowsystemstarting测试状态超时,则更新虚拟机的测试状态为forceshutdown,执行步骤s322;步骤s322,forceshutdown;调用doforceshutdown函数,强制关闭虚拟机,更新虚拟机的测试状态为systemdown,执行步骤s302;步骤s324,systemup;调用dosystemup函数,使用ssh向虚拟机发送一个exit命令,并接受服务器密钥的任何提示,更新虚拟机的测试状态为pushtestfiles,执行步骤s326;步骤s326,pushtestfiles;调用dopushtestfiles函数,将测试需要的远程测试工具、测试脚本及定义的其他文件推送到待测虚拟机中,更新虚拟机的测试状态为starttest,执行步骤s328;步骤s328,starttest;调用dostarttest函数,根据测试脚本名称,创建runtest.sh,将runtest.sh推送到虚拟机中,并提交runtest.sh到at,执行测试脚本,更新虚拟机的测试状态为teststarting,执行步骤s330;步骤s330,teststarting;调用doteststarting函数,执行步骤s332;步骤s332,判断虚拟机处于teststarting测试状态是否超时;在上述调用doteststarting函数中,使用ssh从虚拟机中拷贝state.txt(虚拟机端的远程测试脚本在开始运行时,首先创建state.txt文件,用来标记测试脚本执行的状态);如果拷贝成功且本地存在state.txt文件,说明测试脚本已经开始执行,更新虚拟机的测试状态为testrunning,执行步骤s334;如果一直没有拷贝成功,导致虚拟机处于teststarting测试状态超时,则更新虚拟机的测试状态为determinereboot,执行步骤s342;步骤s334,testrunning;调用dotestrunning函数,执行步骤s336;步骤s336,判断虚拟机处于testrunning测试状态是否超时;在上述调用dotestrunning函数中,使用ssh从虚拟机中拷贝state.txt,并验证内容;虚拟机端的远程测试脚本开始运行时,创建state.txt文件,并向文件写入“testrunning”内容,如果测试成功,向state.txt文件中写入“testcompleted”,如果测试失败,向state.txt文件中写入“testfailed”;如果虚拟机处于testrunning测试状态不超时,执行步骤s338;如果虚拟机处于testrunning测试状态超时,则更新虚拟机的测试状态为collectresfiles,执行步骤s340;步骤s338,判断state.txt内容是否为testrunning;在上述调用的dotestrunning函数中,判断state.txt内容是否为testrunning;如果state.txt是testrunning,则继续执行步骤s336;如果state.txt中的内容不是“testrunning”,说明测试结束,则更新虚拟机的测试状态为collectresfiles,执行步骤s340;步骤s340,collectresfiles;调用docollectresfiles函数,通过ssh从虚拟机中收集测试日志和测试结果,更新虚拟机的测试状态为determinereboot,执行步骤s342;步骤s342,determinereboot;调用dodeterminereboot函数,执行步骤s344;步骤s344,判断虚拟机是否需要重启;在上述调用dodeterminereboot函数中,判断虚拟机是否需要重启;如果xml文件定义不需要重启,则执行步骤s346;如果xml文件中定义需要重启,则更新虚拟机的测试状态为shutdownsystem,执行步骤s348;步骤s346,判断是否还有下一个测试;在上述调用dodeterminereboot函数中,判断是否还有下一个测试;如果还有下一个测试,则更新虚拟机的测试状态为systemup,执行步骤s324;如果没有下一个测试,及所有测试已经完成,则更新虚拟机状态为shutdownsystem,执行步骤s348;步骤s348,shutdownsystem;调用doshutdownsystem函数,关闭虚拟机,更新虚拟机的测试状态为shuttingdown,执行步骤s350;步骤s350,shuttingdown;调用doshuttingdown函数,执行步骤s352;步骤s352,判断shuttingdown是否状态超时;在上述调用doshuttingdown函数中,获取虚拟机信息;如果虚拟机的状态为off,说明虚拟机关机成功,则更新虚拟机的测试状态为systemdown,执行步骤s302;如果虚拟机的状态一直不为off,导致虚拟机处于shuttingdown测试状态超时,则更新虚拟机的测试状态为forecshutdown,执行步骤s322;在本发明优选实施例中,定义了虚拟机可能出现的多种测试状态,通过状态引擎,能够处理虚拟机在测试过程中出现的各种情况,保障了测试的顺利进行。进一步地,本优选实施例还可以通过检查虚拟机的22号端口是否处于监听状态来判断虚拟机的系统是否启动成功,提高了判断的准确性。上述步骤s328中,runtest.sh是虚拟机中运行测试的入口脚本,该脚本是根据xml中定义的要执行的测试脚本名称创建的,当执行runtest.sh脚本时,能够运行xml文件中定义的测试脚本。at是linux操作系统的一个服务,即计划任务。在本实施例中,可以根据远程测试脚本的名称创建测试入口脚本,将测试入口脚本提交至待测虚拟机的计划任务中进行执行。也就是说,当把runtest.sh提交到at时,可以在指定的时间在操作系统后台运行这个脚本。如此可以提高测试脚本运行的稳定性。在上述步骤s332中,state.txt文件是一个状态文件,用来标记测试执行的情况。这个文件由虚拟机中的远程测试脚本在运行过程中重写内容,开始执行远程测试脚本时,远程测试脚本向state.txt文件写入“testrunning”,标记测试开始;测试失败时,远程测试脚本向state.txt文件写入“testfailed”,标记测试失败;测试结束时,远程测试向state.txt文件写入“testcompleted”,标记测试完成。控制服务从虚拟机中拷贝state.txt文件,通过读取文件的内容,判断虚拟机中的测试执行到了什么阶段。一旦发现state.txt文件中的内容不是“testrunning”,说明本次测试已经停止。优选地,在待测虚拟机中安装远程测试工具,执行远程测试脚本之后还可以可以复制待测虚拟机中的状态文件,并且根据状态文件内容判断远程测试脚本是否开始执行和/或是否执行结束,进而实现了虚拟机测试状态的及时更新,提高了测试效率。本发明实施例提供的虚拟机测试方案集成了虚拟机的一些远程测试工具和测试脚本,虚拟机的测试脚本内容一般包含图4所示流程。步骤s402,创建state.txt文件,并写入“testrunning”;首先创建state.txt文件,向该文件中写入“testrunning”内容,标记测试开始,状态引擎根据虚拟机中的state.txt文件是否存在以及文件的内容来判断虚拟机的测试是否开始执行以及是否执行结束;步骤s404,安装测试工具;步骤s406,准备测试前提;步骤s408,运行测试工具;步骤s410,整理测试结果;步骤s412,判断测试是否成功;如果测试成功,则执行步骤s414,更新state.txt文件中的内容为“testcompleted”;如果测试不成,则执行步骤s416,更新state.txt文件中的内容为“testfailed”,结束测试。在本优选实施例中,脚本主体包括安装测试工具、准备测试前提、运行测试工具和整理测试结果。有些测试用例不需要使用测试工具,该部分就编写需要对虚拟机系统执行的操作命令。整理测试结果一般是生成两个文件,一个是该测试脚本的所有输出日志文件,一个是测试执行的测试结果文件,如性能数据等。对应于上述虚拟机测试方法,本发明实施例还提供了一种虚拟机测试工具,图5是根据本发明实施例的虚拟机测试工具结构示意图,如图5所示,根据本发明实施例的虚拟机测试工具可以包括:定义模块10,配置为定义测试环境;推送模块20,配置为将远程测试工具和远程测试脚本推送到一个或多个待测虚拟机中;执行模块30,配置为在待测虚拟机中安装远程测试工具,执行远程测试脚本;收集模块40,配置为收集远程测试脚本执行过程中的测试日志和测试结果,完成测试。在本发明的优选实施例中,如图6所示,定义模块10可以包括:第一定义单元11,配置为定义全局变量;第二定义单元12,配置为定义测试套件;第三定义单元13,配置为定义测试用例;第四定义单元14,配置为定义待测虚拟机。在本发明的优选实施例中,如图6所示,上述测试工具还包括:恢复模块50,配置为判断待测虚拟机是否处于关机状态;若是,则通过快照恢复将待测虚拟机的系统恢复至初始状态。在本发明的优选实施例中,如图6所示,上述测试工具还包括:启动模块60,配置为启动所述待测虚拟机;检查所述待测虚拟机的ssh安全外壳协议端口是否处于监听状态,若是,则确定所述待测虚拟机的系统启动成功。在本发明的优选实施例中,如图6所示,上述测试工具还包括:创建模块70,配置为根据所述远程测试脚本的名称创建测试入口脚本,并将所述测试入口脚本提交至所述待测虚拟机的计划任务中进行执行。可选地,通过所述状态引擎处理所述待测虚拟机出现的各种测试状态。在本发明的优选实施例中,上述定义模块10还配置为:基于xml可扩展性标记语言文件定义所述测试环境。在本发明的优选实施例中,如图6所示,上述测试工具还包括:判断模块80,配置为复制所述待测虚拟机中的状态文件;根据所述状态文件内容判断所述远程测试脚本是否开始执行和/或是否执行结束。在本发明的优选实施例中,如图6所示,上述测试工具还包括:发送模块90,配置为将所述收集到的测试日志和测试结果发送至指定用户。根据本发明实施例提供的虚拟机测试方法及工具能够同时对多台虚拟机进行不同的功能、性能测试。每次测试前通过虚拟机的快照恢复功能将虚拟机系统恢复到已知状态,保证了测试的稳定性和可重复性。通过状态引擎,能够处理虚拟机出现的各种情况,保障了测试的顺利进行。该工具通过控制服务器将远程测试工具和测试脚本推送到待测虚拟机中,执行测试和回收结果,简化了操作步骤,提高了测试效率。远程测试工具和测试脚本可根据需求进行更改和添加,具有灵活性和可扩展性。在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的虚拟机测试工具中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1