软件测试|Rpc接口压测
现今有比较多的rpc框架应用于实际的生产中,像比较流行的Dubbo、Motan、 Thrift、Grpc等。今天作者将以最近项目中用到的grpc为例,结合jmeter来介绍下rpc压测实施步骤。学习本文前需对rpc框架、jmeter有个大致的了解,知道rpc如何用工具生成各种语言的代码。Grpc本身是支持很多种语言的,而jmeter本身只支持java语言,因此我们的脚本也需要选用java。
步骤一:rpc脚本准备
先来看看我本地的项目目录,对结果有个大致的了解,我的工程里包含多个微服务(gnid、hdr等)的代码,每个微服务我建了一个包。这里只以gnid为例来说明:
1.IDE新建maven项目,修改pom.xml,加入grpc、jmeter的依赖包,以及grpc的代码生成插件<br style="box-sizing: border-box;"/>
- 在src/main/java下新建目录(如命名proto),将项目的.proto文件copy进去,如图1中的gnid.proto
- 执行”maven install”,会生成相应的通信及服务代码
4.将图3中生成的代码copy到图1中的建的gnid包中去
- 编写rpc的client端的代码,如下图。在构造方法中初始化与server端的连接(这里的写法都是固定的)。需要说明的是,接口多个参数赋值,可按照下图中2的方法进行(对check和sign两个参数赋值)
步骤二:java sample 脚本准备
- 编写jmeter的java sample代码。
关于jmeter的java sample脚本这里需要说明下:
创建一个类并实现JavaSamplerClient接口或继承bstractJavaSamplerClient,并重写如下几个方法:
public Arguments getDefaultParameters()://设置可用参数的默认值;
public void setupTest(JavaSamplerContext arg0)://每个线程测试前执行一次,做一些初始化工作;
public SampleResult runTest(JavaSamplerContext arg0)://开始测试,从arg0参数可以获得参数值;
public void teardownTest(JavaSamplerContext arg0)://测试结束时调用;
至此,脚本就准备好了。关于脚本还有如下几个点需要注意的:
a. rpc建立的是长连接,初始化服务端连接的代码应放在“setupTest”方法中,这样单个用户在执行期间都是复用该连接(实际生产中也是这么用的,建立连接的过程还是挺耗时的)。同样, shutdown请求,放在teardownTest方法中即可
b. 通常一个rpc服务会包含多个接口,为了避免每个接口都写一个java sample请求,这里有个小技巧,可以在参数中增加一个字段,用于区分不同的接口
<br style="box-sizing: border-box;"/>
步骤三:将脚本打成可执行包,放到jmeter的\lib\ext\目录下
步骤四:启动jmeter,新建“线程组”,在线程组下新建java请求
选择测试类
填写在代码中设定的参数:
剩下的增加相应的断言、监听器、参数化(如需要),就可以像玩http一样开始压测了。
相关文章
- tomcat配置https
- 单基因泛癌完整的流程怎么做?跟这篇文章学学吧!
- 一份解决爬虫错误问题指南
- 8+非肿瘤生信分析!快来学习吧~
- 6+超简单的单基因分析套路!快来学习吧~
- IF38!DNA甲基化相关癌症的诊断与预后分析~
- WeOps上新啦 | WeOpsV3.13网络设备监控全新改造,支持拓展不同品牌型号
- 干货 | 因果推断在项目价值评估中的应用
- 干货 | 基于CNN的新词发现算法
- 替换excel模板中的内容并使用JavaMail发送邮件
- 【人人都懂密码学】一篇最易懂的Java密码学入门教程
- 腾讯云 x Elasticsearch 携手三周年有奖征文大赛
- 微服务架构下路由、多活、灰度、限流的探索与挑战
- CODING X 小鹅通|助力知识教育行业开启 DevOps 数字化转型新篇章
- 如何做好组装式应用?
- 干货 | 疫情背景下的中长期月度预测方案
- 干货 | 携程酒店慢查询治理之路
- 开源 | 携程度假零成本微前端框架-零界
- RCTF-Web
- 干货 | 记一次跨域配置引发的思考