https://blog.csdn.net/weixin_45912307/article/details/120191558
day01 jmeter基础
1.1jmeter环境配置及安装
1.1.1jmeter安装及启动
- 安装jdk1.8
- 再官网下载jmeter的zip文件
- jmeter启动
- 进入jmeter路径 的bin目录并且打开
- 在bin目录下找到jmeter.bat文件,双击
- 在windows下启动jmeter
- 在liunx下启动jmeter
1.2jmter常用目录文件介绍

1.2.1bin目录
jmeter.properties 系统配置文件
jmeter.sh linux下启动文件jmeter.bat Windows下启动文件jmeter-server.bat windows分布式测试要用的服务器配置jmter-server linux分布式测试要用的服务器配置
1.2.2 docs
1.2.3 lib
1.2.4 Printable_docs
- printable_docs的usermanual子目录下的内容是JMeter的用户手册文档,其中usermanual下component_reference.html是最常用到的核心元件帮助文档。
1.3jmeter基本使用&元件介绍
1.3.1 主页面布局
jmeter主要页面布局标题栏、菜单栏、工具栏、树形标签栏和内容栏
- 标题栏:主要显示计划信息及JMeter版本。
- 菜单栏:全部的功能的都包含在菜单栏中。
- 工具栏:工具栏中的按钮在菜单栏都可以找到,工具栏就相当于菜单栏常用功能的快捷按钮树形
- 标签栏:树形标签栏通常用来显示则试用例(计划)相关的标签。
- 内容栏:配合树形标签栏显示,树形标签中点击哪个标签,内容栏中就显示相应的内容和操作。
1.3.2 jmeter入门脚本
-
添加测试计划
-
添加线程组 ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wktrtYNl-1632108708546)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631374460471.png)]](https://img-blog.csdnimg.cn/cdbe870265b04da3a003057da67668e5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) -
线程组下添加取样器:http请求
- 鼠标右键Thread Group —> sampler —> HTTP Request
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UON595sA-1632044306465)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631374719463.png)]](https://img-blog.csdnimg.cn/0198da0947de4b00b3e05762ca679e37.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16)  -
设置断言:
- 采样器下添加响应状态码断言
- 采样器下添加响应文本断言
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bwVB8ucY-1632044306474)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631375168702.png)]](https://img-blog.csdnimg.cn/247ff419935e4f509d99b0516f2645d9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AcH8uols-1632044306475)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631375907077.png)]](https://img-blog.csdnimg.cn/ccfac0a4de93484ead6bf96f56b3ec17.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16)  -
添加监听器:查看结果树、聚合报告
- 在取样器下添加查看结果树
- 在线程组下添加聚合报告
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sr8dt8ov-1632044306475)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631376177399.png)]](https://img-blog.csdnimg.cn/a48e1e136ee4403aa3b3dafeeb701758.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3EhwPVIH-1632044306476)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631376377690.png)]](https://img-blog.csdnimg.cn/bea0ab4f6a99411b832e738c46b435ac.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) -
设置线程组:并发数、加载时间、循环次数  -
运行脚本:点击绿色三角按钮  -
结果 查看
 ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AIAaQsgZ-1632044306477)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631376520286.png)]](https://img-blog.csdnimg.cn/735b02a32b904f05948359aa69ad39b4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16)
1.3.3 测试计划元件
-
测试计划:项目名称 -
线程组:业务流程
- Number of Theads(users):并发数
- Ramp-up period(seconds):用户全部启动时间(s)
- Loop Count:循环次数
-
取样器(Sampler):测试用例(一个接口请求) 作用: 向服务器发送请求并记录响应内容和响应时间
- 是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元
- 一个取样器通常进行三部分的工作:向服务器发送请求,记录服务器的响应数据和记录响应时间信息
-
逻辑控制器(Logic Controller)
-
配置元件(Config Element):用于提供静态数据配置的支持(一般用于参数化) -
前置处理器(pre Processors):实际发送请求之前对即将发出的请求进行特殊处理 -
后置处理器(post Processors):对sample发出请求后得到的服务器响应进行处理。一般用于提取响应中的特定数据 -
定时器(Timer)
- 用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手段
-
断言(Assertions):检查测试中得到的响应数据是否符合预期 -
监听器(Listener):对测试结果处理和可视化展示的一系列组件,常用有图形结果、查看结果树、聚合报告
1.4 jmeter运行原来
- 以线程方式在jvm虚拟机上运行
- jmeter GUI模式运行测试脚本对电脑本身的资源消耗较大,无法实现大的并发和压力测试
- 使用命令行模式实现高并发和压力测试
- 使用GUI模式:用于编写和调试测试脚本
1.5 测试计划要素
- 测试计划
- 在测试计划中至少有一个线程组
- 在线程组中至少有—个取样器
- 在测试计划中必须有监听器
1.6 录制脚本
1.6. 1badboy录制
- 安装badboy
- 打开badboy在地址栏输入被测地址,回车
- 打开badboy时默认记录状态,输入网址,直接操作即可
- 操作完成,点击停止记录
- 导出脚本
- 在jmeter中打开已有文件
- jmeter文件名.jmx
- 在jmeter点击打开文件,选择文件路径,找到需要的文件进行打开即可
- 添加监听器|:查看结果树/聚合报告
- 设置用户数、线程组、循环次数,点击运行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0JEHXIFk-1632044306478)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631423894007.png)]](https://img-blog.csdnimg.cn/b64180dcacb447969388da5bc310d3d4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vUnFrLiL-1632044306479)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631423829345.png)]](https://img-blog.csdnimg.cn/9f3955ef1e8c45798cb6bd1d59d14535.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16)  ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xGk7APlR-1632044306479)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631424389009.png)]](https://img-blog.csdnimg.cn/095a5c4f022f438a87493f338d0c6b05.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6TpbsiWK-1632044306480)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631424542688.png)]](https://img-blog.csdnimg.cn/b7e2ced827d242bdbde19ee0736ab1c5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16)
1.6.2 jmeter自身代理录制脚本
- 1.打开jmeter创建新的测试计划
- 2.在测试计划下添加一个线程组
- 3.添加http代理服务器
- 在测试计划下—鼠标右键–非测试元件—http代理服务器
- 4.配置http代理服务器
- 端口号默认
- https domains:填写电脑本地ip
- 在Plan Creation中选择目标控制器
- 在requests Filtering中配置
- 添加匹配的url:
.*\.(baidu\.com).* ;过滤的url:.*\.(css|js|PNG|jsp|icon|png|gif). - 5.手动设置代理
- 6.线程组下添加录制控制器
- 7.http代理服务器点击Start按钮,录制完毕点击停止
- 8.线程组下添加查看结果树
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wKo8qKlC-1632044306480)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631426243387.png)]](https://img-blog.csdnimg.cn/80839e765dec4b81a835fbf627348053.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zk3IIicm-1632044306480)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631426351841.png)]](https://img-blog.csdnimg.cn/dc527b4b1ec842afb1f79165d66c031d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16)      
1.7 注意事项
-
解决中文乱码问题
- Jmeter安装目录
/bin/ jmeter.properties 中sampleresult.default.encoding 默认为“ISO-8859-1” ,将参数修改为sampleresult.default.encoding=utf-8 即可 - 同时注章将注轻符吕去掉,于不会牛动
-
修改默认语言
 
- 修改完重新启动jmeter,检查是否还有乱码问题

1.8 接口基础知识
接口三要素
- 请求地址/方式
- 请求参数
- 返回值
HTTP协议 - 请求方式
- get
- post
- x-www-form-urlencoded参数类型键值对
- content-type:application/x-www-form-urlencoded
- json格式数据参数类型
- content-type:application/json
- put
- delete
day02 jmeter核心知识
2.1 发送http请求
2.1.1 http管理器
- http信息头管理器<==>http请求头
- 主要使用Content-Type参数
- 在jmeter中,发送http的post请求时,需要添加http信息头管理器
- 实例:https://www.ctrip.com/
- 浏览器输入https://www.ctrip.com/
- 谷歌浏览器打开F12,输入目的地,点击搜索
- 对照抓取的数据,在http采样器中填写:协议(https)、服务器名称或ip、请求方式(post)、路径、请求体
- 在http采样器下添加http信息头管理器,对照request header,添加请求数据类型
- accept:json
- content-type:application/json
- 添加查看结果树,点击运行
 ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ztr0IK9v-1632044306485)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631431291341.png)]](https://img-blog.csdnimg.cn/16048274a08748bfb019a68e47f11c4c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16)   ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-puflDF3d-1632044306488)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631431536595.png)]](https://img-blog.csdnimg.cn/b5482bc3be7549cf9707dbd07b296282.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kipaRNAo-1632044306488)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631431857992.png)]](https://img-blog.csdnimg.cn/5ba81cb3cbf841829da98feba5f083d6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16)
2.1.2 http请求配置
http协议 默认端口80 https协议 默认端口443
- 协议 http
- 服务器名称或ip:接口域名
- 端口号:如果有填写具体端口号,如果没有端口号不填
- 方法:get、post、put、delete、PATCH、HEAD、copy、options
- 路径:接口地址
- 内容编码:utf-8
- 参数:针对post请求是
x-www-form-urlencoded 格式和form-data 格式 - 消息体数据:针对post请求中json格式/xml格式请求参数,相当于postman中raw
- 文件上传:上传文件接口
2.1.3 http请求默认值
- 位置:
- 作用:
- 将同一线程组下所有HTTP请求的协议和服务器域名统一管理
- 如果HTTP请求中自己填写的协议和服务器域名,当发送请求时,使用本身的
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t0jJjFPg-1632044306488)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631437046655.png)]](https://img-blog.csdnimg.cn/654bb92a199047f0bc94c04a31e1eb80.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16)
2.2 参数化
- 参数化定义:根据需求获取数据并进行赋值的过程
- jmeter中常用方式
- csv data set Config
- jmeter引用变量写法:
${变量名}
2.2.1 csv数据控件实现参数化
- 建立一个csv格式文件
- 在excel建立文件另存为csv格式,使用notepad++转码为utf-8
- 配置jmeter中csv数据文件设置
- 位置:线程组–添加----配置元件-----CSV数据文件设置。
- 文件名:选择准备好的csv文件
- 文件编码:UTF-8
- 变量名称:变量名;如果有多个使用英文逗号隔开
- 忽略首行:如果csv文件首行写的是变量名称,选择忽略首行True,如果不是选择False
- 分隔符:如果csv文件使用的是逗号隔开,即默认值。其余选项按照默认值即可
- 在HTTP请求中引用参数
- ${变量名}
- x-www-form-urlencoded格式是:
"${变量名}" - 如果使用csv文件中所有数据,需要设置线程组的线程数或循环次数
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uk5PGrfg-1632044306489)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631442666704.png)]](https://img-blog.csdnimg.cn/7026c9fe43f949488cbfb90a5127c914.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aK82Fk0f-1632044306489)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631445044732.png)]](https://img-blog.csdnimg.cn/dae38f36537247769dd841c8e8b514df.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r7zyBB2f-1632044306489)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631458087570.png)]](https://img-blog.csdnimg.cn/527920e1ac97453181b9cdd6a28a05d5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Kx9Wxln-1632044306490)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631458135498.png)]](https://img-blog.csdnimg.cn/e0d82afee2c742aab4d8900e5bdb8d29.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TgJDuIKc-1632044306490)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631458231473.png)]](https://img-blog.csdnimg.cn/f2f27a49b9b249d5b2a0a48bb4580ff0.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16)
2.2.2 用户参数化
- 位置
- 使用方式
- 针对哪个http请求使用就在哪个http请求下添加
- HTTP请求---->添加---->前置处理器----->用户参数
- 配置用户参数
- 添加变量
- 添加用户
- 使用用户参数
- 在HTTP请求中引用变量
- 在线程组中设置线程数;线程数的值和用户参数中的用户数一致
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TWmxQb5l-1632044306490)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631454040276.png)]](https://img-blog.csdnimg.cn/86597641940242b5b08e8a432401f9fe.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DdxLfXYl-1632044306491)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631454161837.png)]](https://img-blog.csdnimg.cn/43d5255e509e4cddada4e9f364cc9c9b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z9fzaAJF-1632044306491)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631458408346.png)]](https://img-blog.csdnimg.cn/0541ea162cfe462ca4ea349953834043.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S546BI1R-1632044306491)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631458478099.png)]](https://img-blog.csdnimg.cn/6023559377384bebb6a330876d354a86.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16)
2.2.3 用户定义的变量
- 位置
- 测试计划页面(一般情况下)
- 配置元件中—>用户定义的变量
- 配置
- 使用
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sb2bnqEl-1632044306491)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631456225832.png)]](https://img-blog.csdnimg.cn/269822071a3949159a2122f046f95f20.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7BTChXVW-1632044306492)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631456248175.png)]](https://img-blog.csdnimg.cn/20b59d7c48b7447e935ea1207f95e958.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9EDJweU2-1632044306492)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631456263202.png)]](https://img-blog.csdnimg.cn/78bbcb5264d74b38a79b8db4a289c3fd.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16)
2.2.4 jmeter参数化总结
- CSV数据文件配置----位置:配置元件中。
- 用户参数----位置:前置处理器中。
- 用户定义的变量-----测试计划/配置元件
- 适用于常量配置:数据库地址,测试环境地址,登录数据
2.3 jmeter连接数据库—以MySql为例
- 在测试计划中导入数据库驱动jar包
- 测试计划下添加线程组
- 在线程组中添加
JDBC Connection Configuration
- 配置
JDBC Connection Configuration
- 在
variable Name for created pool 中填写要连接的数据库的名称 - 在
Database Connection Configuration 填写数据库相关参数
- 数据库连接地址
- jdbc:mysql://数据库域名或IP:端口/数据库名称
- 选择数据库驱动
- 数据库用户名
- 数据库密码
- 在线程组中添加
JDBC request
Variable Name Bound to Pool 中填写和连接数据库时—致的名称- 写sql语句
- 在线程组下添加
查看结果树 - 在测试计划中设置用户并发数(可选)
- 获取数据库查询结果
- sql语句中变量引用
- 获取sql中查询结果
- 在variable names中填写变量名
- 变量名指对查询结果的命名 接收sql结果
- debug sample
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PpFWzoDd-1632044306492)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631462538731.png)]](https://img-blog.csdnimg.cn/7343ffbaa7014f42979eedf78374eb88.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hqxib1cK-1632044306492)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631462616339.png)]](https://img-blog.csdnimg.cn/3d67963153a74529b723cd3569a7036a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o13U9N69-1632044306493)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631462811676.png)]](https://img-blog.csdnimg.cn/6ac7709c990f42d5a5f5216b8155c526.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qEayTO4J-1632044306493)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631462935038.png)]](https://img-blog.csdnimg.cn/a0572fa599b740c1b8a28f12ab6b5f60.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kqjQ2Nm9-1632044306493)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631463407060.png)]](https://img-blog.csdnimg.cn/3c5407304021419eb1a65f809e0b7608.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zSdqtBJH-1632044306494)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631464624067.png)]](https://img-blog.csdnimg.cn/940286311c2046d3b808da2a7701080e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uPAf2zXa-1632044306494)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631464714157.png)]](https://img-blog.csdnimg.cn/b021d9f4794e47749cd44dbf5d3ea2a4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16)
2.4关联
从上一条请求中获取数据,使用在下一条请求的数据中
2.4.1 xpath关联
- 使用场景
- 在接口返回值为HTML或xml格式时,使用xpath提取器
- xpath提取器
- 配置xpath提取器
- 引用名称:接收返回值数据的变量名
- XPath query :xpath表达式
- 匹配数字:0表示随机选择,-1表示取所有
- 缺省值:当没有找到对应数据的时候,显示缺省值的内容
- XML parsing Options中选择
Use Tidy 和Quiet
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Twk1c8M2-1632044306494)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631888753096.png)]](https://img-blog.csdnimg.cn/c852e6c0710d47c78294c9865403efde.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LaMalykH-1632044306494)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1631888775416.png)]](https://img-blog.csdnimg.cn/2e5e80596aed4180999ccafdf0271873.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) 
2.4.2 json提取器
- HTTP请求---->右键---->添加-一>后置处理器---->json提取器使用场景
- 配置json提取器
- 引用名称:接收返回值数据的变量名
- json path expressions:jsonpath表达式
$..获取字段名 - 匹配数字:0表示随机选择,-1表示取所有
- 缺省值:当没有找到对应数据的时候,显示缺省值的内容
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9BMeYl3D-1632044306496)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1632020337365.png)]](https://img-blog.csdnimg.cn/8234a1a618364734b740cbafa7a1ab06.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) 
2.4. 3 正则表达式提取器
- 正则表达式用法: https://blog.csdn.net/weixin_45912307/article/details/108615866
- HTTP请求–>右键–>添加–>后置处理器–>正则表达式提取器
- 使用场景:适用于任何返回形式(json、text、html等)
- 表达式示例
"token":"(.*?)" 匹配0次或多次"token":"(.*+)" 匹配1次或多次 - 配置正则表达式提取器。前2个选项默认即可
- 引用名称:接收返回值数据的变量名。正则表达式:
"session":{(.*?)} - 模板:
$1$ 表示取第—组数据 - 匹配数字:0表示随机选择,1表示取第一个
- 缺省值:当没有找到对应数据的时候,显示缺省值的内容
   
2.5 断言
2.5.1 响应断言
- 断言状态码添加断言:哪个接口需要断言,在接口下添加断言。
- 配置断言
- 在测试字段----选择响应代码
- 在测试模式—填写期望的状态码 200
- 断言文本值
- 配置断言
添加后置处理器—>bean shell postprocessor
- 在测试字段—选择响应文本
- 在测试模式–填写要断言的具体字段和值
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vAd0mGcU-1632044306497)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1632029255902.png)]](https://img-blog.csdnimg.cn/900b5f01d46147aaaf04b6677bdb1943.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16)
2.5.2 json断言
- 作用范围:返回值格式为json格式添加JSON断言
- 断言配置JSON断言
- Assert JSON Path exists:获取返回结果的字段----实际结果
- Expected Value:预期结果填写具体数据也可以引用参数
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rh7N5CTs-1632044306498)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1632029403934.png)]](https://img-blog.csdnimg.cn/fd617242dda24a9e99aef813639eedbc.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16)
2.5.3 大小断言和响应时间断言
- 大小断言
- 断言返回值所占字节数的多少
- 如果填写20比较类型>则表示返回值的字节数>20
- 持续时间断言
- 断言接口响应时间是否≤所期望的时间
- 注意:接口的响应时间都是毫秒级别的
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uXan3Y68-1632044306498)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1632029561980.png)]](https://img-blog.csdnimg.cn/bcbb2fe0fce24ac9890d5e7989bd80c4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L0P6J2Wc-1632044306498)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1632029581465.png)]](https://img-blog.csdnimg.cn/8f4411d99f2449d78d8fab9302163dda.png)
2.6 集合点
- Synchronizing Timer —集合点
- 位置:定时器---->
Synchronizing Timer - 哪个接口需要并发,就在哪个接口下添加集合点
- 配置集合点
- 每次集合的用户数
- 集合用户数所用时间(单位:毫秒)
- 时间设置为0,表示无限等待,直到
线程数量==集合数 量 - 设置时长:表示在规定时间内启动已集合线程,不管有没有集合到预期的数量
- 注意事项
- 集合数最好能被线程数整除
- 集合时间最好大于等于线程组中的启动时间
2.7 内置函数
- 1.点击jmeter页面的函数助手
- 2选择需要使用的函数
- 3.设置函数相关参数
- 4.点击生成
- 5.复制函数字符串
- 6.粘贴到需要使用的位置

2.8 线程组间通信
- 作用:实现多个线程组间的数据传递
- 操作步骤:
-
1.将原来的参数提升作用域使用函数:setProperty -
2.设置setProperty
- 属性名称:指提升作用域后的变量名称
- value of Property:需要提升作用域的变量值${token}
-
3.在线程组1中添加一个新的取样器—Bean shell 取样器 -
4.将设置好的setProperty 函数复制粘贴到Bean shell 取样器中 -
5.设置Property函数
-
6.将设置好的Property函数复制粘贴到线程组_2中 -
7.设置线程组请求的先后顺序
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bb4ZQWN5-1632044306499)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1632035863117.png)]](https://img-blog.csdnimg.cn/12339b1fba0b481b85b8de87ecb7a5af.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16)   ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1PkUy6tY-1632044306500)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1632036131931.png)]](https://img-blog.csdnimg.cn/62c15581a0644dfd88e54fab435de45d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GITaQcB4-1632044306500)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1632036233657.png)]](https://img-blog.csdnimg.cn/d6c0f7f56e5741828f170c5a5e9b8471.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16)
2.9 逻辑控制器
2.9.1 if控制器
- 位置
线程组—>添加—>逻辑控制器---->如果(if控制器) - 配置果控制器
- 不勾选任何选项的使用方法注册
- 符串比较
- 参数和值都需要加引号,例如:"${time}"==“九点”
- 数字比较
- 布尔值
- ${[time}
- 参数的值必须小写true/falsel
- 勾选
将条件解释为变量表达式
- 借助函数_jexl3或groovy直接输出true/falseo
- 全部勾选
- 借助
${(JMeterThread.last_sample_ok} - 返回的是上一个取样器的执行结果,如果执行通过,返回true那么下一个取样器才可以正常执行;反之,下—个取样器就不执行:
2.9.2 ForEach控制器
- 作用: ForEach控制器一般和用户定义的变量一起使用,在用户自定义变量中读取一系列相关的变量。
- 位置逻辑控制器---->foreach控制器
- 使用方式
- 1.设置用户定义变量
- 2.配置foreach控制器
- 1.输入变量名前缀:name
- ⒉.开始循环字段(不包含):
- 3.结束循环字段(包含):
- 4.输出的变量名称:指用户定义的变量通过foreach控制器后,新名称
- 3.使用foreach控制器输出的变量
${新名称} - 4.ForEach 控制器->HTTP请求
- 5.则试计划->察看结果树
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rqrEmy4S-1632044306501)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1632042178867.png)]](https://img-blog.csdnimg.cn/ab0bae79a1cb4de9a448b3b670c90bbb.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6JzGP9lL-1632044306501)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1632042290138.png)]](https://img-blog.csdnimg.cn/1ffc1508cced4bda9d9ac9ffcfd9cf64.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SSc5NJTW-1632044306501)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1632042356602.png)]](https://img-blog.csdnimg.cn/566e0ef96970428ab05219b8ffce0329.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w9BklKlE-1632044306502)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1632042414521.png)]](https://img-blog.csdnimg.cn/b897b58e3e674467a0bd9022b0c8eb46.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16)
2.9.3环控制器
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SelAzjlq-1632044306502)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1632042797091.png)]](https://img-blog.csdnimg.cn/cec70c6a7602453c81152747a4d3c62f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iXFhLM0i-1632044306502)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1632042836262.png)]](https://img-blog.csdnimg.cn/7f495ff0efbe42c8bddbbe965b10b653.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nEskRdeq-1632044306503)(C:\Users\jieliu666\AppData\Roaming\Typora\typora-user-images\1632042858529.png)]](https://img-blog.csdnimg.cn/4acb20082f724e4a985b7936d28fbaa4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASlNvbiAgbGl1,size_20,color_FFFFFF,t_70,g_se,x_16)
day 03 jmeter中元件总结
3.1什么是元件
相同类似功能组件的集合称为元件
3.2 元件作用域
分类: 1.取样器是作用域的参考物,本身无所谓作用域的概念
2.以结果树为代表的大部分组件
3.以逻辑控制器为代表的组件未注册只对子级取样器有效
3.3 元件执行顺序
在同一作用域范围内,test plan中的元件按照以下顺序执行:
-
config Elements—配置元件 -
Pre-porcessors----前置处理器 -
Timer—定时器 -
Sampler—取样器 -
Post-porcessors(除非Sampler得到的返回结果为空)—后置处理器 -
Assirtions(除非Sampler得到的返回结果为空)----断言 -
Listener(除非Sampler得到的返回结果为空)—监听器
注意: 不会因为在脚本中的放置顺序而改变其执行顺序;如果在一个脚本中有多个同类型的元件,他们的执行顺序是按在脚本中的排序执行的
day04 分布式
4.1 jmeter分布式步骤
- 执行机
- 获取本机IP,将IP写在jmeter配置文件中,
remote_hosts=lP:1099 - 执行机需要关闭防火墙和其他网卡
- 执行机打开
jmeter-server.bat 文件 - 控制机
- 将执行机的ip写入到配置文件中
remote_hosts=lP:1099 ,如果有多个,用逗号隔开 - 如果控制机需要执行脚本,那么,需要打开
jmeter-server.bat - 注意事项
- 执行中也需要放置jmeter脚本,并且放置路径要和控制机的一致
- 控制机和执行机在同一个网段下
- jmeter版本和ava版本一致
4.2 非GUI模式运行
- 在命令行模式下运行jmeter脚本,默认在jmeter/bin目录下去寻找脚本,将执行结果和测试报告保存在
- bin目录下如果想运行其他目录下的脚本,或将结果和测试报告保存在其他目录下,那么需要指定完整路径
4.3 性能指标解读:
- Average :单个请求的平均响应时间
- Median :中位数,也就是50%用户的响应时间
- 90%Line : 90%用户的响应时间
- 95%Line : 95%用户的响应时间
- 99%Line : 99%用户的响应时间
- Min :最小的请求响应时间
- 平均值的困扰个别极端结果对实际性能数据的干扰
- %Line更能客观反映实际性能情形
- Error ~
4.4 jmeter静默压测
-
静默->脱离UI运行JMeter压测 -
好处∶命令运行更容易“搞事情" -
命令格式:jmeter -n -t $jmx_file -l $jtl_file -h 帮助 -> 打印出有用的信息并退出 -n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter -t 测试文件 -> 要运行的 JMeter 测试脚本文件 -l 日志文件 -> 记录结果的文件 -r 远程执行 -> 启动远程服务 -H 代理主机 -> 设置 JMeter 使用的代理主机 -P 代理端口 -> 设置 JMeter 使用的代理主机的端口号 -
jmx JMeter压测程序脚本文件,压测控制过程记录在jmx文件中 -
jtl文件是JMeter压测请求响应数据的原始文件 -
压测报告的生成
|