JMeter下载安装
JMeter版本:4.0
Linux上安装jmeter
- 安装jdk
wget https://repo.huaweicloud.com/java/jdk/8u201-b09/jdk-8u201-linux-x64.tar.gz
tar -xzvf jdk-8u201-linux-x64
- 配置java环境变量
- 编辑文件
sudo vim /etc/profile
- /etc/profile文件末尾加上如下配置
# java env
export JAVA_HOME=/usr/local/jdk1.8.0_201
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
- 生效配置
source /etc/profile
- 验证java环境安装
java -version
- 安装jmeter 4.0
wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-4.0.tgz
tar -xzvf apache-jmeter-4.0
- 配置jmeter环境变量
sudo vim /etc/profile
- 文件末尾加上如下行
export PATH=$PATH:/usr/local/apache-jmeter-4.0/bin
- 生效配置
source /etc/profile
- 验证jmeter安装是否成功
jmeter -v
-
最终效果
image.png
创建jmeter脚本
1. 新建线程组 Thread Group:
线程数 相当于 虚拟用户数。一个测试计划可以有多个线程组
- 测试计划--》添加--》Treads--》线程组
- Ramp-Up Period: 准备时长,设置的虚拟用户数需要多长时间全部启动 。 则 5s/10线程数 即每隔 0.5s启动另一个线程
- loop:每个线程发送请求的次数。一个HTTP请求20次,如果是2个HTTTP请求则一共的请求20+20=40次
2. 添加 HTTTP 请求:
- 线程组--》添加--》Sampler--》HTTP请求
- 跟随重定向:即遇到302会重定向到Location
- Body Data:注意HTTP POST请求中Body Data默认传递的格式是Content-Type: application/x-www-form-urlencoded,如果需要传递json,需要添加配置元件指定Content-Type: application/json
3. 添加配置元件
- 线程组--》添加--》配置元件
-
HTTP信息头管理器
: 添加headers请求头参数。
- 在整个测试计划下添加HTTP信息头管理器,设置User-Agent为浏览器。因为有些服务器会拒绝工具的HTTP请求,即User-Agent为Apache-HttpClient的请求。
-
HTTP Cookie管理器
:之后的请求会带上前面请求获得的Cookies。以这种自动收集的方式收集到的cookie不会在Cookie Manager中进行展示,但是运行后,通过:查看结果树(监听器)可以查看到cookie信息
- 对于JMeter来说,一个测试计划只能有一个cookie管理器
4. 参数化,使用${}访问变量
4.1 添加用户自定义变量
- 步骤: 配制元件--》用户定义的变量
-
根据变量的作用域决定元件应该添加在何处。
image.png - 注意:值如果由冒号的话会被识别为数组,例如:"192.168.1.1:5000",最终获取到的值是[192.168.1.1:5000]是一个数组了。。。
4.2 CSV数据文件设置
- 步骤:添加--》配置元件--》CSV数据文件设置。
-
变量作用域依据所处位置有所不同。
CSV数据文件设置 - 如果csv文件首航为变量名,则忽略首行需设置为True。
- 遇到文件结束符再次循环设置为False,则运行到文件末尾之后,不再循环取数据。
- 遇到文件结束符停止线程设置为True,则运行到文件末尾之后,线程停止运行。
4.3 随机数字
- 点击“函数助手”
4.4 随机字符串
4.5 csv函数
- 一个线程一条数据,固定不变
5. 为HTTP请求的结果添加断言,即设置检查点
- HTTP请求添加----》断言---》响应断言。
- 响应文本Response body,响应代码Response code,响应信息Response message
输入图片说明
6. 查看断言结果
- 元件右键添加---》监听器----》断言结果。
- 可以在HTTP请求下添加单个断言结果也可以为整个线程组添加断言展示所有的断言结果。
-
断言通过直接显示HTTP请求的名称不通过会有提示
输入图片说明
7. 添加关联
所谓关联, 就是第二个Request, 使用第一个Request中的数据。
- 前置处理器: 在HTTP前执行
- 后置处理器: 在HTTP请求之后执行
7.1 JSON提取器
添加--》后置处理器--》JSON Extractor
-
变量作用域为:当前线程组当前请求之后的所有请求
image.png 对于接口返回的结构为json时,可以通过JSON提取器提取想要的值。
使用
$
表示json文件的根。可以通过察看结果树中的JSON Path展示方式测试,例如获取下图的token:$.token
,获取id:$.user_info.id
-
$.data.user[0].id
表示获取第一个元素,$.data.user[*].id
表示获取所有元素
JSON Path Tester
7.2 正则表达式提取器
- HTTP请求添加---》后置处理器---》 正则表达式提取器,
()
括起来的部分就是要提取的。 - 模板:表示使用提取到的第几个值,用
$n$
引用起来,如果在正则表达式中有多个正则表达式(即多个括号括起来的东东),$-1$
:表示取所有值,$0$
:表示随机取值,$1$
表示解析到的第1个值
image.png
8. 运行线程组,查看结果树
- Sampler--》添加---》监听器---》查看结果树
- 点击工具栏的扫帚,用于清空结果树