场景:作为开发人员经常需要进行java接口的压测,比如商品抢购、并发量大的活动接口,需要模拟多用户进行并发压测,这个时候就需要使用到Apache的Jmeter压测工具了,本篇讲述的是使用Jmeter自定义变量模拟多用户压测,通俗点讲:就是把参数都放在一个文件中,Jmeter调用接口时动态的去读取,比如你压测某个接口,接口入参需要username、pricecode,将这些个参数都以下面的格式放在某个文件中,压测接口时让接口动态的读取:
17802115971_170921m80,1yuangou_h5
15927730423_150968z24,99yuanvip_pc
具体步骤:
1、 如果你还没有安装Jmeter,请移步至http://jmeter.apache.org/download_jmeter.cgi下载对应的版本并安装;
2、安装好后打开界面如下
默认的语言是English,要是你不习惯,可往 Options 》Choose Languages 修改为中文,还有主题色,可往 Options 》Look and Feel选项进行修改;
3、选中Test plan右击 》添加 》Threads(Users) 》线程组
4、选中线程组右击 》添加 》配置元件 》HTTP请求默认值
这里配置HTTP请求默认值的目的就是为了方便,因为HTTP请求默认值是Test Plan下公用的,这样你就不用在HTTP请求项时一个个配置,注意此步骤不是必须的,你可以直接跳到步骤5;
5、选中线程组右击 》添加 》Sampler 》HTTP请求,这里要注意:接口入参${username}里的username和第6步骤中username、以及和接口的入参http://localhost/common/checkjoin?username=××都是一致的。
6、选中线程组右击 》添加 》配置元件 》CSV数据文件设置
这里的变量名称必须和步骤5设置的同请求一同发送的参数项要一致,且和你的controller中的参数名也要一致。
如果接口里包含多个,步骤六中配置的变量名称就得用你自己指定的符号分隔开(上图中的分隔符),要对应你的csv文件中每一列参数分隔符,且步骤五同请求一起发送的参数名字也要对应。
例如我的param.txt文件是这样子的:只有一列username的取值
如果你的参数只有一个,但是也设置了逗号分隔之类的,也是可以的,不产生影响;
7、选中线程组右击 》添加 》监听器 》察看结果树
察看结果树界面可以看到每个接口的请求、返回值之类的,类似于抓包后的数据。在监听器选项里还有其他很多选项可以查看到压测情况:
8、启动你的服务器,我是idea启动的本地服务,实际压测下
9、要及时的保存测试计划Test Plan,不然关闭后下次进来就找不到了,同时,压测后可以右击查看结果树,清除上一次的测试接口。
原文可见:Jmeter压测java接口、Jmeter自定义变量模拟多用户压测
实际用例:
高并发处理之接口限流
高并发秒杀功能架构设计