原创

Jmeter对于web api进行压力测试

前言

最近在项目中遇到一个记录用户播放记录的场景。简单来说就是用户在看视频的时候,每间隔几秒钟就提交一次用户观看视频的进度,如果用户中途关闭视频播放页面,下次再打开的时候视频从上次关闭时的播放进度继续播放。例如用户在视频的第300秒关闭了页面,下次再打开视频的时候,从第300秒开始播放,当然可能会再提前几秒。

从场景来看,当越多用户看视频的时候,接口并发量就会响应的增加。所以很有必要对这个接口一轮压力测试。下面记录试用JMeter进行压力测试的过程。

创建测试

  1. 创建线程组并设置线程数,线程数可以理解为用户数或者并发量。
  2. 在新建的线程组上右键选择添加-取样器-http请求,设置目标api的信息。
  3. 你可能注意到了目标接口接受json作为payload,所以需要设置http请求头Content-Type属性。在新建的http请求上右键,选择添加-配置元件-http信息头管理器。
  4. 请求参数可能需要一些随机内容。JMeter提供了随机变量。在http请求上右键添加-配置元件-Random Variable。设置好变量名称,在你需要的地方引用。引用方式:${var}。配置随机发生器用于确定随机数的区间。图中rnduser和rndlessonId均为随机变量,只是随机区间不同。
  5. 对于接口返回的json内容可以增加判断,JMeter提供了json断言判断接口返回内容是否正确。在http请求上右键添加-断言-json断言。使用json path选择到你要判断的json字段,填写接口正确返回内容,这样在接口报错的时候JMeter才能感知到。本例中正确的返回结果为: {"message":"ok","code":0}。设置如图
  6. 最后添加察看结果树和聚合报告即可。

提示信息

================================================================================

Don't use GUI mode for load testing !, only for Test creation and Test debugging
.
For load testing, use CLI Mode (was NON GUI):
   jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:
   Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in
 the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
================================================================================

意思是:不要使用GUI运行压力测试,GUI仅用于压力测试的创建和调试;执行压力测试请不要使用GUI。使用下面的命令来执行测试

jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]

修改JMeter批处理文件的环境变量

HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"

这是一个批处理的例子

set "HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"
bin/jmeter.bat -n -t ./HTTP请求.jmx -l ,/HTTP请求 -e -o ./report/
正文到此结束
该篇文章的评论功能已被站长关闭