性能测试方法和装置制造方法

文档序号:7979495阅读:484来源:国知局
性能测试方法和装置制造方法
【专利摘要】本发明公开了一种性能测试方法和装置,属于网络设备域。所述方法用于网络设备,所述方法包括:依次访问一个或一个以上连接中每个连接的事件队列;根据访问到的事件的类型调用用户定义脚本对所述访问到的事件进行处理;记录所述访问到的事件的处理参数,以测试所述网络设备的性能。该装置包括:访问模块、调用模块和记录模块。采用本发明的技术方案,可根据预设的用户定义脚本对各个访问到的事件进行处理,以获取网络设备对各种事件的处理参数,使得在性能评析中可根据测试中获取的处理参数,确定该网络设备运行中以及数据处理等性能。
【专利说明】性能测试方法和装置
【技术领域】
[0001]本发明涉及网络设备领域,特别涉及一种性能测试方法和装置。
【背景技术】
[0002]随着对网络设备性能的要求越来越高,在网络设备投入使用时,一般会对设备的性能进行测试,现有的测试手段一般为手动设置收发包,或根据默认配置参数进行收发包,以确定设备的稳定性,其测试过程通常需基于固定的平台,不能跨平台使用,对于不同平台,需开发不同的测试过程,单一测试过程的应用范围狭窄,扩展性差,无法满足不同平台的测试需求。

【发明内容】

[0003]为了满足不同平台的测试需求,扩大测试的应用范围,本发明实施例提供了一种性能测试方法和装置。所述技术方案如下:
[0004]一方面,一种性能测试方法,所述方法用于网络设备,所述方法包括:
[0005]依次访问一个或一个以上连接中每个连接的事件队列;
[0006]根据访问到的事件的类型调用用户定义脚本对所述访问到的事件进行处理;
[0007]记录所述访问到的事件的处理参数,以测试所述网络设备的性能。
[0008]依次访问一个或一个以上连接中每个连接的事件队列,之前包括:
[0009]建立所述一个或一个以上连接及每个所述连接事件队列,为每个所述连接的事件队列加载发送事件;
[0010]当所述每个连接的事件队列中任一个连接的发送事件被访问,且接收到所述连接的数据包时,为所述连接加载接收事件。
[0011]根据访问到的事件的类型调用用户定义脚本对所述访问到的事件进行处理,具体包括:
[0012]当所述访问到的事件的类型为发送事件时,调用所述用户定义脚本产生请求包,调用多用途网络应用框架MINA,向指定服务器所述请求包;
[0013]当所述访问到的事件的类型为接收事件时,调用所述用户定义的脚本对所述接收事件进行响应。
[0014]记录所述访问到的事件的处理参数,之后包括:
[0015]根据所述用户定义脚本,调整下一个测试周期的测试参数,循环执行所述性能测试方法。
[0016]记录所述访问到的事件的处理参数,之后包括:
[0017]统计所述网络设备在测试过程中所记录的处理参数,生成测试结果报表。
[0018]所述用户定义脚本用于设置下述任一项或几项测试参数:
[0019]并发连接数、工作线程数、测试运行时间、发包个数和流量控制。
[0020]另一方面,一种性能测试装置,所述装置用于网络设备,所述装置包括:[0021]访问模块,用于依次访问一个或一个以上连接中每个连接的事件队列;
[0022]调用模块,用于根据访问到的事件的类型调用用户定义脚本对所述访问到的事件进行处理;
[0023]记录模块,用于记录所述访问到的事件的处理参数,以测试所述网络设备的性能。
[0024]所述装置还包括:
[0025]初始化模块,用于建立所述一个或一个以上连接及每个所述连接事件队列,为每个所述连接的事件队列加载发送事件;
[0026]所述初始化模块,还用于当所述每个连接的事件队列中任一个连接的发送事件被访问,且接收到所述连接的数据包时,为所述连接加载接收事件。
[0027]所述调用模块具体用于当所述访问到的事件的类型为发送事件时,调用所述用户定义脚本产生请求包,调用多用途网络应用框架MINA,向指定服务器所述请求包;
[0028]所述调用模块还用于当所述访问到的事件的类型为接收事件时,调用所述用户定义脚本对所述接收事件进行响应。
[0029]所述装置还包括:
[0030]调整模块,用于根据所述用户定义脚本,调整下一个测试周期的测试参数,并触发所述访问模块循环进行性能测试。
[0031]所述装置还包括:
[0032]生成模块,用于根据所述记录模块在测试过程中所记录的处理参数,生成测试结果报表。
[0033]所述用户定义脚本用于设置下述任一项或几项参数:
[0034]并发连接数、工作线程数、测试运行时间、发包个数和流量控制。
[0035]本发明提供了一种性能测试方法和装置,通过依次访问一个或一个以上连接中每个连接的事件队列;根据访问到的事件的类型调用用户定义脚本对所述访问到的事件进行处理;记录所述访问到的事件的处理参数,以测试所述网络设备的性能。采用本发明的技术方案,可根据预设的用户定义脚本对各个访问到的事件进行处理,以获取网络设备对各种事件的处理参数,使得在性能评析中可根据测试中获取的处理参数,确定该网络设备运行中以及数据处理等性能。
【专利附图】

【附图说明】
[0036]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0037]图1是本发明实施例提供的一种性能测试方法的流程图;
[0038]图2是本发明实施例提供的一种性能测试方法的流程图;
[0039]图3是本发明实施例提供的一种性能测试装置的结构示意图。
【具体实施方式】
[0040]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0041]需要说明的是,本发明实施例的性能测试方法,可以由性能测试装置执行;本发明实施例的性能测试方法,也可以由具备性能测试功能的网络设备执行,例如:包含了性能测试装置的网络设备。本发明后续实施例中,其性能测试方法的执行主体以性能测试装置为例进行说明。
[0042]图1是本发明实施例提供的一种性能测试方法的流程图。该性能测试方法用于网络设备,参见图1,该实施例包括:
[0043]101、依次访问一个或一个以上连接中每个连接的事件队列;
[0044]102、根据访问到的事件的类型调用用户定义脚本对所述访问到的事件进行处理;
[0045]103、记录所述访问到的事件的处理参数,以测试所述网络设备的性能。
[0046]可选地,依次访问一个或一个以上连接中每个连接的事件队列,之前包括:
[0047]建立所述一个或一个以上连接及每个所述连接事件队列,为每个所述连接的事件队列加载发送事件;
[0048]当所述每个连接的事件队列中任一个连接的发送事件被访问,且接收到所述连接的数据包时,为所述连接加载接收事件。
[0049]可选地,根据访问到的事件的类型调用用户定义脚本对所述访问到的事件进行处理,具体包括:
[0050]当所述访问到的事件的类型为发送事件时,调用所述用户定义脚本产生请求包,调用多用途网络应用框架MINA,向指定服务器所述请求包;
[0051]当所述访问到的事件的类型为接收事件时,调用所述用户定义的脚本对所述接收事件进行响应。
[0052]可选地,记录所述访问到的事件的处理参数,之后包括:
[0053]根据所述用户定义脚本,调整下一个测试周期的测试参数,循环执行所述性能测试方法。
[0054]可选地,记录所述访问到的事件的处理参数,之后包括:
[0055]统计所述网络设备在测试过程中所记录的处理参数,生成测试结果报表。
[0056]可选地,所述用户定义脚本用于设置下述任一项或几项测试参数:
[0057]并发连接数、工作线程数、测试运行时间、发包个数和流量控制。
[0058]采用本发明的技术方案,可根据预设的用户定义脚本对各个访问到的事件进行处理,以获取网络设备对各种事件的处理参数,使得在性能评析中可根据测试中获取的处理参数,确定该网络设备运行中以及数据处理等性能。
[0059]图2是本发明实施例提供的一种性能测试方法的流程图。该性能测试方法用于网络设备,参见图2,该实施例包括:
[0060]201、建立一个或一个以上连接及每个连接事件队列,为每个所述连接的事件队列加载发送事件;
[0061]在本实施例中,为了达到测试的目的,需要首先建立测试的基本单元,也即是对数据的收发进行测试,因此,建立一个或一个以上链接,并为每个连接建立事件队列,为每个连接的事件队列加载一个发送事件。需要说明的是,对于事件队列所加载的事件来说,包括:发送事件、接收事件和结束事件。当发送事件被访问,且接收到该连接的数据包时,为该连接加载接收事件。当事件队列满足预设的结束条件时,为该事件队列加载结束事件,当工作线程访问到结束事件后,结束对该事件队列的访问,访问下一个连接的事件队列。
[0062]另外,该建立连接以及加载事件的过程可以认为是测试的初始化过程,可根据用户定义脚本中的测试参数进行,该测试参数包括但不限于并发连接数、工作线程数、测试运行时间、发包个数和流量控制中的一项或几项。
[0063]在本实施例中,在测试初始化时,可以通过用户定义脚本对并发连接数进行限制,以便根据预设的并发连接数建立预设数目个连接,并为各个连接的事件队列加载发送事件,通过对该预设数目个连接的事件队列的访问以及对相应事件的处理,对网络设备的性能进行测试。
[0064]如,预设并发连接数为100,则同时建立100个连接以及其事件队列。
[0065]202、工作线程依次访问一个或一个以上连接中每个连接的事件队列;
[0066]其中,依次访问可以对一个或一个以上连接的随机访问,还可以是依据指定顺序对一个或一个以上连接的访问,本发明实施例不做具体限定。
[0067]在本实施例中,在测试开始前,还可以通过用户定义脚本对工作线程数进行限制,以便根据预设的工作线程数对多个事件队列进行访问,以获得预设个事件,并同时对这些事件进行处理。
[0068]优选地,在测试过程中,该工作线程数还可以根据预设规则在每一个测试周期中变化,以便获得的处理参数能够多样化,如,在每个测试周期中,j = j+1,其中,j为工作线程数,也即是每完成一个测试周期,其下一个周期的工作线程数为上一个周期的工作线程数加I。
[0069]203、当所述访问到的事件的类型为发送事件时,调用所述用户定义脚本产生请求包,调用多用途网络应用框架MINA,向指定服务器所述请求包;
[0070]优选地,用户定义脚本为Python脚本,在该Python脚本中,可以用于设置下述一个或多个测试参数:并发连接数、工作线程数、测试运行时间、发包个数和流量控制。
[0071]其中,MINA(Multipurpose Infrastructure for Network Applications,多用途网络应用框架)是一个开源的JAVA的网络应用框架,还称为Apache ΜΙΝΑ。该MINA框架提供了 IOHandler、IOSession、IOFilter 和 IOService 等服务,IOHandler 为业务处理逻辑、IOSession是当前网络设备到服务器端的一个连接实例,IOFilter用于悬接通讯层接口与业务层接口,1Service便是应用程序的入口。MINA框架为本领域技术人员可以获知的现有技术,在此不再赘述。
[0072]当工作线程访问到发送事件,回调用户定义脚本里的OnSend请求处理方法,产生一个请求包,用发送事件对应的连接调用MINA去发送10请求;通过编辑Python脚本实现测试逻辑。其中,用户定义脚本里的OnSend请求处理方法定义了该请求包的发包内容、格式、以及该请求包应用的协议等。对于不同的远端服务器,该用户定义脚本中可以有不同的OnSend请求处理方法,技术人员可根据测试需求设置一种或多种请求处理方法,以适应对不同平台、不同网络架构中网络设备的性能测试。
[0073]其中,指定服务器是指该次测试所对应的远端服务器。
[0074]进一步地,该用户定义脚本中的OnSend请求处理方法所定义的该请求包的发包内容、格式、以及该请求包应用的协议等均可以由技术人员在测试之前或测试期间进行设置和调整,该设置和调整可以为对发包内容、格式以及协议等参数的设置和调整,本发明对此不作限定。
[0075]204、当所述访问到的事件的类型为接收事件时,调用所述用户定义的脚本对所述接收事件进行响应;
[0076]当被测网络设备接收到连接对应的数据包,则通过MINA框架为该连接的事件队列中加载接收事件,由于工作线程数以及当前正在处理的事件,该接收事件会在工作线程访问到该连接时被访问。当工作线程访问到接收事件,回调用户定义脚本里的OnRecv响应处理方法,对数据包进行后置处理和断言等操作;进一步地,当工作线程获取到结束事件,就停止工作。
[0077]其中,用户定义脚本里的OnRecv响应处理方法定义了该响应的格式、以及该响应应用的协议等。对于不同的远端服务器,该用户定义脚本中可以有不同的OnRecv响应处理方法,技术人员可根据测试需求设置一种或多种OnRecv响应处理方法,以适应对不同平台、不同网络架构中网络设备的性能测试。
[0078]进一步地,该用户定义脚本中的OnRecv响应处理方法所定义的该响应的格式、以及该响应应用的协议等均可以由技术人员在测试之前或测试期间进行设置和调整,该设置和调整可以为对该响应的格式、以及该响应应用的协议等参数的设置和调整,本发明对此不作限定。
[0079]205、记录所述访问到的事件的处理参数,以测试网络设备的性能;
[0080]该处理参数可以包括:发包时间、发包速度等等,技术人员可根据实际测试需要制定需要记录的处理参数,本发明对此不作限定。
[0081]206、当未达到测试停止条件时,对测试参数进行调整,并根据调整后的测试参数执行步骤202 ;
[0082]其中,测试参数可以是递增调整,如发包个数为10个,在下一个测试周期调整为12个,再下一个测试周期调整为14个,依此类推。当然,该测试参数还可以是递减调整,还可以是以根据以等比数列形式或其他形式调整,在此不做赘述。
[0083]另外,该测试参数中的测试运行事件、发包个数和流量控制可以通过在用户定义脚本进行调整以适应不同的平台和系统的测试需求。通过对测试参数的调整,可以虚拟各种网络环境,以及各种系统运行环境,使得测试得到的处理参数更具有实际价值,为后续对网络设备的性能进行改进提供了参考。
[0084]需要说明的是,本实施例提供的测试是一个可以包含多个测试周期的测试,对于网络设备的测试过程来说,获取多个周期的测试结果,才能够准确的获知网络设备运行中的状态,因此,每周期结束时,根据用户定义脚本所设置的各个参数,循环执行步骤202-206。而为了不让测试无限循环的进行,可以测试运行事件、发包个数、流量控制等作为测试停止条件,通过判断是否达到测试停止条件,判断是否停止测试。其中,测试运行时间是指整个测试过程的运行时间,可以通过计时器等方式实现,以计时器方式为例,当测试运行时间达到计时器时长时,停止测试,当测试运行时间未达到计时器时长时,根据用户定义脚本的各个参数循环执行步骤202-206。其中,发包个数是指整个测试过程的发包总数,当测试过程中的发包个数达到了预设的发包个数,则停止测试,当测试过程中的发包个数未达到预设的发包个数,跟据用户定义脚本的各个参数循环执行步骤202-206。其中,流量控制是指对整个测试过程的流量进行控制,当测试过程中的发包或收包流量达到流量控制所预设的流量,则停止测试,当测试过程中的发包或收包流量未达到流量控制所预设的流量,跟据用户定义脚本的各个参数循环执行步骤202-206。
[0085]207、统计所述网络设备在测试过程中所记录的处理参数,生成测试结果报表。
[0086]进一步地,该用户定义脚本中的OnSend请求处理方法所定义的该请求包的发包内容、格式、以及该请求包应用的协议等均可以由技术人员在测试之前或测试期间进行设置和调整,该设置和调整可以为对发包内容、格式以及协议等参数的设置和调整,本发明对此不作限定。
[0087]用本发明的技术方案,可根据预设的用户定义脚本对各个访问到的事件进行处理,以获取网络设备对各种事件的处理参数,使得在性能评析中可根据测试中获取的处理参数,确定该网络设备运行中以及数据处理等性能。进一步地,在本实施例中,还可以根据具体测试的系统以及测试需求对用户定义脚本中的各个测试参数进行调整,如,通过编辑用户定义脚本实现动态调整发包内容、通过编辑用户定义脚本实现设置并发连接数、工作线程数、测试运行时间、发包个数和流量控制,还可以通过使用用户定义脚本调用框架提供的扩展库可以实现对多种协议收发包的支持,可在不同系统平台上实现测试,而在测试过程中,只要测试框架通过用户定义脚本设置好测试参数后,整个测试框架会按一定的逻辑自动执行测试过程,达到了自动测试的目的。
[0088]下面是一个适用于本发明的Python脚本的伪代码示例:
[0089]
【权利要求】
1.一种性能测试方法,所述方法用于网络设备,其特征在于,所述方法包括: 依次访问一个或一个以上连接中每个连接的事件队列; 根据访问到的事件的类型调用用户定义脚本对所述访问到的事件进行处理; 记录所述访问到的事件的处理参数,以测试所述网络设备的性能。
2.根据权利要求1所述的方法,其特征在于,依次访问一个或一个以上连接中每个连接的事件队列,之前包括: 建立所述一个或一个以上连接及每个所述连接事件队列,为每个所述连接的事件队列加载发送事件; 当所述每个连接的事件队列中任一个连接的发送事件被访问,且接收到所述连接的数据包时,为所述连接加载接收事件。
3.根据权利要求1所述的方法,其特征在于,根据访问到的事件的类型调用用户定义脚本对所述访问到的事件进行处理,具体包括: 当所述访问到的事件的类型为发送事件时,调用所述用户定义脚本产生请求包,调用多用途网络应用框架MINA,向指定服务器所述请求包; 当所述访问到的事件的类型为接收事件时,调用所述用户定义的脚本对所述接收事件进行响应。
4.根据权利要求1所述 的方法,其特征在于,记录所述访问到的事件的处理参数,之后包括: 根据所述用户定义脚本,调整下一个测试周期的测试参数,循环执行所述性能测试方法。
5.根据权利要求1所述的方法,其特征在于,记录所述访问到的事件的处理参数,之后包括: 统计所述网络设备在测试过程中所记录的处理参数,生成测试结果报表。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述用户定义脚本用于设置下述任一项或几项测试参数: 并发连接数、工作线程数、测试运行时间、发包个数和流量控制。
7.一种性能测试装置,所述装置用于网络设备,其特征在于,所述装置包括: 访问模块,用于依次访问一个或一个以上连接中每个连接的事件队列; 调用模块,用于根据访问到的事件的类型调用用户定义脚本对所述访问到的事件进行处理; 记录模块,用于记录所述访问到的事件的处理参数,以测试所述网络设备的性能。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括: 初始化模块,用于建立所述一个或一个以上连接及每个所述连接事件队列,为每个所述连接的事件队列加载发送事件; 所述初始化模块,还用于当所述每个连接的事件队列中任一个连接的发送事件被访问,且接收到所述连接的数据包时,为所述连接加载接收事件。
9.根据权利要求7所述的装置,其特征在于,所述调用模块具体用于当所述访问到的事件的类型为发送事件时,调用所述用户定义脚本产生请求包,调用多用途网络应用框架ΜΙΝΑ,向指定服务器所述请求包;所述调用模块还用于当所述访问到的事件的类型为接收事件时,调用所述用户定义的脚本对所述接收事件进行响应。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括: 调整模块,用于根据所述用户定义脚本,调整下一个测试周期的测试参数,并触发所述访问模块循环进行性能测试。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括: 生成模块,用于根据所述记录模块在测试过程中所记录的处理参数,生成测试结果报表。
12.根据权利要求7-11任一项所述的装置,其特征在于,所述用户定义脚本用于设置下述任一项或几项参数: 并发连接数、工作线程数、测试运行时间、发包个数和流量控制。
【文档编号】H04L12/26GK103457784SQ201210177878
【公开日】2013年12月18日 申请日期:2012年6月1日 优先权日:2012年6月1日
【发明者】宁京, 欧阳骏, 叶方正 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1