软件性能测试方法、系统和可读存储介质与流程

文档序号:23903331发布日期:2021-02-09 14:15阅读:49来源:国知局
软件性能测试方法、系统和可读存储介质与流程

[0001]
本发明涉及软件测试技术领域,尤其涉及软件性能测试方法、系统和可读存储介质。


背景技术:

[0002]
apache jmeter是apache组织开发的基于java的压力测试工具。用于对软件做压力测试。它可以用于测试静态和动态资源,例如静态文件、java小服务程序、cgi(common gateway interface)脚本、java对象、数据库、ftp(file transfer protocol,文件传输协议)服务器,等等。jmeter可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度或分析整体性能。另外,jmeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证程序返回了期望的结果。为了最大限度的灵活性,jmeter允许使用正则表达式创建断言。
[0003]
目前通过jmeter来进行分布式性能测试,主要使用到了jmeter的master(主)-slave(从)机制。图1为现有的通过jmeter进行分布式性能测试的系统架构示意图,如图1所示,在该方案中需要启动一个masterjmeter服务及若干个slave jmeter,通过master节点下发测试任务及控制命令,slave节点执行实际的测试脚本,并将结果返回到master节点进行统一处理。该方案有如下不足:
[0004]
一、单点压力大
[0005]
由于所有slave节点的执行结果都会发回到master节点进行处理,且master节点无法进行横向扩展,导致在并发量较大的情况下master节点的配置会成为整个测试模型的瓶颈,影响测试效果。
[0006]
二、节点复用性差
[0007]
由于jmeter自身机制的限制,在同一台slave节点上同时只能接受一台master节点的测试任务,当单个测试任务负载并不高时,slave节点上没法同时执行多个测试任务,导致该节点无法被多个测试复用,资源利用率较低。
[0008]
三、环境管理复杂
[0009]
master及slave节点需要手动依次进行配置及单独管理,例如:需要在master节点上配置所有slave节点的信息,各slave节点上配置master节点的信息,配置工作比较繁琐,效率较低。
[0010]
四、网络要求高
[0011]
jmeter的master-slave机制使用了rmi(remote method invoke,远程方法调用)协议来进行节点间的相互通信,该机制要求master及slave节点必须要处于同一个二层网络中,对网络环境的要求较高,无法实现跨网络的分布式测试。


技术实现要素:

[0012]
本发明实施例提出软件性能方法、系统和可读存储介质,以提高软件性能测试效
率。
[0013]
本发明实施例的技术方案是这样实现的:
[0014]
一种软件性能测试方法,该方法包括:
[0015]
第一设备接收一个或多个jmx格式的软件性能测试脚本,在每个脚本中增加kafka后端监听器模块;针对每个脚本,分别根据为kubernetes集群预先创建的性能测试资源类型中定义的该类型资源所需的参数:jmx格式的脚本,通过kubernetes api创建一个性能测试资源,该资源包括:所述软件性能测试脚本以及测试参数,其中,测试参数包括结果接收端参数,且结果接收端参数的取值为:接收结果数据的kafka集群的地址以及消息主题;
[0016]
kubernetes集群中的操作节点设备监听到一个或多个所述性能测试资源,则针对每个所述性能测试资源,分别调用kubernetes api创建对应的任务,任务内容包括:执行该任务的jmeter容器的配置信息和对应的性能测试资源,将创建的一个或多个任务下发给kubernetes集群的主节点设备,针对每个任务,主节点设备将该任务分配给kubernetes集群中的一节点设备,节点设备接收任务,根据任务中的所述jmeter容器的配置信息和性能测试资源,启动jmeter容器执行任务,并根据软件性能测试脚本中的kafka后端监听器模块将任务执行过程中产生的结果数据实时发送给kafka集群的消息主题队列中。
[0017]
所述将任务执行过程中产生的结果数据实时发送给kafka集群的消息主题队列中之后,进一步包括:
[0018]
第二设备根据预先订阅的所述消息主题,从kafka集群的该消息主题的队列中消费结果数据,将结果数据存入预设数据库中;第一设备从数据库读取结果数据,并将结果数据显示在web页面上。
[0019]
所述第一设备接收一个或多个jmx格式的软件性能测试脚本包括:
[0020]
第一设备接收一个或多个用户输入的一个或多个jmx格式的软件性能测试脚本。
[0021]
所述第一设备为后端设备,所述第一设备接收一个或多个jmx格式的软件性能测试脚本之前进一步包括:
[0022]
前端设备接收用户输入的一个或多个jmx格式的软件性能测试脚本,将该一个或多个脚本发送给第一设备。
[0023]
所述第一设备与前端设备之间通过http进行通信。
[0024]
所述第一设备与kubernetes集群的操作节点设备之间通过http进行通信。
[0025]
一种软件性能测试系统,包括:一个或多个第一设备和kubernetes集群,其中:
[0026]
第一设备,接收一个或多个jmx格式的软件性能测试脚本,在每个脚本中增加kafka后端监听器模块;针对每个脚本,分别根据为集群预先创建的性能测试资源类型中定义的该类型资源所需的参数:jmx格式的脚本,通过kubernetes api创建一个性能测试资源,该资源包括:所述软件性能测试脚本以及测试参数,其中,测试参数包括结果接收端参数,且结果接收端参数的取值为:接收结果数据的kafka集群的地址以及消息主题;
[0027]
kubernetes集群,集群中的操作节点设备监听到一个或多个所述性能测试资源,则针对每个所述性能测试资源,分别调用kubernetes api创建对应的任务,任务内容包括:执行该任务的jmeter容器的配置信息和对应的性能测试资源,将创建的一个或多个任务下发给集群的主节点设备,针对每个任务,主节点设备将该任务分配给集群中的一节点设备,节点设备接收任务,根据任务中的所述jmeter容器的配置信息和性能测试资源,启动
jmeter容器执行任务,并根据软件性能测试脚本中的kafka后端监听器模块将任务执行过程中产生的结果数据实时发送给kafka集群的消息主题队列中。
[0028]
所述系统进一步包括:一个或多个第二设备,
[0029]
第二设备用于,根据预先订阅的所述消息主题,从kafka集群的该消息主题的队列中消费结果数据,将结果数据存入预设数据库中;
[0030]
且,所述第一设备从所述数据库读取结果数据,并将结果数据显示在web页面上。
[0031]
一种非瞬时计算机可读存储介质,所述非瞬时计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行如下步骤:
[0032]
接收一个或多个jmx格式的软件性能测试脚本,在每个脚本中增加kafka后端监听器模块;针对每个脚本,分别根据为kubernetes集群预先创建的性能测试资源类型中定义的该类型资源所需的参数:jmx格式的脚本,通过kubernetes api创建一个性能测试资源,该资源包括:所述软件性能测试脚本以及测试参数,其中,测试参数包括结果接收端参数,且结果接收端参数的取值为:接收结果数据的kafka集群的地址以及消息主题。
[0033]
本发明实施例中,第一设备接收到多个软件性能测试脚本后,可以针对每个软件性能测试脚本分别创建一个性能测试资源,kubernetes集群中的操作节点设备针对每个性能测试资源分别创建一个任务,集群中的主节点设备将各个任务分配给集群中的节点设备,节点设备启动jmeter容器执行任务,即,kubernetes集群能够同时执行多个软件性能测试脚本,提高了软件性能测试效率;同时,软件测试脚本执行过程中的结果数据并不需要发送给第一设备,而是存储到kafka队列中,将控制平面和数据平面分离,从而降低了第一设备的处理负担,进一步提高了软件性能测试的效率。
附图说明
[0034]
图1为现有的通过jmeter进行分布式性能测试的系统架构示意图;
[0035]
图2为本发明一实施例提供的软件性能测试方法流程图;
[0036]
图3为本发明另一实施例提供的软件性能测试方法流程图;
[0037]
图4为本发明实施例提供的软件性能测试系统的结构示意图;
[0038]
图5为本发明实施例提供的电子设备的结构示意图。
具体实施方式
[0039]
下面结合附图及具体实施例对本发明再作进一步详细的说明。
[0040]
图2为本发明一实施例提供的软件性能测试方法流程图,其具体步骤如下:
[0041]
步骤201:第一设备接收一个或多个jmx格式的软件性能测试脚本,在每个脚本中增加kafka后端监听器模块;针对每个脚本,分别根据为kubernetes集群预先创建的性能测试资源类型中定义的该类型资源所需的参数:jmx格式的脚本,通过kubernetes api创建一个性能测试资源,该资源包括:软件性能测试脚本以及测试参数,其中,测试参数包括结果接收端参数,且结果接收端参数的取值为:接收结果数据的kafka集群的地址以及消息主题。
[0042]
步骤202:kubernetes集群中的操作节点设备监听到一个或多个性能测试资源,则针对每个性能测试资源,分别调用kubernetes api创建对应的任务,任务内容包括:执行该
任务的jmeter容器的配置信息和对应的性能测试资源,将创建的一个或多个任务下发给kubernetes集群的主节点设备。
[0043]
步骤203:针对每个任务,主节点设备将该任务分配给kubernetes集群中的一节点设备。
[0044]
步骤204:节点设备接收任务,根据任务中的jmeter容器的配置信息和性能测试资源,启动jmeter容器执行任务,并根据软件性能测试脚本中的kafka后端监听器模块将任务执行过程中产生的结果数据实时发送给kafka集群的消息主题队列中。
[0045]
上述实施例中,第一设备接收到多个软件性能测试脚本后,可以针对每个软件性能测试脚本分别创建一个性能测试资源,kubernetes集群中的操作节点设备针对每个性能测试资源分别创建一个任务,集群中的主节点设备将各个任务分配给集群中的节点设备,节点设备启动jmeter容器执行任务,即,kubernetes集群能够同时执行多个软件性能测试脚本,提高了软件性能测试效率;同时,软件测试脚本执行过程中的结果数据并不需要发送给第一设备,而是存储到kafka队列中,将控制平面和数据平面分离,从而降低了第一设备的处理负担,进一步提高了软件性能测试的效率。
[0046]
一可选实施例中,步骤204中,将任务执行过程中产生的结果数据实时发送给kafka集群的消息主题队列中之后,进一步包括:
[0047]
第一设备根据预先订阅的消息主题,从kafka集群的该消息主题的队列中消费结果数据,将结果数据存入预设数据库中;第一设备从数据库读取结果数据,并将结果数据显示在web页面上。
[0048]
上述实施例中,通过将结果数据从kafka队列读取到预设数据库,实现了对结果数据的持久化保存,且第一设备可从数据库中读取结果数据并显示在web页面上,实现了结果数据对用户的展示。
[0049]
一可选实施例中,步骤201中,第一设备接收一个或多个jmx格式的软件性能测试脚本包括:第一设备接收一个或多个用户输入的一个或多个jmx格式的软件性能测试脚本。
[0050]
一可选实施例中,第一设备为后端设备,第一设备接收jmx格式的软件性能测试脚本之前进一步包括:
[0051]
前端设备接收用户输入的一个或多个jmx格式的软件性能测试脚本,将该一个或多个脚本发送给第一设备。
[0052]
一可选实施例中,第一设备与前端设备之间通过http进行通信。
[0053]
一可选实施例中,第一设备与kubernetes集群的操作节点设备之间通过http进行通信。
[0054]
由于第一设备与kubernetes集群的操作节点设备之间通过http进行通信,因此第一设备和kubernetes集群无需必须处于同一二层网络中,可以实现跨网络的分布式测试。
[0055]
图3为本发明另一实施例提供的软件性能测试方法流程图,其具体步骤如下:
[0056]
步骤301:预先设置一个或多个第一设备作为控制设备,在kubernetes集群的一个节点设备上配置性能测试operator(操作符),将该设备作为操作节点设备,设置一个或多个配置有data-streaming组件的第二设备作为结果处理设备;预先为kubernetes集群创建自定义资源类型:性能测试资源类型,且该类型中定义该类型资源所需的参数为:jmx格式的脚本。
[0057]
步骤302:任一第一设备接收一用户输入的一个或多个jmx格式的软件性能测试脚本。
[0058]
步骤303:第一设备将预先定义的kafkabackendlistener(kafka后端监听器)模块添加到接收到的各脚本的预设位置处。
[0059]
kafkabackendlistener模块的作用是,将脚本执行过程中产生的结果数据实时写入kafka集群的预设消息主题中。
[0060]
步骤304:针对每个测试脚本,第一设备分别根据为kubernetes集群预先创建的性能测试资源类型,通过kubernetes api创建一个自定义资源:性能测试资源,该资源包括:软件性能测试脚本以及测试参数,其中,测试参数包括结果接收端参数,且结果接收端参数的取值为:接收结果数据的kafka集群的地址以及预设的消息主题。
[0061]
测试参数还可包括:并发数、测试时长、向测试目标请求的内容等。
[0062]
步骤305:kubernetes集群中的操作节点设备监听到第一设备创建的一个或多个性能测试资源,则针对每个性能测试资源,分别调用kubernetes api创建对应的软件性能测试任务,任务内容包括:执行该任务的jmeter容器的配置信息和对应的性能测试资源,将创建的一个或多个任务下发给kubernetes集群的主节点设备。
[0063]
在实际应用中,在存在前端处理步骤时,通常会专门设置前端设备来处理前端步骤,即第一设备可以拆分成两个设备:前端设备和后端设备,前端设备执行步骤302,然后将接收到的各个软件性能测试脚本发送给后端设备,后端设备执行步骤303和304。
[0064]
前端设备和后端设备之间通过http进行通信。
[0065]
步骤306:主节点设备接收一个或多个软件性能测试任务,针对每个任务,主节点设备将该任务分配给kubernetes集群中的一节点设备。
[0066]
具体地,主节点设备可根据各个节点设备的负载,将一个或多个软件性能测试任务分配给一个或多个节点设备,其中,每个节点设备可分配到一个或多个任务。
[0067]
步骤307:kubernetes集群中的任一节点设备接收到一个或多个软件性能测试任务,针对每个任务,分别根据任务中的jmeter容器的配置信息和性能测试资源,启动一个jmeter容器执行任务,并根据性能测试资源中的软件性能测试脚本中的kafka后端监听器模块,将任务执行过程中产生的结果数据实时发送给kafka集群的消息主题队列中,其中,结果数据中包含对应的软件性能测试任务id。
[0068]
jmeter容器执行完软件性能测试脚本后自动销毁。
[0069]
步骤308:第二设备的data-streaming组件根据预先订阅的消费消息主题,从kafka集群的对应消息主题的队列中消费结果数据,将消费的结果数据存入预设数据库中。
[0070]
步骤309:第一设备从数据库中读取结果数据,将结果数据展示在web页面上。
[0071]
若第一设备拆分成前端设备和后端设备,则后端设备从数据库中读取结果数据,将结果数据发送给前端设备,前端设备将结果数据展示在web页面上。
[0072]
其中,第一设备和kubernetes集群的操作节点设备之间通过http进行通信。
[0073]
图4为本发明实施例提供的软件性能测试系统的架构图,如图4所示,该系统中包括:一个或多个第一设备、kubernetes集群、kafka集群设备和至少一个第二设备,其中:
[0074]
第一设备,接收一个或多个jmx格式的软件性能测试脚本,在每个脚本中增加kafka后端监听器模块;针对每个脚本,分别根据为集群预先创建的性能测试资源类型中定
义的该类型资源所需的参数:jmx格式的脚本,通过kubernetes api创建一个性能测试资源,该资源包括:软件性能测试脚本以及测试参数,其中,测试参数包括结果接收端参数,且结果接收端参数的取值为:接收结果数据的kafka集群的地址以及消息主题;从预设数据库读取结果数据,并将结果数据显示在web页面上。
[0075]
kubernetes集群,集群中的操作节点设备监听到一个或多个性能测试资源,则针对每个性能测试资源,分别调用kubernetes api创建对应的任务,任务内容包括:执行该任务的jmeter容器的配置信息和对应的性能测试资源,将创建的一个或多个任务下发给集群的主节点设备,针对每个任务,主节点设备将该任务分配给集群中的一节点设备,节点设备接收任务,根据任务中的jmeter容器的配置信息和性能测试资源,启动jmeter容器执行任务,并根据软件性能测试脚本中的kafka后端监听器模块将任务执行过程中产生的结果数据实时发送给kafka集群的消息主题队列中。
[0076]
kafka集群设备,维护kafka集群。
[0077]
第三设备,根据预先订阅的消息主题,从kafka集群的该消息主题的队列中消费结果数据,将结果数据存入预设数据库中。
[0078]
本发明实施例还提供一种非瞬时计算机可读存储介质,该非瞬时计算机可读存储介质存储指令,该指令在由处理器执行时使得处理器执行如下步骤:
[0079]
接收一个或多个jmx格式的软件性能测试脚本,在每个脚本中增加kafka后端监听器模块;针对每个脚本,分别根据为kubernetes集群预先创建的性能测试资源类型中定义的该类型资源所需的参数:jmx格式的脚本,通过kubernetes api创建一个性能测试资源,该资源包括:软件性能测试脚本以及测试参数,其中,测试参数包括结果接收端参数,且结果接收端参数的取值为:接收结果数据的kafka集群的地址以及消息主题。
[0080]
图5为本发明实施例提供的电子设备的结构示意图,该电子设备包括如上的非瞬时计算机可读存储介质51、以及可访问非瞬时计算机可读存储介质51的处理器52。
[0081]
本发明实施例的有益技术效果如下:
[0082]
一)软件测试脚本执行过程中的结果数据并不需要发送给第一设备,而是存储到kafka队列中,将控制平面和数据平面分离,从而降低了第一设备的处理负担,提高了软件性能测试的效率;
[0083]
二)kubernetes集群中的多个节点设备可同时执行软件性能测试任务,且每个节点设备可同时启动多个jmeter容器同时执行多个任务,测试效率高,且测试资源利用率、复用率高;
[0084]
三)第一设备、kubernetes集群中的节点设备、第二设备都可横向水平扩展,从而可支持更大的并发数量;
[0085]
四)无需复杂配置;
[0086]
五)第一设和kubernetes集群之间采用http进行通信,无需处于同一二层网络中,可实现跨网络的分布式测试。
[0087]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1