使用jmeter进行api接口压力测试

688 阅读3分钟

前言

之前用apifox 针对项目API做一些压力测试,发现如果是并发压力测试,apifox不是很合适,高并发很占用本地资源,卡的一匹(吐槽一下),后续了解压力测试的工具挺多的,但看了其他人的文章介绍,还是选了jmeter,开源、免费啊。

下载

下载地址: jmeter.apache.org/download_jm…

环境配置

下载后解压zip到任意目录,然后配置环境变量 变量名JMETER_HOME,变量值F:\apache-jmeter-4.0 在变量名CLASSPATH新增

%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;
%JMETER_HOME%\lib\jorphan.jar;
%JMETER_HOME%\lib\logkit-2.0.jar;

在Path新增

%JMETER_HOME%/bin 

启动

然后启动cmd,输入F:\apache-jmeter-4.0\bin\jmeter.bat

image.png

启动后:

image.png

jmeter的主界面如下:

image.png

更改语言版本为中文

image.png

所需的api参数

我们现在准备对以太坊的jsonrpcapi接口进行测试 地址是: http://192.168.10.131:8545 http请求头部配置: Content-Type:application/json 请求内容:

{ "jsonrpc":"2.0", "id":1, "method":"eth_getBlockByNumber", "params":["0x331f75",true] }

创建测试用例

创建线程组 在测试计划中右键弹出菜单,添加-》Threads(Users)-》线程组

image.png

线程组的参数配置

image.png

线程属性中,Ramp-Up Period(in seconds),间隔多长时间启动1个线程,直到创建100个线程,如果为0的话,则在开始测试后立刻创建100个线程 可以选中“调度器”,设置需要持续测试的时间,

设置http请求头部

在通常编写的api中,是需要配置http请求头部的,在jmeter中也由相关的设置, 在线程组单击右键出现菜单栏,添加-》配置元件-》HTTP信息头管理器 image.png 添加api中需要的头部配置信息

image.png 设置http请求默认值

http请求默认值的设置,可以设置请求的服务器,其他环境下的http请求只需添加对应的子路径即可完成测试, 方便测试环境与生产环境之间的切换

image.png

一般设置好服务器地址即可

image.png

设置http请求

右键点击“线程组”,出现菜单,添加-》Sampler-》HTTP请求

image.png

HTTP请求的路径,本次测试并未填写,可根据实际情况添加 在BodyData,中填入需要请求的参数,这里以太坊的jsonrpc-api,需要请求的参数是json格式的,

{
    "jsonrpc":"2.0",
    "id":1,
    "method":"eth_getBlockByNumber",
    "params":["0x331f75",true]
}

image.png 为http请求添加查看结果树 右键点击“http请求”(就是之前添加的http请求项),添加-》监听器-》查看结果树 可在此页面中查看每次的api请求过程以及结果,方便后期分析

image.png

为http请求添加Summary Report

右键点击“http请求”,添加-》监听器->Summary Report 可在此页面中查看报告

image.png

开始测试

右键点击”线程组“,start

image.png 测试完成之后,可以查看每个api请求过程及结果

image.png

以及综合报告

image.png

综合报告各个参数指标说明

Label:取样器/监听器名称

Samples :事务数量

Average:平均一个完成一个事务消耗的时间(平均响应时间)

Min:最小响应时间

Max:最大响应时间

以上单位都是ms

Std.Dev:偏离量,越小表示越稳定

Error %:错误事务率

Throughtput:每秒事务数,即tps

KB/sec:网络吞吐量