一种基于Jmeter的gRPC性能测试方法及装置与流程

文档序号:17475417发布日期:2019-04-20 06:05阅读:3837来源:国知局
一种基于Jmeter的gRPC性能测试方法及装置与流程

本发明实施例涉及计算机技术领域,具体涉及一种基于jmeter的grpc性能测试方法及装置。



背景技术:

目前分布式的应用场景中,存在着大量的服务之间的调用,微服务的发现以及跨服务的远程调用,更多的使用了rpc(remoteprocedurecall,远程过程调用)技术。以google为代表的grpc(googleremoteprocedurecall,谷歌远程过程调用),在行业内使用非常广泛,更多的后台服务都应用了grpc的技术。所以对于grpc请求的单独的性能测试做benchmark(基准)的场景也会很多,但是现在的性能测试,无论开发还是测试,更多是直接编码通过脚本的方式获得对应的性能数据,无法通过界面化的工具,如loadrunner和jmeter那样直接构造批量请求,并自动分析结果,出来各种比较可观的统计图。

现有技术直接通过编码的方式去模拟发送请求,得到的结果自己去分析统计,但是通过脚本构造grpc请求并自己实现对应的并发,以及结果的统计比较耗时,而且无法短时间内保证脚本的并发的稳定性;同时对于分布式压测支持也需要重新开发,无法界面化直观的得到对应的性能测试数据。



技术实现要素:

由于现有方法存在上述问题,本发明实施例提出一种基于jmeter的grpc性能测试方法及装置。

第一方面,本发明实施例提出一种基于jmeter的grpc性能测试方法,包括:

定义发送谷歌远程过程调用grpc请求的通道,根据所述通道构造grpc请求,并将所述grpc请求发送给grpc服务器;

创建所述grpc请求对应的grpc业务的数据对象,并根据所述grpc请求对所述数据对象进行赋值;

接收所述grpc服务器根据所述grpc请求进行性能测试后返回的性能测试结果,根据赋值后的数据对象对所述性能测试结果进行处理,并基于jmeter对处理后的性能测试结果进行展示。

可选地,所述定义发送谷歌远程过程调用grpc请求的通道,根据所述通道构造grpc请求,并将所述grpc请求发送给grpc服务器之后,还包括:

根据预设格式对所述grpc请求的数据串进行切分,得到符合所述预设格式的目标数据;

相应地,所述创建所述grpc请求对应的grpc业务的数据对象,并根据所述grpc请求对所述数据对象进行赋值,具体包括:

创建所述grpc请求对应的grpc业务的数据对象,并根据所述目标数据对所述数据对象进行赋值。

可选地,所述方法还包括:

根据预设关键字对所述性能测试结果进行校验,确定所述性能测试结果是否符合预期。

可选地,所述方法还包括:

若所述性能测试结果不符合预期,则获取所述性能测试结果中的异常信息,并将所述异常信息进行显示。

第二方面,本发明实施例还提出一种基于jmeter的grpc性能测试装置,包括:

请求发送模块,用于定义发送谷歌远程过程调用grpc请求的通道,根据所述通道构造grpc请求,并将所述grpc请求发送给grpc服务器;

对象赋值模块,用于创建所述grpc请求对应的grpc业务的数据对象,并根据所述grpc请求对所述数据对象进行赋值;

结果处理模块,用于接收所述grpc服务器根据所述grpc请求进行性能测试后返回的性能测试结果,根据赋值后的数据对象对所述性能测试结果进行处理,并基于jmeter对处理后的性能测试结果进行展示。

可选地,所述装置还包括:

数据串切分模块,用于根据预设格式对所述grpc请求的数据串进行切分,得到符合所述预设格式的目标数据;

相应地,所述对象赋值模块具体用于:

创建所述grpc请求对应的grpc业务的数据对象,并根据所述目标数据对所述数据对象进行赋值。

可选地,所述装置还包括:

结果校验模块,用于根据预设关键字对所述性能测试结果进行校验,确定所述性能测试结果是否符合预期。

可选地,所述装置还包括:

异常显示模块,用于若所述性能测试结果不符合预期,则获取所述性能测试结果中的异常信息,并将所述异常信息进行显示。

第三方面,本发明实施例还提出一种电子设备,包括:

至少一个处理器;以及

与所述处理器通信连接的至少一个存储器,其中:

所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行上述方法。

第四方面,本发明实施例还提出一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机程序,所述计算机程序使所述计算机执行上述方法。

由上述技术方案可知,本发明实施例通过将grpc请求发送给grpc服务器,接收grpc服务器性能测试后返回的性能测试结果,并基于jmeter对处理后的性能测试结果进行展示,极大减少了性能测试的脚本开发时间,同时保障了并发的稳定性,以及友好的将结果通过jmeter自带的统计展现出来。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。

图1为本发明一实施例提供的一种基于jmeter的grpc性能测试方法的流程示意图;

图2为本发明一实施例提供的一种基于jmeter的grpc性能测试装置的结构示意图;

图3为本发明一实施例提供的电子设备的逻辑框图。

具体实施方式

下面结合附图,对本发明的具体实施方式作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

图1示出了本实施例提供的一种基于jmeter的grpc性能测试方法的流程示意图,包括:

s101、定义发送谷歌远程过程调用grpc请求的通道,根据所述通道构造grpc请求,并将所述grpc请求发送给grpc服务器。

其中,所述通道为用于构建grpc请求而定义的对象。

具体地,通过数据初始化方法setuptest()调用getdefaultparameters()方法设置需要访问的被测业务地址grpc_host、对应的端口grpc_port,以及请求的参数grpc_req,并定义传输数据的通道channel,同时创建对象blockingstub用于在通道上进行请求的构造,构造grpc请求后将该grpc请求发送给grpc服务器。

s102、创建所述grpc请求对应的grpc业务的数据对象,并根据所述grpc请求对所述数据对象进行赋值。

s103、接收所述grpc服务器根据所述grpc请求进行性能测试后返回的性能测试结果,根据赋值后的数据对象对所述性能测试结果进行处理,并基于jmeter对处理后的性能测试结果进行展示。

其中,grpc服务器接收grpc请求后执行性能测试,得到性能测试结果,并将性能测试结果返回至测试服务器或测试终端。

具体地,构造jmeter所定义的javarequest类型时,需要创建类并继承自org.apache.jmeter.protocol.java.sampler.abstractjavasamplerclient,这是一个执行类,用于创建一个grpc业务的数据对象,并在入口函数main方法中调用业务类的方法,从而完成从数据初始化到执行请求,再到结果处理的整个过程。

通过加装开发的jar包,用jmeter界面化设置grpc请求的参数,来进行可视化的界面压力测试,就像传统的http和https协议一样进行压力测试。

本实施例通过将grpc请求发送给grpc服务器,接收grpc服务器性能测试后返回的性能测试结果,并基于jmeter对处理后的性能测试结果进行展示,极大减少了性能测试的脚本开发时间,同时保障了并发的稳定性,以及友好的将结果通过jmeter自带的统计展现出来。

进一步地,在上述方法实施例的基础上,s101之后,还包括:

s1012、根据预设格式对所述grpc请求的数据串进行切分,得到符合所述预设格式的目标数据。

相应地,s102具体包括:

创建所述grpc请求对应的grpc业务的数据对象,并根据所述目标数据对所述数据对象进行赋值。

具体来说,对grpc请求的数据串进行切分得到需要请求的数据格式:json格式,创建所要验证的grpc业务的数据对象,并将json格式数据的参数赋值给grpc业务的数据对象,方便后续的处理。

进一步地,在上述方法实施例的基础上,所述方法还包括:

s104、根据预设关键字对所述性能测试结果进行校验,确定所述性能测试结果是否符合预期。

s105、若所述性能测试结果不符合预期,则获取所述性能测试结果中的异常信息,并将所述异常信息进行显示。

具体地,接收到述性能测试结果后,解析对应的结果数据,先通过code属性判断grpc请求的成功与失败,主要是对关键字段进行校验,得到成功的情况和失败的情况两种场景。

在sampleresultsuccess()方法中定义了对于httpstatuscode为成功的时候的处理。包含如下处理:调用sampleresult对象的smapleend方法,标识请求结束;再调用setsuccessful(true),标识请求成功。

判断性能测试结果不为空的时候,设置性能测试结果在jmeter界面的显示编码格式utf-8,并设置responsemessage中的数值,设置对应的datatype类型为text。

在sampleresultfailed()方法中定义了请求返回code为失败的情况下的处理,主要实现如下:标识sampleresult失败,并调用sampleresultfailed(result,reason)方法设置对应的result(结果)以及reason(原因),设置result的结果,并将异常信息通过getstacktrace(exception)方法显示出来。

通过本实施例提供的方法可以极大的简化了对于grpc服务接口进行性能测试的成本。原本需要开发自己去编码通过脚本来构造请求,并自己去实现并发的工作,变成了通过开发jmeter的grpc插件,来可视化显示性能测试结果,极大减少性能测试的脚本开发时间,同时保障了并发的稳定性,以及友好的将结果通过jmeter自带的统计展现出来,极大的提高了benchmark测试的效率。

图2示出了本实施例提供的一种基于jmeter的grpc性能测试装置的结构示意图,所述装置包括:请求发送模块201、对象赋值模块202和结果处理模块203,其中:

所述请求发送模块201用于定义发送谷歌远程过程调用grpc请求的通道,根据所述通道构造grpc请求,并将所述grpc请求发送给grpc服务器;

所述对象赋值模块202用于创建所述grpc请求对应的grpc业务的数据对象,并根据所述grpc请求对所述数据对象进行赋值;

所述结果处理模块203用于接收所述grpc服务器根据所述grpc请求进行性能测试后返回的性能测试结果,根据赋值后的数据对象对所述性能测试结果进行处理,并基于jmeter对处理后的性能测试结果进行展示。

具体地,所述请求发送模块201定义发送谷歌远程过程调用grpc请求的通道,根据所述通道构造grpc请求,并将所述grpc请求发送给grpc服务器;所述对象赋值模块202创建所述grpc请求对应的grpc业务的数据对象,并根据所述grpc请求对所述数据对象进行赋值;所述结果处理模块203接收所述grpc服务器根据所述grpc请求进行性能测试后返回的性能测试结果,根据赋值后的数据对象对所述性能测试结果进行处理,并基于jmeter对处理后的性能测试结果进行展示。

本实施例通过将grpc请求发送给grpc服务器,接收grpc服务器性能测试后返回的性能测试结果,并基于jmeter对处理后的性能测试结果进行展示,极大减少了性能测试的脚本开发时间,同时保障了并发的稳定性,以及友好的将结果通过jmeter自带的统计展现出来。

进一步地,在上述装置实施例的基础上,所述装置还包括:

数据串切分模块,用于根据预设格式对所述grpc请求的数据串进行切分,得到符合所述预设格式的目标数据;

相应地,所述对象赋值模块202具体用于:

创建所述grpc请求对应的grpc业务的数据对象,并根据所述目标数据对所述数据对象进行赋值。

进一步地,在上述装置实施例的基础上,所述装置还包括:

结果校验模块,用于根据预设关键字对所述性能测试结果进行校验,确定所述性能测试结果是否符合预期。

进一步地,在上述装置实施例的基础上,所述装置还包括:

异常显示模块,用于若所述性能测试结果不符合预期,则获取所述性能测试结果中的异常信息,并将所述异常信息进行显示。

本实施例所述的基于jmeter的grpc性能测试装置可以用于执行上述方法实施例,其原理和技术效果类似,此处不再赘述。

参照图3,所述电子设备,包括:处理器(processor)301、存储器(memory)302和总线303;

其中,

所述处理器301和存储器302通过所述总线303完成相互间的通信;

所述处理器301用于调用所述存储器302中的程序指令,以执行上述各方法实施例所提供的方法。

本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法。

本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1