下载与启动
下载地址:jmeter.apache.org/download_jm…
解压后得到文件夹,点击bin目录下的jmeter.bat即可启动Jmeter
运行界面
进入后,首先出现如下界面,然后等待,弹出主界面
主界面:
工作流程
常用元件
tps:每秒事务数
线程组
一个线程就是模拟一个用户
动作按钮详解
- 继续:显示错误,请求不会停止,继续执行
- 启动下一进程循环:终止当前循环进程,直接进入下一循环(需要设置循环次数)
- 停止线程:停止掉当前线程
多数情况不使用此按钮 - 停止测试:所有线程执行完当前迭代后停止
- 立即停止测试:所有线程立即停止
线程属性
每次迭代使用同一个线程
好处:不用重新建新线程,省资源,需结合cookie管理器使用
发送http请求
新建一个http请求
设置具体属性
如果是post-josn请求,需要在线程组里设置一个http信息头管理器
cookie管理器
http服务器代理
原理
设置代理服务器的配置
PC端开启服务器代理功能
点击启动开始录制
随后在浏览器上操作网页,录制完成后点击停止
查看取样器,录制成功
函数
函数助手
jmeter内置的
配置CSV数据文件
新建一个TXT,前面为name,后面为age,中间逗号隔开
添加配置元件
进行设置
添加一个java取样器
设置线程组,因为有两组数据所以跑两次,设置两个线程组也行
启动后观察结果树
CSV配置成功
集合点(Timer)
同步定时器试用
设置100个线程组
添加同步定时器,让50个线程同时并发
使用active threads监听器查看 ,不知道为什么我这里只有43个并发
关联
主要解决测试中多个接口的依赖关系,一般通过后置处理器提取
正则表达式提取器
- 引用名称:自己填写的名称
- 正则表达式:你要取值的位置替换成(.*?)
- 模板:格式为
- 匹配数字:0是随机,-1是全选,1是第一个,2是第二个,以此类推
- 缺省值:当没找到对应数据的时候,用缺省值内的数据替代
注意:这里的模板和匹配数字容易混淆,请分清
类表格中,模板的数字表示第几列,匹配数字是当前列的第几个
例:下图的模板数字为1,说明是第一列的hello,匹配数字为2说明是第二个,所以输出是hello1
学习过程中遇到的问题
调度器和ramp-up时间的冲突问题
当启动时间rampup大于调度器的持续时间时,以ramp时间优先,下图中线程组会启动10秒(一般调度器的持续时间会给的很长,一般不会发生图中这种情况)
取样器错误后执行动作详解
- 继续:显示错误,请求不会停止,继续执行
- 启动下一进程循环:终止当前循环进程,直接进入下一循环(需要设置循环次数)
- 停止线程:停止掉当前线程
多数情况不使用此按钮 - 停止测试:所有线程执行完当前迭代后停止
- 立即停止测试:所有线程立即停止
浏览器代理服务器启动
在jmeter中添加http服务器代理
或者使用recording模板直接生成框架
端口号不要输错
注意事项:要先启动jmeter的http服务器代理元件,然后在刷新浏览器
线程组之间的并行关系
线程组之间并非一定是线性,如果一定要按照顺序,要勾选“测试计划”里的独立运行每个线程组
jmeter+Grafana+influxdb性能测试可视化部署
使用工具:
可视化工具-Grafana
数据库-influxdb
测试软件-jmeter
influxdb的安装与配置
首先通过压缩包解压文件
进入influxdb-1.7.3-1目录下面,复制地址
用管理员命令打开cmd,用cd /d进入到刚才复制的地址,输入influxd -config influxdb.conf
启动influx数据库
启动完毕后,回到influxdb-1.7.3-1目录,在目录内进入cmd
输入influx,进入数据库
输入create database xxx 创建数据库(库名统一为xxx,自己设置)并输入exit退出,到此influxdb设置完成
jmeter设置后端监听器和断言
在监听器里添加后端监听器,配置如下
添加beanshell断言,代码如下
if(!ResponseCode.equals("200")){
Failure = true;
FailureMessage="FailureResponseCode:" + ResponseCode + "\n";
String response = new String(ResponseData);
return;
}
String response = new String(ResponseData);
//检查内容替换为自己要设定的检查点即可
Failure = !(response.contains("检查内容"));
if (Failure) {
Failure = true;
FailureMessage="FailureResponseMessage:" + response + "\n";
return;
}
然后等Grafana设置完毕后,即可在jmeter里运行测试脚本
Grafana
使用网址:localhost:3000登录
输入初始账号admin,密码11111,进入
此时打开监控面板会显示很多紫红色感叹号:influxdb error:bad gateway,说明data_source选择的数据源“InfluxDB”没能连接到InfluxDB数据库。
点击设置-data sources,并打开现有的这个名为“InfluxDB”的数据源进行编辑。
因为我们上面已经安装好了InfluxDB在本地,所以这边URL保持为localhost:8086不变即可。 拉到下面,data base把原来的“jmeter”改为你在安装InfluxDB后创建的数据库库名,比如你上面执行了create database xxx命令进行建库,那么就把下图中的jmeter改为自己设置的xxx,然后保存即可,回到监控面板,没有弹窗和紫红色的感叹号说明Grafana连接数据库成功。
参数化的三种常用方式
CSV
用户参数
用户定义的变量