服务器压力测试系统和方法

文档序号:7988739阅读:308来源:国知局
服务器压力测试系统和方法
【专利摘要】本发明公开了一种服务器压力测试系统和方法。本发明实施例提供的一种服务器压力测试系统包括:至少一台测试脚本机、管理平台、数据库和需要测试的服务器。数据库存储系统中的数据;管理平台根据用户的输入数据生成控制指令,并将控制指令下发至各测试脚本机。测试脚本机中设置有针对需要测试的服务器建立的至少一测试脚本和该测试脚本相对应的控制脚本;测试脚本,生成测试请求,根据控制脚本的控制将测试请求发送至需要测试的所述服务器,并接收服务器对所述测试请求返回的测试应答,以及,根据测试应答得到至少部分测试结果数据,并将测试结果数据记录在数据库中;控制脚本,接收管理平台下发的控制指令,根据该控制指令对测试脚本进行控制。
【专利说明】服务器压力测试系统和方法
【技术领域】
[0001]本发明涉及通信【技术领域】,特别涉及一种服务器压力测试系统和方法。
【背景技术】
[0002]随着无线互联网的逐渐普及,移动终端应用的用户在短时间内成几何倍数的增长。面对庞大的用户规模,应用服务器端的承载与并发等能力,显得愈发重要。
[0003]为了服务的可靠性和稳定性,服务器压力测试成为软件上线前的必要环节。目前,普遍应用的压力测试软件是惠普HP公司的LoadRunner,该软件有着从脚本开发到测试报告的全过程功能。
[0004]然而,现有的压力测试软件至少具有如下缺陷:
[0005]现有压力测试软件通常仅适用于Windows的操作环境,且大都面向网页(Web)的测试,适用范围较窄,有较大的局限性;并且,现有压力测试软件不但部署操作十分复杂,而且要求用户必须对该压力测试软件非常精通,人力要求过高,测试成本也过高。

【发明内容】

[0006]本发明提供了一种服务器压力测试系统和方法,以解决现有压力测试软件的适用范围较窄、人力要求和测试成本过高的问题。
[0007]为达到上述目的,本发明实施例采用了如下技术方案:
[0008]本发明实施例提供了一种服务器压力测试系统,所述系统包括:至少一台测试脚本机、管理平台、数据库和需要测试的服务器,其中,所述数据库,用于存储系统中的数据;
[0009]所述管理平台,用于根据用户的输入数据生成控制指令,并将控制指令下发至各测试脚本机;
[0010]所述测试脚本机中设置有针对需要测试的服务器建立的至少一测试脚本和该测试脚本相对应的控制脚本;
[0011]所述测试脚本,用于生成测试请求,根据控制脚本的控制将测试请求发送至需要测试的所述服务器,并接收服务器对所述测试请求返回的测试应答,以及,根据所述测试应答得到至少部分测试结果数据,并将所述测试结果数据记录在所述数据库中;
[0012]所述控制脚本,用于接收管理平台下发的控制指令,根据该控制指令对相应的测试脚本进行控制。
[0013]本发明实施例还提供了一种服务器压力测试方法,所述方法包括:
[0014]针对需要测试的服务器建立至少一个测试脚本和该测试脚本相对应的控制脚本;
[0015]利用所述测试脚本生成测试请求;
[0016]利用所述控制脚本接收管理平台下发的控制指令;
[0017]根据所述控制指令,由控制脚本控制测试脚本将测试请求发送至需要测试的所述服务器,并接收服务器对所述测试请求返回的测试应答;[0018]利用所述测试脚本根据所述测试应答得到至少部分测试结果数据,并将所述测试结果数据记录在数据库中。
[0019]本发明实施例的有益效果是:
[0020]本发明实施例通过设置测试脚本和控制脚本,由控制脚本控制测试脚本向需要测试的服务器发送请求并接收应答的手段,提供了一种对服务器进行压力测试的新方案。由于测试脚本的运行并不依赖于具体的操作系统,且能够实现信今级的测试,从而显著提高了方案的可适用性。本方案在进行系统部署时,只需将测试脚本和控制脚本分别分发到相应的设备中,即可通过管理平台或远程控制端控制测试的进行,大大简化了部署操作,降低了对部署方专业技能的要求,降低了人力成本的测试成本。
【专利附图】

【附图说明】
[0021]图1为本发明一个实施例提供的一种服务器压力测试系统结构示意图;
[0022]图2为本发明又一个实施例提供的一种服务器压力测试方法流程图。
【具体实施方式】
[0023]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0024]本发明一个实施例提供了一种服务器压力测试系统100,参见图1,该系统100包括至少一台测试脚本机110、管理平台130、数据库140和需要测试的服务器120以及远程控制端150。下面分别对这些设备进行说明。
[0025]数据库140用于存储系统中的数据,如系统100将最终获取到的测试结果数据存储在数据库140中。
[0026]管理平台130用于根据用户的输入数据生成控制指令,并将控制指令下发至各测试脚本机110。管理平台130可以由网络(Web)服务器,米用B/S(Browser/Server,浏览器/服务器)的模式实现,以便于数据访问和操作。本实施例中的管理平台130可以基于Python & Django开发实现,利用Django的数据模型和权限控制系统,实现管理平台的整体框架。管理平台130中可以设置有套接字(socket)模块,如Python-socket模块,以与测试脚本机110建立连接,通过该连接将指令下发至各测试脚本机110。
[0027]进一步的,管理平台130还可以在交互界面中提供管理页面,利用管理页面接收用户(如测试人员)的输入数据,并根据相应的输入数据从数据库140提取相应的测试结果数据,将测试结果数据展示在管理页面中,如管理平台130可以利用Python图表工具(Python-chart-tool)模块将提取到的数据进行可视化的图表展示。
[0028]一方面,管理平台130可以向测试脚本机发送启动或停止测试请求发送的控制指令,测试脚本机中控制脚本接收到该控制指令后,控制测试脚本启动或停止测试请求的发送,从而实现了服务器120的测试。
[0029]另一方面,由于现有压力测试软件无法实现对具体功能的可变压力测试,造成了测试方式过于单一,测试结果不准确的问题,为了解决这一问题,本实施例还提供了一种在测试过程中动态改变测试参数的方案,包括:
[0030]管理平台130向测试脚本机下发参数配置更新指令,例如,当管理平台接收到用户通过管理页面输入的参数更新数据时,管理平台130还用于根据用户的输入数据生成参数配置更新指令,并将该参数配置更新指令通过与测试脚本机之间的TCP连接发送至测试脚本机的控制脚本,由控制脚本根据所述参数配置更新指令,控制测试脚本中的参数进行更新。则更新完成后,测试脚本会按照更新后的参数生成并发送测试请求,从而实现能够在不同设置下对需要测试的服务器的状态进行测试,更好地模拟了实际场景中服务器的运行情况,从而提高了测试方式的灵活性,能够得到更加准确的测试结果。
[0031]测试脚本机110中设置有针对需要测试的服务器建立的至少一测试脚本和该测试脚本相对应的控制脚本。测试脚本机110中可以支持Linux操作系统。
[0032]测试脚本,用于生成测试请求,根据控制脚本的控制将测试请求发送至需要测试的所述服务器,并接收服务器对所述测试请求返回的测试应答,以及,根据所述测试应答得到至少部分测试结果数据,并将所述测试结果数据记录在数据库中。例如,测试脚本可以根据测试应答统计测试请求发送的成功率,作为测试结果数据。根据实际需要的不同,测试结果数据中所包含的数据的内容和容量大小会不同。上述根据测试应答得到测试结果数据可以为需要获取的所有测试结果数据,也可以仅为需要获取的测试结果数据的一部分,例如,该测试结果数据还可以包括对服务器的运行状态信息进行解析得到测试结果数据。或者,最终得到的测试结果数据中除了根据测试应答得到测试结果数据、指示服务器运行状态信息的测试结果数据之外,还包括其他利用测试脚本或监控脚本得到的数据。
[0033]测试脚本可以采用Java语言开发,能够针对需要测试的服务器的每个接口执行具体测试,不同类型服务器的接口功能和数量会不同,则测试脚本需要能够与相应类型的服务器进行通信,并针对该服务器提供不同的测试能力,如不同服务器下测试脚本发送的测试请求会不同。
[0034]控制脚本,用于接收管理平台130下发的控制指令,根据该控制指令对相应的测试脚本进行控制。控制脚本可以采用Python语言开发实现,控制脚本中可以设置有socket模块,该socket模块与管理平台中的socket模块建立TCP连接,控制脚本利用TCP连接接收管理平台发出的指令,并转换为壳(Shell)命令,控制Linux下测试脚本机上的测试脚本及服务器端程序等。
[0035]一个场景中,当需要在测试过程中动态改变参数配置时,控制脚本还用于接收管理平台130下发至测试脚本机的参数配置更新指令,以及根据所述参数配置更新指令,控制测试脚本中的参数进行更新。
[0036]进一步的,本系统的服务器120中,还可以设置有针对该服务器建立的监控脚本。该所述监控脚本,用于抓取所述服务器以及服务器中各进程的运行状态信息;以及,对抓取到的运行状态信息进行解析得到至少部分测试结果数据,并将该测试结果数据记录在数据库中。由于对不同类型服务器的监控方式和运行状态信息的获取方式会不同,所建立的监控脚本在不同场景下可能会不同,但要求监控脚本能够获取服务器及其中进程的运行状态。例如,监控脚本可以利用Shell的top命令,每隔固定的时间,抓取服务器以及每个进程的运行状态,并利用Java语言的正则表达式将top命令抓取到的结果,解析成关系型数据,存入数据库140中,以备分析和展示的调用。
[0037]进一步的,本系统还提供了一种远程监控及测试方案,如该系统还包括与管理平台130相连接的远程控制端150。[0038]远程控制端150,用于接收用户的输入数据,并将该输入数据通过网络传输至管理平台,以使管理平台生成相应的指令。如远程控制端150接收到用户输入的参数更新数据时,将该参数更新数据通过互联网传输至管理平台130,管理平台130还用于根据该参数更新数据生成参数配置更新指令,并将该指令下发至测试脚本机110,从而实现了对测试的远程控制。
[0039]可以理解,对不需要执行远程控制的场景,该远程控制端可以略去。
[0040]本发明又一个实施例还提供了一种服务器压力测试方法,该方法包括:
[0041]针对需要测试的服务器建立至少一个测试脚本和该测试脚本相对应的控制脚本,利用所述测试脚本生成测试请求,利用所述控制脚本接收管理平台下发的控制指令,根据所述控制指令,由控制脚本控制测试脚本将测试请求发送至需要测试的所述服务器,并接收服务器对所述测试请求返回的测试应答,以及,利用所述测试脚本根据所述测试应答得到至少部分测试结果数据,并将所述测试结果数据记录在数据库中。上述操作可以由测试脚本机实现,测试脚本机的相关功能可以参见本发明的系统实施例。
[0042]下面结合图2,以设置在管理平台中的管理页面、设置在测试脚本机中的控制脚本和测试脚本,以及设置在需要测试的服务器中的监控脚本之间的信令和数据交互为例,对本实施例提供的测试方法进行具体说明:
[0043]S1:利用管理平台中的管理页面向测试脚本机中的控制脚本发送启动或停止测试的控制指令。
[0044]S2:测试脚本机利用控制脚本接收管理平台的控制指令,将该指令转换为Shell命令后,控制测试脚本开始或停止压力测试。所述控制脚本和管理平台中分别设置有套接字socket模块,通过控制脚本中的socket模块与管理平台中的socket模块建立TCP连接,以使控制脚本利用所述TCP连接接收管理平台下发的控制指令。
[0045]S3:测试脚本根据控制指令作出响应后,向控制脚本返回指示测试脚本正常启动或停止测试的/[目息。
[0046]S4:利用控制脚本将测试脚本启动或停止成功的信息发送至管理页面。
[0047]当需要对测试脚本中的参数动态更新时,本方法还包括步骤S5至S8:
[0048]S5:利用测试脚本机中的控制脚本接收管理平台下发的用于刷新配置的参数配置更新指令。
[0049]S6:根据所述参数配置更新指令,利用控制脚本对测试脚本中的参数进行更新。
[0050]S7:参数更新完毕后,测试脚本向控制脚本返回指示参数已刷新的信息。
[0051]S8:由控制脚本将指示参数已刷新的信息返回至管理页面。
[0052]本方案中将测试中得到的结果数据存储在数据库DB中,并能够从数据库中提取出相应数据进行分析和展示,包括如下步骤:
[0053]S9:测试脚本将根据测试应答得到的数据作为测试结果数据或测试结果数据的一部分,上报至数据库。
[0054]SlO:针对需要测试的服务器建立监控脚本,利用监控脚本抓取所述服务器以及服务器中各进程的运行状态信息,并利用监控脚本对抓取到的运行状态信息进行解析得到至少部分测试结果数据,并将该测试结果数据记录在数据库中。
[0055]Sll:利用管理页面向数据库发送数据提取指令。[0056]S12:数据库将数据提取指令对应的数据提取出来并返回至管理页面。
[0057]本方法实施例中各步骤的具体工作方式可以参见本发明的系统实施例中的相关部分。
[0058]由上所述,本发明实施例通过设置测试脚本和控制脚本,由控制脚本控制测试脚本向需要测试的服务器发送请求并接收应答的手段,提供了一种对服务器进行压力测试的新方案。由于测试脚本的运行并不依赖于具体的操作系统,且能够实现信令级的测试,从而显著提高了方案的可适用性。本方案在进行系统部署时,只需将测试脚本和控制脚本分别分发到相应的设备中,即可通过管理平台或远程控制端控制测试的进行,大大简化了部署操作,降低了对部署方专业技能的要求,降低了人力成本的测试成本。
[0059]以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
【权利要求】
1.一种服务器压力测试系统,其特征在于,所述系统包括:至少一台测试脚本机、管理平台、数据库和需要测试的服务器, 其中,所述数据库,用于存储系统中的数据; 所述管理平台,用于根据用户的输入数据生成控制指令,并将控制指令下发至各测试脚本机; 所述测试脚本机中设置有针对需要测试的服务器建立的至少一测试脚本和该测试脚本相对应的控制脚本; 所述测试脚本,用于生成测试请求,根据控制脚本的控制将测试请求发送至需要测试的所述服务器,并接收服务器对所述测试请求返回的测试应答,以及,根据所述测试应答得到至少部分测试结果数据,并将所述测试结果数据记录在所述数据库中; 所述控制脚本,用于接收管理平台下发的控制指令,根据该控制指令对相应的测试脚本进行控制。
2.根据权利要求1所述的系统,其特征在于, 所述管理平台,还用于根据用户的输入数据生成参数配置更新指令,并将参数配置更新指令发送至测试脚本机; 所述控制脚本,还用于接收管理平台下发至测试脚本机的参数配置更新指令;以及,根据所述参数配置更新指令,控制测试脚本中的参数进行更新。
3.根据权利要求1所述的系统,其特征在于,所述需要测试的服务器中设置有针对该服务器建立的监控脚本, 所述监控脚本,用于抓取所述服务器以及服务器中各进程的运行状态信息;以及,对抓取到的运行状态信息进行解析得到至少部分测试结果数据,并将该测试结果数据记录在数据库中。
4.根据权利要求1所述的系统,其特征在于,所述控制脚本和管理平台中分别设置有套接字socket模块,所述控制脚本中的socket模块与所述管理平台中的socket模块建立有传输控制协议TCP连接, 所述控制脚本利用所述TCP连接接收管理平台下发的控制指令。
5.根据权利要求1所述的系统,其特征在于, 所述管理平台,还用于在交互界面中提供管理页面;利用所述管理页面接收用户的输入数据,并根据相应的输入数据从数据库提取相应的测试结果数据,将测试结果数据展示在管理页面中。
6.根据权利要求1至5任一项所述的系统,其特征在于,所述系统还包括与管理平台相连接的远程控制端, 所述远程控制端,用于接收用户的输入数据,并将该输入数据通过网络传输至管理平台,以使管理平台生成相应的指令。
7.一种服务器压力测试方法,其特征在于,所述方法包括: 针对需要测试的服务器建立至少一个测试脚本和该测试脚本相对应的控制脚本; 利用所述测试脚本生成测试请求; 利用所述控制脚本接收管理平台下发的控制指令; 根据所述控制指令,由控制脚本控制测试脚本将测试请求发送至需要测试的所述服务器,并接收服务器对所述测试请求返回的测试应答; 利用所述测试脚本根据所述测试应答得到至少部分测试结果数据,并将所述测试结果数据记录在数据库中。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括: 利用控制脚本接收管理平台下发的参数配置更新指令; 根据所述参数配置更新指令,利用控制脚本对测试脚本中的参数进行更新。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括: 针对需要测试的服务器建立监控脚本; 利用所述监控脚本抓取所述服务器以及服务器中各进程的运行状态信息;以及, 利用所述监控脚本对抓取到的运行状态信息进行解析得到至少部分测试结果数据,并将该测试结果数据记录在数据库中。
10.根据权利要求7所述的方法,其特征在于,所述控制脚本和管理平台中分别设置有套接字socket模块,则所述利用所述控制脚本接收管理平台下发的控制指令包括: 通过所述控制脚本中的套接字socket模块与所述管理平台中的socket模块建立传输控制协议TCP连接,以使所 述控制脚本利用所述TCP连接接收管理平台下发的控制指令。
【文档编号】H04L12/26GK103916283SQ201210593441
【公开日】2014年7月9日 申请日期:2012年12月31日 优先权日:2012年12月31日
【发明者】郭祎, 于剑池 申请人:北京新媒传信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1