采样器 / 取样器
采样器(取样器): 模拟用户操作,向服务器发出请求的组件;
v 采样器作用:向服务器发送请求,记录响应信息与响应时间;
v 常用采样器讲解:
v HTTP Request Sampler
v Debug Sampler
v BeanShell Sampler
JMeter 场景逻辑控制技术
1、利用JMeter 逻辑控制器
2、实现测试业务流程中的逻辑变化
3、模拟实际业务场景
监听器
用来动态的监控JMeter执行测试的过程,实时查看测试结果;
1、 常用监听器:
2、查看结果树
3、 聚合报告
4、后端监听器
定时器
顾名思义,定时器是用来控制采样器发出请求开始时间的组件
1、 常见定时器:
2、 固定定时器
3、高斯随机定时器
4、吞吐量定时器
5、并发定时器
1000毫秒 = 1秒
可以模拟思考时间
流量定时器:
并发定时器:
断言元件的使用
断言的作用就是让 JMeter 程序判断预期结果和实际结果是否一致,从而
判定请求是否成功
1、 常见断言:
2、响应断言
3、大小断言
4、XPath 断言
5、Json 断言
断言能不使用就不用,会影响jmeter的性能
常见配置元件剖析
1、配置元件的用途
2、常见的配置元件
3、配置元件的执行顺序
4、配置元件的作用范围/
5、 配置元件执行结果的查看
前置处理器
前置处理器
1、 在取样器发送请求之前执行,做一些准备工作,如设置参数、环境变量等
2、 常见前置处理器举例:
3、 Sample Timeout 前置处理器
4、 BeanShell 前置处理器
后置处理器
1、 后置处理器主要用于取样器执行后的提取数据操作;
2、常见的后置处理器:
3、 Json 数据提取器
4、 正则表达式数据提取器
5、XPath 数据提取器
JMeter 执行顺序
1、 JMeter 八大组件
2、 执行顺序
HTTP 请求属性设置
HTTP cookie 设置
Cookie manager
• 自定义cookie
• 配置项
HTTP 信息头管理器
HTTP 请求设置
监听器与测试结果
性能分析系统级别指标 io cpu mem net
io 指标监控命令 iostat
- 命令描述: 监控系统设备的IO负载情况
- 命令演示: iostat
io 指标监控命令 df
- 命令描述: 列出⽂件系统的整体磁盘空间使⽤情况
- 命令演示: df -h
cpu 指标监控命令 uptime
- 命令描述: 用于显示系统总共运行了多长时间和系统的平均负载
- 命令演示: uptime
cpu 指标监控命令 cat /proc/cpuinfo
- 命令描述: 查看CPU的配置信息
- 命令演示: cat /proc/cpuinfo
cpu 指标监控命令 mpstat
- 命令描述: 是一款常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所有CPU的平均指标
- 命令演示: mpstat
cpu 指标监控命令 sar
- 命令描述: 是一个Linux下的监控工具,可以用来监控CPU性能状况
- 命令演示: sar -u 1 1
mem 指标监控命令 cat /proc/meminfo
- 命令描述: 查看内存相关配置信息
- 命令演示: cat /proc/meminfo
mem 指标监控命令 vmstat
- 命令描述: 用来获得有关进程、内存、虚拟内存、页面交换空间及 CPU活动的信息
- 命令演示: vmstat
mem 指标监控命令 free
- 命令描述: 显示系统使用和空闲内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存
- 命令演示: free, free -g
net 指标监控命令 ping
- 命令描述: 向目标系统发送报文,检测网络连通性的工具
- 命令演示: ping
net 指标监控命令 ifconfig
- 命令描述: 用于获取网卡配置与网络状态等信息
- 命令演示: ifconfig
net 指标监控命令 hostname
- 命令描述: 显示本机的hostname, 修改本机的hostname
- 命令演示: hostname
net 指标监控命令 netstat
- 命令描述: 用于显示各种网络相关信息,如网络连接,路由表,接口状态等
- 命令演示:
- netstat -an
- netstat -at
- netstat -au
- netstat -p
top 命令使用
top
- 命令描述: 实时的显示系统中各个进程的资源占用情况
- 统计信息: 前五行是系统的整体统计信息。
- 进程信息: 统计信息下方类似表格的区域显示的是进程的详细信息,默认5秒刷新一次。
- 命令演示: top
ps 命令
-
命令描述: ps是命令是 Process Status 的缩写,linux下最常用的进程查看命令;
-
使用技巧:
- 可以配合管道命令 | 和查找命令 grep 同时执行来查看特定进程。
- 可以配合管道命令 | 和文本分析命令 awk 同时执行来定位具体进程参数值
-
命令演示:
- ps
- ps -aux
- ps -ef
- ps -ef | grep | awk
nmon 工具
JMeter 变量与引用
使用变量进行参数化测试
参数化测试
1、 用户自定义参数化
2、 CSV 导入参数化
JMeter 参数化 csv
• CSV 数据准备
• 导入CSV 文件
JMeter 参数化 xml
参数化 - xml
• 条件:请求响应结果格式为XML
• 目标:需要提取XML中的某个参数的值
参数化 - xml
• 方法:利用JMeter 正则表达式提取器,提取xml对应参数值
• Demo: 提取orderId值
JMeter 参数化 json
参数化 - json
• 条件:请求响应结果格式为json
• 目标:需要提取json中的某个参数的值
参数化 - json
• 方法:利用JMeter JSON 提取器,提取对应参数值
• Demo: 提取city值
JMeter 参数化 yaml
参数化 - yaml
• 条件:请求响应结果格式为yaml
• 目标:需要提取yaml中的某个参数的值
JMeter 参数化 redis
参数化 - redis
• 关于Redis: 一种开源的内存数据结构存储,用作数据库,缓存和
消息代理。
• 目标:在JMeter中提取Redis中的数据参数值,驱动压测运行
参数化 - redis
• 前置条件:已安装JMeter Plugin Manager
• 插件安装:Redis Data Set
参数化 - redis
• 实战数据准备:在Redis 数据库中插入list类型的参数,输入三个成
员值
参数化 - redis
• 方法: JMeter中添加Redis Data Set, 配置读取Redis 参数值
JMeter 参数化 mysql
参数化 - mysql
• JDBC 连接池配置
• mysql 读数据
JMeter 并发策略
用户并发类型
• 同时在线 – 日常场景
• 同时刷单 – 秒杀场景
• 两种并发场景的区别
• 并发策略 Demo
20个并发:同时在线的场景,但不一定是同时刷的情况
模拟同时刷的场景:
等待3s时间,20个并发建立完成后再统一发出
可能会有1-2毫秒的误差
JMeter WebService 测试
性能监控系统价值
搭建服务端性能监控系统 Prometheus
Prometheus 系统
• Prometheus是一种由go语言(golang)开发的开源监控、报警系统
• 部署方法: Docker 部署
• 准备prometheus.yml配置文件
• 下载docker 镜像: docker pull prom/prometheus
• 启动docker容器: docker run -d --name prometheus -p 9090:9090 -v
:/etc/prometheus prom/prometheus
Prometheus 系统
• 访问验证 http://:9090/targets
搭建数据分析系统 Grafan
性能监控平台部署 - Grafana
• Grafana是用于可视化大型测量数据的开源程序,它提供了强大和优雅
的方式去创建、共享、浏览数据。
• 部署方法: Docker 部署
• 下载镜像: docker pull grafana/grafana
• 启动镜像: docker run -d -p 3000:3000 --name=
-v :/var/lib/grafana grafana/grafana
性能监控平台部署 - Grafana
• 访问 Grafana 的控制台链接, http://localhost:3000/ 验证它已
经运行正常
• 默认用户名/密码:admin / admin,登录之后请跳过修改密码
JMeter 实时压测结果收集