在分布式系统上执行压力测试的方法以及装置制造方法

文档序号:6619900阅读:192来源:国知局
在分布式系统上执行压力测试的方法以及装置制造方法
【专利摘要】一种在分布式系统上执行压力测试的方法以及装置。一种在分布式系统上执行压力测试的方法包括:接收用户施压代码的信息和作业控制信息,所述作业控制信息包括测试函数的信息、施压强度以及施压节点个数的信息;根据接收的用户施压代码的信息和作业控制信息生成包括实现所述施压强度的执行次数的所述测试函数的信息的函数执行列表;通过与注册的施压节点交互执行施压执行处理,其中,响应于接收到任一施压节点的执行请求,将所述函数执行列表中第一个尚未执行的测试函数的信息发送给所述施压节点,并且将所述第一尚未执行的测试函数标注为已执行。可通过多个施压节点自动地实现高并发的施压,高效地实现并发施压。
【专利说明】在分布式系统上执行压力测试的方法以及装置

【技术领域】
[0001]本发明涉及一种压力测试技术,尤其涉及一种在分布式系统上执行压力测试的方法和使用所述方法的装置。

【背景技术】
[0002]今年来汇聚了各种功能、处理大量数据的应用系统变得越来越大,其承载的服务也越来越多,由此存在的性能瓶颈点也在增加。因此,需要对这样的软件和应用系统进行压力测试。
[0003]在执行压力测试的过程中,调配测试机器、部署测试环境、并发施压以及统计结果都涉及大量工作,耗时且费力。此外,在压力测试中,还需要手工操作来对施压强度进行控制和调节。
[0004]因此,如何高效地执行高并发的压力测试成为现今压力测试中的一个契待解决的问题。


【发明内容】

[0005]本发明的实施例提供一种在分布式系统上执行压力测试的方法以及使用所述方法的装置,通过分布式集群执行目标压力强度的并发施压,易于部署且提高效率。
[0006]为达到上述目的,本发明的实施例采用如下技术方案:
[0007]—种在分布式系统上执行压力测试的方法,所述压力测试方法包括:
[0008]接收用户施压代码的信息和作业控制信息,所述作业控制信息包括测试函数的信息、施压强度以及施压节点个数的信息;
[0009]根据接收的用户施压代码的信息和作业控制信息生成包括实现所述施压强度的执行次数的所述测试函数的信息的函数执行列表;
[0010]通过与注册的施压节点交互执行施压执行处理,其中,所述施压执行处理包括:
[0011]响应于接收到任一施压节点的执行请求,将所述函数执行列表中第一个尚未执行的测试函数的信息发送给所述施压节点,并且将所述第一尚未执行的测试函数标注为已执行;
[0012]响应于接收到任一施压节点的施压反馈数据,基于接收的施压反馈数据进行统计,生成施压测试统计信息,并且将所述施压测试统计信息发送给指定的装置。
[0013]一种在分布式系统上执行压力测试的方法,所述压力测试方法包括:
[0014]请求发送步骤:向施压总控节点发送执行请求;
[0015]函数接收步骤:从所述施压总控节点接收测试函数的信息;
[0016]函数执行步骤:执行所述测试函数;
[0017]结果发送步骤,将所述测试函数收集的测试结果数据发送给施压总控节点,并且返回请求发送步骤。
[0018]一种在分布式系统上执行压力测试的方法,所述压力测试方法包括:
[0019]接收压力测试作业,所述压力测试作业包括用户施压代码的信息和作业控制信息,所述作业控制信息包括测试函数的信息、施压强度以及施压节点个数的信息;
[0020]向资源分配系统请求使用施压总控节点;
[0021]向所述施压总控节点发送所述用户施压代码的信息和作业控制信息;
[0022]从所述施压总控节点接收施压测试统计信息;
[0023]记录所述施压测试统计信息。
[0024]一种在分布式系统上执行压力测试的装置,所述装置包括:
[0025]施压作业接收单元,用于接收用户施压代码的信息和作业控制信息,所述作业控制信息包括测试函数的信息、施压强度以及施压节点个数的信息;
[0026]任务列表生成单元,用于根据施压作业接收单元接收的用户施压代码的信息和作业控制信息生成包括实现所述施压强度的执行次数的所述测试函数的信息的函数执行列表;
[0027]节点交互单元,用于接收来自施压节点的执行请求,向施压节点发送测试函数的信息,并且接收来自施压节点的施压反馈数据;
[0028]统计数据发送单元,用于发送所述施压测试统计信息;
[0029]测试任务执行单元,用于通过与注册的施压节点交互执行施压执行处理,
[0030]其中,响应于节点交互单元接收到任一施压节点的执行请求,测试任务执行单元通过节点交互单元将所述函数执行列表中第一个尚未执行的测试函数的信息发送给所述施压节点,并且将所述第一尚未执行的测试函数标注为已执行,
[0031]其中,响应于节点交互单元接收到任一施压节点的施压反馈数据,测试任务执行单元基于接收的施压反馈数据进行统计,生成施压测试统计信息,并且通过统计数据发送单元将所述施压测试统计信息发送给指定的装置。
[0032]一种在分布式系统上执行压力测试的装置,所述装置包括:
[0033]请求发送单元,用于向施压总控节点发送执行请求;
[0034]函数接收单元,用于从所述施压总控节点接收测试函数的信息;
[0035]函数执行单元,用于执行所述测试函数;
[0036]结果发送单元,用于将所述测试函数收集的测试结果数据发送给施压总控节点,并且通过请求发送单元向施压总控节点发送执行请求。
[0037]—种在分布式系统上执行压力测试的装置,所述装置包括:
[0038]测试作业接收单元,用于接收压力测试作业,所述压力测试作业包括用户施压代码的信息和作业控制信息,所述作业控制信息包括测试函数的信息、施压强度以及施压节点个数的信息;
[0039]资源请求单元,用于向资源分配系统请求使用施压总控节点;
[0040]施压作业发送单元,用于向所述施压总控节点发送所述用户施压代码的信息和作业控制信息;
[0041]测试统计信息接收单元,用于从所述施压总控节点接收施压测试统计信息;
[0042]测试统计信息记录单元,用于记录所述施压测试统计信息。
[0043]根据本发明的示例性实施例的在分布式系统上执行压力测试的方法和装置可通过多个施压节点自动地实现高并发的施压,不需要手工配置单个测试设备、不需要手工向每个配置的测试设备发送施压函数,可高效地实现并发施压,进行压力控制,且易于部署。此外,还可监控施压执行情况,收集施压数据并进行统计。
[0044]在此基础上,根据本发明的示例性实施例的在分布式系统上执行压力测试的方法和装置还可以自适应地调整使用的施压节点的个数,调整施压强度。

【专利附图】

【附图说明】
[0045]图1是示出根据本发明的示例性实施例的分布式压力测试系统的构架的示意图;
[0046]图2示出用户测试代码的示例;
[0047]图3是示出根据本发明的第一示例性实施例的在分布式系统上执行压力测试的方法的流程图;
[0048]图4是示出根据本发明的第二示例性实施例的在分布式系统上执行压力测试的方法的流程图;
[0049]图5是示出根据本发明的第三示例性实施例的在分布式系统上执行压力测试的方法的流程图;
[0050]图6是示出根据本发明的第四示例性实施例的在分布式系统上执行压力测试的方法的流程图;
[0051]图7是示出根据本发明的第五示例性实施例的测试控制装置的逻辑框图;
[0052]图8示出根据本发明的第六示例性实施例的施压总控节点的逻辑框图;
[0053]图9示出根据本发明的第七示例性实施例的施压节点的逻辑框图。

【具体实施方式】
[0054]下面结合附图对本发明实施例在分布式系统上执行压力测试的方法以及使用所述方法的分布式压力测试系统进行详细描述。
[0055]图1是示出根据本发明的示例性实施例的分布式压力测试系统的构架的示意图。
[0056]参照图1,根据本发明的示例性实施例的分布式压力测试系统包括测试控制装置110、资源管理系统120、施压总控节点130和多个施压节点140。
[0057]测试控制装置110用于接收压力测试作业,向资源管理系统120请求施压总控节点资源,通过施压总控节点130执行所述压力测试作业并且获得施压测试统计信息。所述压力测试作业至少包括用户施压代码的信息和作业控制信息,所述作业控制信息至少包括测试函数的信息、施压强度以及施压节点个数的信息。所述用户施压代码可以是用户编制的用于测试软件程序或系统中调用的函数/方法的代码,所述测试函数是压力测试作业指定的要测试的所述用户施压代码中的函数/方法。
[0058]图2示出用户测试代码的示例。参照图2,可以将类SeleniumTest看作是用户用于测试系统登录1ginO、登出1goutO以及退出quit()的施压代码,其中,所述压力测试作业可指定要进行施压的测试函数/方法(如1ginO)。在1ginO方法中,计算了登录操作的延迟,并且以计算的参数名称和参数值作为输入调用了用于提供反馈的方法feedback O,将收集的参数键值对提供给施压总控节点。
[0059]资源管理系统120负责管理包括施压总控节点和施压节点的分布式集群。资源管理系统120根据测试控制装置110使用施压总控节点的请求,启动施压总控节点130 ;资源管理系统120还根据来自测试控制装置110或施压总控节点130的使用施压节点的请求,启动指定个数的施压节点140。此外,所述使用施压节点的请求还可包括为所述施压节点请求的资源的信息,相应地,资源管理系统120在分配所述施压节点140时,还为所述施压节点分配相应的资源。
[0060]施压总控节点130用于根据测试控制装置110提供的压力测试作业,控制注册的施压节点140执行施压,并且对施压节点140提供的施压反馈数据进行统计,生成施压测试统计信息,并且将所述施压测试统计信息发送给测试控制装置110。
[0061]施压节点140用于执行施压总控节点130指示要执行的测试函数,并且将在执行过程中通过所述测试函数收集的测试结果数据发送给执行施压总控节点130。
[0062]根据本发明的可选实施例,所述分布式压力测试系统可还包括基准测试平台150,所述测试控制装置I1可将从施压总控节点130接收的施压测试统计信息实时记录到基准测试平台150。
[0063]根据本发明的优选实施例,所述压力测试作业还可指定执行预定轮次的施压测试。施压总控节点130在执行每轮施压测试后,可根据该轮的施压情况调整使用的施压节点的个数,以期达到压力测试作业指定的施压强度。这样,不仅自动地实现高并发的施压,还可自适应地调整施压并发数,以尽可能满足施压强度要求。
[0064]以下将参照图3?图6详细描述本发明的在分布式系统上执行压力测试的方法。
[0065]图3是示出根据本发明的第一示例性实施例的在分布式系统上执行压力测试的方法的流程图。
[0066]参照图3,在步骤S310,测试控制装置110接收包括用户施压代码的信息和作业控制信息的压力测试作业,所述作业控制信息包括测试函数的信息、施压强度以及施压节点个数的信息。根据本发明的优选实施例,所述作业控制信息可还包括施压轮次数,以指定执行多轮施压。
[0067]在步骤S320,测试控制装置110向资源分配系统120请求使用施压总控节点。响应于所述使用施压总控节点的请求,资源分配系统120启动施压总控节点130。
[0068]在步骤S330,测试控制装置110向所述施压总控节点130发送所述用户施压代码的信息和作业控制信息,以指示施压总控节点130按照所述作业控制信息进行施压处理。
[0069]根据本发明的优选实施例,在步骤S320或在执行步骤S330后,测试控制装置110还向资源分配系统请求使用所述施压节点个数的施压节点,并且根据所述资源信息向所述资源分配系统请求为所述施压节点分配其需要的资源,从而在执行施压前部署施压所需的初始资源(如所述施压节点个数的施压节点)。
[0070]之后,在步骤S340,测试控制装置110从施压总控节点130接收施压测试统计信息,并且在步骤S350,测试控制装置110(在基准测试平台中)记录接收的施压测试统计信肩、O
[0071]由于施压节点140执行每测试函数都会返回施压反馈数据,施压总控节点130也通常在每次接收到施压反馈数据时都会进行施压测试结果的统计,因此测试控制装置110通常持续执行步骤S340和S350。
[0072]图4是示出根据本发明的第二示例性实施例的在分布式系统上执行压力测试的方法的流程图。
[0073]参照图4,在步骤S410,施压总控节点130接收用户施压代码的信息和作业控制信息,所述作业控制信息包括测试函数的信息、施压强度以及施压节点个数的信息。例如,如在图3的步骤S330,由测试控制装置110将所述用户施压代码的信息和作业控制信息发送给施压总控节点130。
[0074]在步骤S420,施压总控节点130根据接收的用户施压代码的信息和作业控制信息生成包括实现所述施压强度的执行次数的所述测试函数的信息的函数执行列表。例如,如果测试函数是1ginO和logout O,使用5个施压节点,并且施压强度被指定为每秒100次,预计执行每个函数需I秒钟,则可生成包括各100个login和logout的信息的函数执行列表。
[0075]根据本发明的示例性实施例,施压总控节点130还接收施压节点的注册请求,并且响应于施压节点的注册请求,施压总控节点130将所述用户施压代码的信息和测试函数的信息发送给所述施压节点。
[0076]根据本发明的示例性实施例,如果当前注册的施压节点的个数小于所述施压节点个数,则施压总控节点130还向资源分配系统请求两者之间差额个数的施压节点。
[0077]此后,在步骤S430,施压总控节点130通过与注册的施压节点交互执行施压执行处理。
[0078]具体地,注册的施压节点140向施压总控节点130发送执行请求,在步骤S430,施压总控节点130响应于接收到任一施压节点140的执行请求,将所述函数执行列表中第一个尚未执行的测试函数的信息发送给所述施压节点140,并且将所述第一尚未执行的测试函数标注为已执行。
[0079]此外,注册的施压节点140在完成执行测试函数后,向施压总控节点130发送其通过执行所述测试函数收集的施压反馈数据,在步骤S430,施压总控节点130还响应于接收到任一施压节点的施压反馈数据,基于接收的施压反馈数据进行统计,生成施压测试统计信息,并且将所述施压测试统计信息发送给指定的装置(例如测试控制装置110)。所述施压反馈数据可以是关于测试函数的执行时间、数据读取速率、延迟、内存使用量等的反馈数据。
[0080]根据本发明的示例性实施例,所述对各施压节点收集的施压反馈数据进行统计,生成施压测试统计信息的处理可包括:从所述施压节点接收包括施压参数名称和施压参数测量值的键值对(例如,延迟=0.5秒);根据接收的所述键值对对所述施压参数进行统计,生成所述施压测试统计信息。这里,所述施压测试统计信息包括所述施压参数名称以及以下统计值当中的至少一个:所述施压参数的最大值、所述施压参数的计数、所述施压参数的总和以及所述施压参数的最小值。
[0081]通过上述实施例的处理,根据本发明的示例性实施例的在分布式系统上执行压力测试的方法可通过多个施压节点自动地实现高并发的施压,不需要手工配置单个测试设备、不需要手工向每个配置的测试设备发送施压函数,可高效地实现并发施压,进行压力控制,且易于部署。此外,还可监控施压执行情况,收集施压数据并进行统计。
[0082]图5是示出根据本发明的第三示例性实施例的在分布式系统上执行压力测试的方法的流程图。
[0083]参照图5,在步骤S510,施压总控节点130接收用户施压代码的信息和作业控制信息,所述作业控制信息包括测试函数的信息、施压轮次数、施压强度以及施压节点个数的信息。例如,由测试控制装置110将所述用户施压代码的信息和作业控制信息发送给施压总控节点130。
[0084]在步骤S520,施压总控节点130根据接收的用户施压代码的信息和作业控制信息生成包括实现所述施压强度的执行次数的所述测试函数的信息的函数执行列表。
[0085]根据本发明的示例性实施例,施压总控节点130还接收施压节点的注册请求,并且响应于施压节点的注册请求,施压总控节点130将所述用户施压代码的信息和测试函数的信息发送给所述施压节点。
[0086]根据本发明的示例性实施例,如果当前注册的施压节点的个数小于所述施压节点个数,则施压总控节点130还向资源分配系统请求两者之间差额个数的施压节点。
[0087]此后,在步骤S530?S560,施压总控节点130控制施压节点执行所述施压执行处理所述施压轮次数。
[0088]具体地,在步骤S530,通过与注册的施压节点交互执行一轮所述施压执行处理。所述一轮施压执行处理与图4中步骤S430的处理基本相同,在此不再赘述。在步骤S540,在完成每轮施压执行处理后,将所述函数执行列表中的测试函数标注为未执行。此后,可继续执行下一轮施压执行处理,直至完成所述施压轮次数的施压执行处理为止。由此,可进行多轮施压测试。
[0089]在压力测试中,通常很难确定需要使用多少施压节点能够达到预期施压强度,因此在进行一轮施压后,需要调整施压节点的个数,以期接近预期的施压强度。根据本发明的优选实施例,在完成每轮施压执行处理后,在步骤S550,如果确定该轮施压执行处理不是最后一轮施压执行处理,则在步骤S560,还根据该轮对所述函数执行列表的执行情况以及所述作业控制信息中的施压强度更新所述施压节点个数,然后返回步骤S530,通过更新的施压节点个数的施压节点继续执行下一轮施压执行处理。例如,如果指定的施压强度是每秒调用函数300次,而通过5个施压节点,所述函数执行列表中的测试函数在3秒钟内仅被调用300次,则可确定需要15个施压节点才可能达到预期的施压强度,因此将所述施压节点个数更新为15个,此后可通过15个施压节点执行下一轮施压执行处理,以期接近预期的施压强度。
[0090]通过参照图5描述的实施例的处理,根据本发明的示例性实施例的在分布式系统上执行压力测试的方法可通过多个施压节点自动地实现高并发的施压,不需要手工配置单个测试设备、不需要手工向每个配置的测试设备发送施压函数,可高效地实现并发施压,进行压力控制,易于部署,并且还可以自适应地调整使用的施压节点的个数,调整施压强度。此外,还可监控施压执行情况,收集施压数据并进行统计。
[0091]图6是示出根据本发明的第四示例性实施例的在分布式系统上执行压力测试的方法的流程图。
[0092]参照图6,在步骤S610,施压节点140向施压总控节点130发送执行请求。
[0093]在步骤S620,施压节点140从所述施压总控节点130接收测试函数的信息。
[0094]在步骤S630,施压节点140执行所述测试函数。
[0095]在步骤S640,施压节点140将所述测试函数收集的测试结果数据发送给施压总控节130。所述测试结果数据可包括施压参数名称和施压参数测量值的键值对。此后,施压节点140返回步骤S610,继续向施压总控节点130发送执行请求。施压节点140可持续执行此循环,直到接收到终止测试的指示为止。
[0096]根据本发明的可选实施例,所述在分布式系统上执行压力测试的方法还包括:施压节点140向所述施压总控节点130发送注册请求,并且从所述施压总控节点130接收用户施压代码的信息和测试函数的信息,从而获得将要测试的函数的信息。
[0097]根据本发明的可选实施例,所述在分布式系统上执行压力测试的方法还包括:施压节点140根据接收的用户施压代码的信息和测试函数的信息加载所述测试函数,从而在执行施压时,可直接调用所述测试函数。
[0098]通过参照图6描述的实施例的处理,根据本发明的示例性实施例的在分布式系统上执行压力测试的方法在施压节点上可自动地从施压总控节点获取要调用的测试函数的信息,实现自动的并发施压,控制施压强度,易于部署。
[0099]图7是示出根据本发明的第五示例性实施例的测试控制装置110的逻辑框图。
[0100]参照图7,测试控制装置110包括测试作业接收单元710、资源请求单元720、施压作业发送单元730、测试统计信息接收单元740和测试统计信息记录单元750。
[0101]测试作业接收单元710用于接收压力测试作业,所述压力测试作业包括用户施压代码的信息和作业控制信息,所述作业控制信息包括测试函数的信息、施压强度以及施压节点个数的信息。
[0102]资源请求单元720用于向资源分配系统请求使用施压总控节点。
[0103]施压作业发送单元730用于向所述施压总控节点发送所述用户施压代码的信息和作业控制信息。
[0104]测试统计信息接收单元740用于从所述施压总控节点接收施压测试统计信息。
[0105]测试统计信息记录单元750用于记录所述施压测试统计信息。
[0106]优选地,所述作业控制信息还包括施压轮次数。
[0107]优选地,资源请求单元720还用于向资源分配系统请求使用所述施压节点个数的施压节点,并且根据所述资源信息向所述资源分配系统请求为所述施压节点分配其需要的资源。
[0108]图8示出根据本发明的第六示例性实施例的施压总控节点130的逻辑框图。
[0109]参照图8,施压总控节点130包括施压作业接收单元810、任务列表生成单元820、节点交互单元830、统计数据发送单元840和测试任务执行单元850。
[0110]施压作业接收单元810用于接收用户施压代码的信息和作业控制信息,所述作业控制信息包括测试函数的信息、施压强度以及施压节点个数的信息。
[0111]任务列表生成单元820用于根据施压作业接收单元810接收的用户施压代码的信息和作业控制信息生成包括实现所述施压强度的执行次数的所述测试函数的信息的函数执行列表。
[0112]节点交互单元830用于接收来自施压节点的执行请求,向施压节点发送测试函数的信息,并且接收来自施压节点的施压反馈数据。
[0113]统计数据发送单元840用于发送施压测试统计信息。
[0114]测试任务执行单元850用于通过与注册的施压节点交互执行施压执行处理。其中,响应于节点交互单元830接收到任一施压节点的执行请求,测试任务执行单元850通过节点交互单元830将所述函数执行列表中第一个尚未执行的测试函数的信息发送给所述施压节点,并且将所述第一尚未执行的测试函数标注为已执行;其中,响应于节点交互单元830接收到任一施压节点的施压反馈数据,测试任务执行单元850基于接收的施压反馈数据进行统计,生成施压测试统计信息,并且通过统计数据发送单元840将所述施压测试统计信息发送给指定的装置。
[0115]根据本发明的优选实施例,节点交互单元830还用于接收施压节点的注册请求,并且用于发送用户施压代码的信息和测试函数的信息;其中,测试任务执行单元850还用于响应于节点交互单元830施压节点的注册请求,通过节点交互单元830将所述用户施压代码的信息和测试函数的信息发送给所述施压节点。
[0116]根据本发明的优选实施例,如果当前注册的施压节点的个数小于所述施压节点个数,则测试任务执行单元850还用于向资源分配系统请求两者之间差额个数的施压节点。
[0117]根据本发明的优选实施例,所述作业控制信息还包括施压轮次数,并且测试任务执行单元850用于通过与注册的施压节点交互执行所述施压执行处理所述施压轮次数;其中,测试任务执行单元850还用于在完成每轮施压执行处理后,将所述函数执行列表中的测试函数标注为未执行。测试任务执行单元850还用于在完成每轮施压执行处理后,如果该轮施压执行处理不是最后一轮施压执行处理,则还根据该轮对所述函数执行列表的执行情况以及所述作业控制信息中的施压强度更新所述施压节点个数,并且通过更新的施压节点个数的施压节点继续执行下一轮施压执行处理。
[0118]根据本发明的优选实施例,测试任务执行单元850用于从所述施压节点接收包括施压参数名称和施压参数测量值的键值对,并且根据接收的所述键值对对所述施压参数进行统计,生成所述施压测试统计信息。所述施压测试统计信息可包括所述施压参数名称以及以下统计值当中的至少一个:所述施压参数的最大值、所述施压参数的计数、所述施压参数的总和以及所述施压参数的最小值。
[0119]图9示出根据本发明的第七示例性实施例的施压节点140的逻辑框图。
[0120]参照图9,施压节点140包括请求发送单元910、函数信息接收单元920、函数执行单元930和结果发送单元940。
[0121]请求发送单元910用于向施压总控节点发送执行请求。
[0122]函数信息接收单元920用于从所述施压总控节点接收测试函数的信息。
[0123]函数执行单元930用于执行所述测试函数。
[0124]结果发送单元940用于将所述测试函数收集的测试结果数据发送给施压总控节点,并且通过请求发送单元910向施压总控节点发送执行请求。
[0125]可选地,所述测试结果数据包括施压参数名称和施压参数测量值的键值对。
[0126]根据本发明的优选实施例,施压节点140还包括:注册请求发送单元(未示出),用于向所述施压总控节点发送注册请求;测试信息接收单元(未示出),用于从所述施压总控节点接收用户施压代码的信息和测试函数的信息。
[0127]根据本发明的优选实施例,施压节点140还包括:函数加载单元(未示出),用于根据测试信息接收单元接收的用户施压代码的信息和测试函数的信息加载所述测试函数。
[0128]根据本发明的示例性实施例的在分布式系统上执行压力测试的方法和装置可通过多个施压节点自动地实现高并发的施压,不需要手工配置单个测试设备、不需要手工向每个配置的测试设备发送施压函数,可高效地实现并发施压,进行压力控制,且易于部署。此外,还可监控施压执行情况,收集施压数据并进行统计。
[0129]在此基础上,根据本发明的示例性实施例的在分布式系统上执行压力测试的方法和装置还可以自适应地调整使用的施压节点的个数,调整施压强度。
[0130]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
【权利要求】
1.一种在分布式系统上执行压力测试的方法,其特征在于,所述压力测试方法包括: 接收用户施压代码的信息和作业控制信息,所述作业控制信息包括测试函数的信息、施压强度以及施压节点个数的信息; 根据接收的用户施压代码的信息和作业控制信息生成包括实现所述施压强度的执行次数的所述测试函数的信息的函数执行列表; 通过与注册的施压节点交互执行施压执行处理,其中,所述施压执行处理包括: 响应于接收到任一施压节点的执行请求,将所述函数执行列表中第一个尚未执行的测试函数的信息发送给所述施压节点,并且将所述第一尚未执行的测试函数标注为已执行;响应于接收到任一施压节点的施压反馈数据,基于接收的施压反馈数据进行统计,生成施压测试统计信息,并且将所述施压测试统计信息发送给指定的装置。
2.根据权利要求1所述的压力测试方法,其特征在于,所述压力测试方法还包括:响应于施压节点的注册请求,将所述用户施压代码的信息和测试函数的信息发送给所述施压节点。
3.根据权利要求2所述的压力测试方法,其特征在于,所述施压执行处理包括:如果当前注册的施压节点的个数小于所述施压节点个数,则向资源分配系统请求两者之间差额个数的施压节点。
4.根据权利要求3所述的压力测试方法,其特征在于,所述作业控制信息还包括施压轮次数,并且所述压力测试方法包括:通过与注册的施压节点交互执行所述施压执行处理所述施压轮次数, 其中,在完成每轮施压执行处理后,将所述函数执行列表中的测试函数标注为未执行。
5.根据权利要求4所述的压力测试方法,其特征在于,在完成每轮施压执行处理后,如果确定该轮施压执行处理不是最后一轮施压执行处理,则还根据该轮对所述函数执行列表的执行情况以及所述作业控制信息中的施压强度更新所述施压节点个数,并且通过更新的施压节点个数的施压节点继续执行下一轮施压执行处理。
6.一种在分布式系统上执行压力测试的方法,其特征在于,所述压力测试方法包括: 请求发送步骤:向施压总控节点发送执行请求; 函数接收步骤:从所述施压总控节点接收测试函数的信息; 函数执行步骤:执行所述测试函数; 结果发送步骤,将所述测试函数收集的测试结果数据发送给施压总控节点,并且返回请求发送步骤。
7.根据权利要求6所述的压力测试方法,其特征在于,所述压力测试方法还包括: 注册请求发送步骤:向所述施压总控节点发送注册请求; 测试信息接收步骤:从所述施压总控节点接收用户施压代码的信息和测试函数的信肩、O
8.根据权利要求7所述的压力测试方法,其特征在于,所述压力测试方法还包括: 函数加载步骤:根据接收的用户施压代码的信息和测试函数的信息加载所述测试函数。
9.一种在分布式系统上执行压力测试的方法,其特征在于,所述压力测试方法包括: 接收压力测试作业,所述压力测试作业包括用户施压代码的信息和作业控制信息,所述作业控制信息包括测试函数的信息、施压强度以及施压节点个数的信息; 向资源分配系统请求使用施压总控节点; 向所述施压总控节点发送所述用户施压代码的信息和作业控制信息; 从所述施压总控节点接收施压测试统计信息; 记录所述施压测试统计信息。
10.根据权利要求9所述的压力测试方法,其特征在于,所述压力测试方法还包括: 向资源分配系统请求使用所述施压节点个数的施压节点,并且根据所述资源信息向所述资源分配系统请求为所述施压节点分配其需要的资源。
11.一种在分布式系统上执行压力测试的装置,其特征在于,所述装置包括: 施压作业接收单元,用于接收用户施压代码的信息和作业控制信息,所述作业控制信息包括测试函数的信息、施压强度以及施压节点个数的信息; 任务列表生成单元,用于根据施压作业接收单元接收的用户施压代码的信息和作业控制信息生成包括实现所述施压强度的执行次数的所述测试函数的信息的函数执行列表;节点交互单元,用于接收来自施压节点的执行请求,向施压节点发送测试函数的信息,并且接收来自施压节点的施压反馈数据; 统计数据发送单元,用于发送施压测试统计信息; 测试任务执行单元,用于通过与注册的施压节点交互执行施压执行处理, 其中,响应于节点交互单元接收到任一施压节点的执行请求,测试任务执行单元通过节点交互单元将所述函数执行列表中第一个尚未执行的测试函数的信息发送给所述施压节点,并且将所述第一尚未执行的测试函数标注为已执行, 其中,响应于节点交互单元接收到任一施压节点的施压反馈数据,测试任务执行单元基于接收的施压反馈数据进行统计,生成施压测试统计信息,并且通过统计数据发送单元将所述施压测试统计信息发送给指定的装置。
12.根据权利要求11所述的装置,其特征在于,节点交互单元还用于接收施压节点的注册请求,并且用于发送用户施压代码的信息和测试函数的信息, 其中,测试任务执行单元还用于响应于节点交互单元施压节点的注册请求,通过节点交互单元将所述用户施压代码的信息和测试函数的信息发送给所述施压节点。
13.根据权利要求12所述的装置,其特征在于,如果当前注册的施压节点的个数小于所述施压节点个数,则测试任务执行单元还用于向资源分配系统请求两者之间差额个数的施压节点。
14.根据权利要求13所述的装置,其特征在于,所述作业控制信息还包括施压轮次数,并且测试任务执行单元用于通过与注册的施压节点交互执行所述施压执行处理所述施压轮次数, 其中,测试任务执行单元还用于在完成每轮施压执行处理后,将所述函数执行列表中的测试函数标注为未执行。
15.根据权利要求14所述的装置,其特征在于,测试任务执行单元还用于在完成每轮施压执行处理后,如果该轮施压执行处理不是最后一轮施压执行处理,则还根据该轮对所述函数执行列表的执行情况以及所述作业控制信息中的施压强度更新所述施压节点个数,并且通过更新的施压节点个数的施压节点继续执行下一轮施压执行处理。
16.一种在分布式系统上执行压力测试的装置,其特征在于,所述装置包括: 请求发送单元,用于向施压总控节点发送执行请求; 函数信息接收单元,用于从所述施压总控节点接收测试函数的信息; 函数执行单元,用于执行所述测试函数; 结果发送单元,用于将所述测试函数收集的测试结果数据发送给施压总控节点,并且通过请求发送单元向施压总控节点发送执行请求。
17.根据权利要求16所述的装置,其特征在于,所述装置还包括: 注册请求发送单元,用于向所述施压总控节点发送注册请求; 测试信息接收单元,用于从所述施压总控节点接收用户施压代码的信息和测试函数的信息。
18.根据权利要求17所述的装置,其特征在于,所述装置还包括: 函数加载单元,用于根据测试信息接收单元接收的用户施压代码的信息和测试函数的信息加载所述测试函数。
19.一种在分 布式系统上执行压力测试的装置,其特征在于,所述装置包括: 测试作业接收单元,用于接收压力测试作业,所述压力测试作业包括用户施压代码的信息和作业控制信息,所述作业控制信息包括测试函数的信息、施压强度以及施压节点个数的信息; 资源请求单元,用于向资源分配系统请求使用施压总控节点; 施压作业发送单元,用于向所述施压总控节点发送所述用户施压代码的信息和作业控制信息; 测试统计信息接收单元,用于从所述施压总控节点接收施压测试统计信息; 测试统计信息记录单元,用于记录所述施压测试统计信息。
20.根据权利要求19所述的装置,其特征在于,所述资源请求单元还用于向资源分配系统请求使用所述施压节点个数的施压节点,并且根据所述资源信息向所述资源分配系统请求为所述施压节点分配其需要的资源。
【文档编号】G06F11/36GK104077230SQ201410331129
【公开日】2014年10月1日 申请日期:2014年7月11日 优先权日:2014年7月11日
【发明者】杨斐, 刘旭 申请人:百度在线网络技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1