一种测试方法及装置与流程

文档序号:11601875阅读:208来源:国知局
一种测试方法及装置与流程
本发明涉及计算机领域,特别涉及一种测试方法及装置。

背景技术:
为了使得软件程序能给适应多平台,增强软件的兼容性,目前的很多软件均是基于虚拟机进行运行的。例如,许多浏览器中均内置有运行Flash动画的虚拟机,开发者在进行Flash的开发时,不需要考虑Flash动画是运行在什么平台下,只要平台下存在有Flash虚拟机,即可运行Flash动画。但是,由于虚拟机的提供商不同,虚拟机的内部结构的不同,同一软件在不同的虚拟机下运行时,难免产生性能和功能上的差异,同一软件在不同虚拟机下的运行表现也不尽相同。为了保证开发得到的软件或虚拟机的质量,在进行软件或虚拟机测试时,目前的方法是将软件放到各个虚拟机下进行运行,通过测试人员的直观的感受去判断一个软件的性能或功能的好坏,或比对被测试的虚拟机与其他虚拟机的性能或功能差异。但是,发明人发现现有技术至少存在以下问题:当同一软件在不同的虚拟机下运行时所表现出的性能差别不大时,光凭测试人员的直观感受不能够准确的得到软件在不同虚拟机下的性能表现,不能够给软件开发提供准确的功能和性能依据使得软件在各个虚拟机下达到相同的性能和功能上的效果,且在进行虚拟机开发时,也不能准确的得到当前被测试的虚拟机与其他虚拟机的性能和功能差异。

技术实现要素:
为了解决现有技术的问题,本发明实施例提供了一种测试方法及装置。所述技术方案如下:一种测试方法,所述方法包括:使至少两个虚拟机同时运行同一软件;每隔预设的时间收集所述虚拟机的运行数据,所述运行数据包括虚拟机性能数据和调试数据,所述调试数据为所述虚拟机所运行的软件对应的代码中的参数数据;比较所述虚拟机的运行数据,并输出比较结果。进一步地,所述每隔预设的时间收集所述虚拟机的运行数据之前,所述方法还包括:采用静态注入方式或动态注入方式向所述软件中注入包含用于实现数据采集器的代码;其中,所述数据采集器用于从所述虚拟机中采集所述运行数据。进一步地,所述采用静态注入方式向所述软件中注入包含用于实现数据采集器的代码,包括:在所述使至少两个虚拟机同时运行同一软件之前,向所述软件中注入包含用于实现数据采集器的代码。进一步地,所述采用动态注入方式向所述软件中注入包含用于实现数据采集器的代码,包括:在所述使至少两个虚拟机同时运行同一软件之后,向所述软件中注入包含用于实现数据采集器的代码。进一步地,所述每隔预设的时间收集所述虚拟机的运行数据之前,所述方法还包括:加载数据采集器;其中,所述数据采集器用于从所述虚拟机中采集所述运行数据。进一步地,所述每隔预设的时间收集所述虚拟机的运行数据,具体包括:建立与数据采集器的通信通道,所述数据采集器用于从所述虚拟机中采集所述运行数据;每隔预设的时间通过所述通信通道获取所述数据采集器采集得到的所述运行数据。进一步地,所述输出比较结果之后,所述方法还包括:通过所述通信信道向所述虚拟机发送修改所述调试数据的指令,以使得所述虚拟机对所述调试数据进行修改。进一步地,所述比较所述虚拟机的运行数据,并输出比较结果,具体包括:根据所述虚拟机的运行数据绘制图形或曲线,以所述绘制得到的图形或曲线展示所述运行数据;或,以表格或树形结构的形式展示所述虚拟机的运行数据。一种测试装置,所述装置包括:运行模块,用于使至少两个虚拟机同时运行同一软件;收集模块,用于每隔预设的时间收集所述虚拟机的运行数据,所述运行数据包括虚拟机性能数据和调试数据,所述调试数据为所述虚拟机所运行的软件对应的代码中的参数数据;比较模块,用于比较所述虚拟机的运行数据,并输出比较结果。进一步地,所述装置还包括:注入模块,用于在所述收集模块每隔预设的时间收集所述虚拟机的运行数据之前,采用静态注入方式或动态注入方式向所述软件中注入包含用于实现数据采集器的代码;其中,所述数据采集器用于从所述虚拟机中采集所述运行数据。进一步地,所述采用静态注入方式向所述软件中注入包含用于实现数据采集器的代码,包括:在所述使至少两个虚拟机同时运行同一软件之前,向所述软件中注入包含用于实现数据采集器的代码。进一步地,所述采用动态注入方式向所述软件中注入包含用于实现数据采集器的代码,包括:在所述使至少两个虚拟机同时运行同一软件之后,向所述软件中注入包含用于实现数据采集器的代码。进一步地,所述装置还包括:加载模块,用于在所述收集模块每隔预设的时间收集所述虚拟机的运行数据之前,加载数据采集器;其中,所述数据采集器用于从所述虚拟机中采集所述运行数据。进一步地,所述收集模块,具体包括:通信建立单元,用于建立与数据采集器的通信通道,所述数据采集器用于从所述虚拟机中采集所述运行数据;获取单元,用于每隔预设的时间通过所述通信通道获取所述数据采集器采集得到的所述运行数据。进一步地,所述装置还包括:修改模块,用于在所述比较模块输出比较结果之后,通过所述通信通道向所述虚拟机发送修改所述调试数据的指令,以使得所述虚拟机对所述调试数据进行修改。进一步地,所述比较模块,具体用于根据所述虚拟机的运行数据绘制图形或曲线,以所述绘制得到的图形或曲线展示所述运行数据;或,以表格或树形结构的形式展示所述虚拟机的运行数据。本发明实施例提供的技术方案带来的有益效果是:使两个以上的虚拟机同时运行同一软件,并实时的采集得到量化的虚拟机的运行数据,进行比较,并输出比较结果,可以使得测试人员或开发人员准确的得到软件在不同的虚拟机之间的性能及功能差异、不同的虚拟机在运行同一软件时的性能及功能差异,以修正软件或虚拟机,使得软件开发或虚拟机得到更好的效果。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例一提供的一种测试方法的流程图;图2是本发明实施例二提供的用于实现测试的架构示意图;图3是本发明实施例二提供的一种测试方法的流程图;图4是本发明实施例三提供的一种测试装置的结构示意图;图5是本发明实施例三提供的一种测试装置的第二种结构示意图;图6是本发明实施例三提供的一种测试装置的第三种结构示意图;图7是本发明实施例三提供的一种测试装置中的收集模块的结构示意图;图8是本发明实施例三提供的一种测试装置的第四种结构示意图。具体实施方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。实施例一如图1所示,本实施例提供了一种测试方法,可通过软件进行实现,具体包括如下步骤:101、使至少两个虚拟机同时运行同一软件;102、每隔预设的时间收集虚拟机的运行数据;其中,虚拟机的运行数据包括虚拟机性能数据和调试数据;103、比较虚拟机的运行数据,并输出比较结果。本实施例提供了一种测试方法,通过使两个以上的虚拟机同时运行同一软件,并实时的采集得到量化的虚拟机的运行数据,进行比较,并输出比较结果,可以使得测试人员或开发人员准确的得到软件在不同的虚拟机之间的性能及功能差异、不同的虚拟机在运行同一软件时的性能及功能差异,以修正软件或虚拟机,使得软件开发或虚拟机得到更好的效果。实施例二本实施例提供了一种测试方法,是在实施例1的基础之上进行的改进,本方法可通过安装于主机中的软件进行实现。需要说明的是,本发明为了达到实时获取并对比软件的性能和功能的效果,以及软件所运行的各个虚拟机的性能表现,本发明通过虚拟机运行软件时,采集虚拟机性能数据和调试数据进行比较,虚拟机性能数据和调试数据均为量化数据。其中,虚拟机性能数据为虚拟机在运行软件时,用于展示该虚拟机的处理性能的数据,例如可以包括虚拟机运行软件的解析速度、CPU占用率、内存使用、垃圾收集性能、执行软件中的函数的速度等;调试数据为虚拟机所运行的软件对应的代码中的参数数据,例如可以包括软件程序中的对象属性、局部变量、寄存器、堆栈数据等。为了便于说明,如图2所示,本实施例以使用两个Flash动画虚拟机:虚拟机1和虚拟机2运行同一SWF文件为例进行说明,其中,SWF文件为Flash动画文件,虚拟机1可以为AdobeFlashPlayer,虚拟机2可以为Heno。其中,数据收集器、虚拟机1和虚拟机2可位于同一台主机上,也可位于不同的主机上;数据采集器被注入到SWF文件中,用于分别采集虚拟机1和虚拟机2在运行该SWF文件时的虚拟机性能数据和调试数据;数据收集器,用于收集上述数据采集器采集得到的虚拟机性能数据和调试数据;数据处理器用于比较虚拟机性能数据和调试数据,并将数据量化输出,需要注意的是,数据收集器与数据处理器可以合并为同一个模块进行实现。下面详细说明本实施例提供的一种测试方法,如图3所示,包括如下步骤:201、使虚拟机1和虚拟机2同时运行同一SWF文件;需要说明的是,为了能够实时的获取虚拟机性能数据和调试数据并进行比较,本实施例所提供的方法,需使虚拟机同时运行同一软件,以达到同时获取虚拟机1和虚拟机2的虚拟机性能数据和调试数据,并实时的进行比较,输出比较结果的效果。202、通过数据采集器实时采集得到虚拟机1和虚拟机2运行同一SWF文件时的运行数据;其中,运行数据包括虚拟机性能数据和调试数据。在本实施例中,虚拟机的性能数据可以包括虚拟机1和虚拟机2运行Flash文件的帧率、显示对象的解析速度、CPU使用率、内存使用等;调试数据可以包括SWF文件的显示对象的颜色、位置、以及事件触发参数等。进一步地,数据采集器用于从虚拟机中采集虚拟机的虚拟机性能数据和调试数据,数据采集器的实现包括三种方式,如下:A.静态注入的方式,具体的为:在使虚拟机1和虚拟机2同时运行同一SWF文件之前,将包含有数据采集器的代码注入到SWF文件中。其中,将代码注入到软件中,具体为修改该软件的代码调用地址,使得当前的指针指向被注入的代码,为现有技术,这里不再赘述。B.动态注入的方法,具体的为:在使虚拟机1和虚拟机2同时运行同一SWF文件之后,需要获取虚拟机的虚拟机性能数据和调试数据时,将包含有数据采集器的代码注入到SWF文件中。C.将数据采集器作为专职的采集部件的方式,具体的为:当虚拟机开始运行SWF文件时,加载数据采集器。需要说明的是,此方式不需要将数据采集器注入到SWF文件中,直接将数据采集器作为一个采集部件进行加载即可。203、每隔预设的时间,数据收集器收集数据采集器采集得到的虚拟机的运行数据;具体地,每隔预设的时间,数据收集器收集数据采集器采集得到的虚拟机的运行数据,可以为:数据收集器建立与数据采集器的通信信道;每隔预设的时间,数据收集器通过与数据采集器之间的通信信道获取数据采集器采集得到的虚拟机的运行数据。其中,用于数据收集器与数据采集器之间进行通信的通信信道,具体可以通过Socket、rpc或共享内存传输的方式进行建立,但是并不局限于上述方式,只要能够完成数据收集器与数据采集器所对应的进程间通信即可。下面,分别对于Socket和共享内存传输的方式进行举例说明:例1,Socket的通信方式:S1、数据收集器调用Socket所提供函数接口,为数据采集分配端口,并通知数据采集器其端口号,等待接收数据采集器发送的虚拟机的运行数据;S2、数据采集器连接数据收集器为其分配的端口,建立Socket连接,每隔预设的时间,通过该端口向数据收集器发送虚拟机的运行数据。优选地,当虚拟机1和虚拟机2处于不同的主机上时,使用Socket的通信方式完成数据采集器和数据收集器之间的通信。例2,共享内存传输的方式:S1’、数据采集器和数据收集器所对应的进程通过调用系统接口建立进程间的共享内存;S2’、每隔预设的时间,数据采集器将虚拟机性能数据和调试数据写入共享内存;S3’、数据收集器在共享内存中读取虚拟机性的运行数据。优选地,当虚拟机1和虚拟机2处于相同的主机上时,使用共享内存传输的方式完成数据采集器和数据收集器之间的通信。204、对虚拟机性的运行数据进行比较,并实时的输出比较结果;进一步地,本实施例采集得到的虚拟机性能数据和调试数据均为量化数据,并可以根据虚拟机性能数据和调试数据绘制图像或曲线,通过图形或曲线展示运行数据;或,以表格或树形结构的形式展示运行数据。205、向虚拟机发送修改调试数据的指令,以使得虚拟机对调试数据进行修改。具体地,数据收集器可接收用户发送的修改调试数据的指令,并通过通信信道发送给虚拟机,使得虚拟机对调试数据进行修改,可以达到实时的测试虚拟机下运行软件,并实时对软件进行修改的功能。需要说明的是,本实施例仅以两个虚拟机运行同一软件为例进行说明,但是本实施例所提供的方法,可适用于两个以上的虚拟机运行同一软件以对软件或虚拟机进行测试的情况,方法与上述步骤201-205相同,这里不再赘述。本实施例提供了一种测试方法,通过使两个以上的虚拟机同时运行同一软件,并实时的采集得到量化的虚拟机的运行数据,进行比较,并输出比较结果,可以使得测试人员或开发人员准确的得到软件在不同的虚拟机之间的性能及功能差异、不同的虚拟机在运行同一软件时的性能及功能差异,以修正软件或虚拟机,使得软件或虚拟机开发得到更好的效果。实施例三如图4所示,本发明实施例提供了一种测试装置,该装置包括:运行模块301,用于使至少两个虚拟机同时运行同一软件;收集模块302,用于每隔预设的时间收集虚拟机的运行数据,运行数据包括虚拟机性能数据和调试数据;比较模块303,用于比较虚拟机的运行数据,并输出比较结果。进一步地,如图5所示,上述装置还包括:注入模块304,用于在收集模块302每隔预设的时间收集虚拟机的运行数据之前,采用静态注入方式或动态注入方式向软件中注入包含用于实现数据采集器的代码;其中,数据采集器用于从虚拟机中采集虚拟机的运行数据。进一步地,采用静态注入方式向软件中注入包含用于实现数据采集器的代码,包括:在使至少两个虚拟机同时运行同一软件之前,向软件中注入包含用于实现数据采集器的代码。进一步地,采用动态注入方式向软件中注入包含用于实现数据采集器的代码,包括:在使至少两个虚拟机同时运行同一软件之后,向软件中注入包含用于实现数据采集器的代码。进一步地,如图6所示,上述装置还包括:加载模块305,用于在收集模块302每隔预设的时间收集所述虚拟机的运行数据之前,加载数据采集器;其中,数据采集器用于从虚拟机中采集虚拟机的运行数据。进一步地,如图7所示,收集模块302,具体包括:通信建立单元3021,用于建立与数据采集器的通信通道;获取单元3022,用于每隔预设的时间通过通信通道获取数据采集器采集得到的虚拟机的运行数据。进一步地,如图8所示,上述装置还包括:修改模块306,用于在比较模块303输出比较结果之后,通过通信通道向虚拟机发送修改调试数据的指令,以使得虚拟机对调试数据进行修改。进一步地,比较模块303,具体用于根据虚拟机的运行数据绘制图形或曲线,以绘制得到的图形或曲线展示运行数据;或,以表格或树形结构的形式展示虚拟机的运行数据。本发明实施例提供了一种测试装置,通过使两个以上的虚拟机同时运行同一软件,并实时的采集得到量化的虚拟机性的运行数据,进行比较,并输出比较结果,可以使得测试人员或开发人员准确的得到软件在不同的虚拟机之间的性能及功能差异、不同的虚拟机在运行同一软件时的性能及功能差异,以修正软件或虚拟机,使得软件或虚拟机开发得到更好的效果。需要说明的是:上述实施例提供的测试装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的测试方法与测试装置属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1