Mushroom Notes Mushroom Notes
🍄首页
  • JavaSE

    • 基础篇
    • 数据结构
    • IO流
    • Stream流
    • 函数式接口
    • JUC
    • 反射
    • 网络编程
    • 设计模式
  • JavaEE

    • Servlet
    • JDBC
    • 会话技术
    • 过滤器监听器
    • 三层架构
  • JDK

    • 总览
  • JVM

    • 总览
  • 常用mate
  • CSS
  • JavaScript
  • rds 数据库

    • MySQL
    • MySQL 进阶
    • MySQL 库表规范
  • nosql 数据库

    • Redis
    • Redis 进阶
    • Redis 底层
    • MongoDB
  • Spring生态

    • Spring
    • Spring MVC
    • Spring boot
    • Spring Validation
  • Spring Cloud生态

    • Spring Cloud
    • 服务治理
    • 远程调用
    • 网关路由
    • 服务保护
    • 分布式事务
    • 消息中间件
  • 数据库

    • Mybatis
    • Mybatis Plus
    • Elasticsearch
    • Redisson
  • 通信

    • Netty
📚技术
  • 方案专题
  • 算法专题
  • BUG专题
  • 安装专题
  • 网安专题
  • 面试专题
  • 常用网站
  • 后端常用
  • 前端常用
  • 分类
  • 标签
  • 归档

kinoko

一位兴趣使然的热心码农
🍄首页
  • JavaSE

    • 基础篇
    • 数据结构
    • IO流
    • Stream流
    • 函数式接口
    • JUC
    • 反射
    • 网络编程
    • 设计模式
  • JavaEE

    • Servlet
    • JDBC
    • 会话技术
    • 过滤器监听器
    • 三层架构
  • JDK

    • 总览
  • JVM

    • 总览
  • 常用mate
  • CSS
  • JavaScript
  • rds 数据库

    • MySQL
    • MySQL 进阶
    • MySQL 库表规范
  • nosql 数据库

    • Redis
    • Redis 进阶
    • Redis 底层
    • MongoDB
  • Spring生态

    • Spring
    • Spring MVC
    • Spring boot
    • Spring Validation
  • Spring Cloud生态

    • Spring Cloud
    • 服务治理
    • 远程调用
    • 网关路由
    • 服务保护
    • 分布式事务
    • 消息中间件
  • 数据库

    • Mybatis
    • Mybatis Plus
    • Elasticsearch
    • Redisson
  • 通信

    • Netty
📚技术
  • 方案专题
  • 算法专题
  • BUG专题
  • 安装专题
  • 网安专题
  • 面试专题
  • 常用网站
  • 后端常用
  • 前端常用
  • 分类
  • 标签
  • 归档
  • Linux

  • Docker

  • Nginx

  • Maven

  • 文件存储

  • 压测

    • Jmeter
      • 环境搭建
        • 安装
        • 启动
      • 基本使用
        • 快速入门
        • 并发执行与顺序执行
        • 线程组常用属性配置
        • HTTP请求默认值
        • HTTP信息头管理器
        • 参数化
        • 用户定义变量
        • CSV 数据文件设置
        • 直连MySQL数据库
        • 断言
        • 响应断言
        • 大小断言
        • 断言持续时间
      • 性能测试
        • 高并发
        • 高频率
      • 图形化测试报告
      • 概念相关
        • 线程组
        • 结果树
  • Git技巧

  • GitHub技巧

  • 知识碎片

  • 技术
  • 压测
kinoko
2023-12-18
目录

Jmeter

# 环境搭建

# 安装


  1. 下载:https://jmeter.apache.org/download_jmeter.cgi (opens new window)
  2. 解压到文件夹
  3. 修改编码集:修改bin目录下的 jmeter.properties
##sampleresult.default.encoding=ISO-8859-1
1

找到这行代码,取消注释并将ISO-8859-1改为UTF-8

# 启动


image.png

# 基本使用

# 快速入门


  1. 创建线程组
    image.png
  2. 添加取样器
    image.png
  3. 配置取样器的请求地址与请求参数
    image.png
  4. 如果需要设置请求头则右键HTTP请求配置HTTP信息头管理器
  5. 添加监听器 - 查看结果树
    image.png
  6. 点击绿色箭头启动测试

# 并发执行与顺序执行


并行执行:
image.png
顺序执行:选择测试计划 -> 下方勾选独立运行每个线程组
image.png
image.png

# 线程组常用属性配置


image.png

线程数:几个人 循环次数:每个人请求几次

# HTTP请求默认值


操作路径

右键测试计划 -> 添加 -> 配置元件 -> HTTP请求默认值

可以配置该分组下的一些默认HTTP采样器配置
image.png

# HTTP信息头管理器


操作路径

右键测试计划 -> 添加 -> 配置元件 -> HTTP信息头管理器

配置HTTP请求头信息,如token、content-type等
image.png

# 参数化

# 用户定义变量


操作路径

右键测试计划 -> 添加 -> 配置元件 -> 用户定义的变量

字面意思,定义变量,可复用
image.png
使用方式:${变量名}
image.png

# CSV 数据文件设置


操作路径

右键测试计划 -> 添加 -> 配置元件 -> CSV 数据文件设置

可以批量执行准备好的数据

CSV文件格式:
image.png

注意:要以UTF-8编码输出/保存文件

具体设置:
image.png
将线程组的循环次数设置为永远
image.png
因为是一行行读的,这里不设置永远的话读完一行就结束了

# 直连MySQL数据库


下载mysql jdbc驱动包。jmeter要连接mysql数据库,首先得下载mysql jdbc驱动包,尽量保证其版本和你的数据库版本一致,至少不低于数据库版本,否则可能有问题。
官网下载地址为:https://dev.mysql.com/downloads/connector/j/ (opens new window)
image.png

导入连接池jar包:
image.png
配置数据库连接池:

操作路径

右键测试计划 -> 添加 -> 配置元件 -> JDBC Connection Configuration

image.png

Variable Name:数据库连接池的名称,在JDBC Request中会用到;

Database URL:数据库URL,jdbc:mysql:// IP地址:端口/库名;

JDBC Driver Class:JDBC驱动;

Username:数据库用户名;

Password:数据库密码;

添加JDBC请求取样器:

操作路径

右键测试计划 -> 添加 -> 取样器 -> JDBC Request

image.png

# 断言


响应断言:断言状态码和响应体

大小断言:判断响应内容的字节长度

断言持续时间:判断响应时间

# 响应断言


操作路径

右键取样器 -> 添加 -> 断言 -> 响应断言

image.png
解释:(以测试模式下的内容为例)

注意

  • 包括: 包含a和b
  • 匹配: 正则匹配a和b
  • 相等: 完全等于a和b
  • 否: 结果取反
  • 或者: 存在多测试模式时,取或,如包含a或b

# 大小断言


操作路径

右键取样器 -> 添加 -> 断言 -> 大小断言

image.png

注意比较的是测试字段的大小,而非值

# 断言持续时间


操作路径

右键取样器 -> 添加 -> 断言 -> 断言持续时间

image.png

# 性能测试

# 高并发


JMeter中内置了定时器,可以实现时间模式相关的性能测试

场景

需求:同一时刻100个请求去访问一个接口,统计高并发情况下平均响应时间以及错误率(高并发)

  1. 搭建框架,测试计划,线程组,取样器,结果树(局限性),指定线程组的线程数属性为100
  2. 添加定时器synchronizing timer(集合点组件)
  3. 运行并查看结果:聚合报告组件,可以对结果汇总分析

指定线程组的线程数为100
image.png
创建同步定时器组件

操作路径

右键取样器 -> 添加 -> 定时器 -> synchronizing timer

image.png

作用:可以理解成一趟车的座位数,坐满才发车,比如100人,100座,那就是一趟车;

如果是100人,30座,三趟车下来还剩10人,坐不满,这时等待超时时间如果是0,则会一直等待,所以一般不建议将超时时间设置为0,可能会出现线程傻等的情况

添加聚合报告

操作路径

右键测试计划 -> 添加 -> 监听器 -> 聚合报告

image.png

主要关注的就是异常率和吞吐量,其次是平均响应时间

# 高频率


场景

需求:一个用户以20QPS(20次/s)的频率访问一个接口,持续15秒,统计服务器的平均响应时间
QPS:Query per Seconds每秒钟查询数(查询率),每秒访问多少次服务器

  1. 搭建框架,测试计划,线程组,取样器,结果树,根据题干计算:循环次数=访问频率*持续时间
  2. 添加QPS访问频率控制的相关组件:每分钟访问次数=访问频率*60

指定线程组的循环次数
image.png
创建常量吞吐量定时器

操作路径

右键取样器 -> 添加 -> 定时器 -> Constant Throughput timer

image.png
添加聚合报告

操作路径

右键测试计划 -> 添加 -> 监听器 -> 聚合报告

image.png

主要关注的就是异常率和吞吐量,其次是平均响应时间

# 图形化测试报告


在JMeter中可以以图形化(饼状图、柱状图...)的方式显示脚本运行结果,较之于聚合报告或查看结果树组件实现更直观,用户体验更友好。

提示

生成图形化测试报告命令:jmeter -n -t 脚本文件 -l 日志文件 -e -o 目录

  • -n 无图形化运行
  • -t 被运行的脚本
  • -l 将运行信息写入日志文件
  • -e 生成测试报告
  • -o 指定报告输出目录

注意

  1. 日志文件可以事先不创建,如果日志文件存在需要保证内容为空,否则会报错
  2. 如果没有配置环境变量,则需要在bin目录下执行

示例:jmeter -n -t post1.jmx -l test.txt -e -o ./log

image.png
出现end of run 则是运行完毕
image.png
最后在指定的目录下会生成这么些文件,打开其中的index.html
image.png
得到图形化报告

# 概念相关

# 线程组


进程:正在进行的程序
线程:进程中的执行单位
线程组:进程中有许多线程,为方便管理,可以对线程按照性质分组,分组的结果就是线程组

三者关系:一个进程包含多个线程组,一个线程组可以包含多个线程

特殊线程组

  • setup线程组:最优先执行的线程组
  • teardown线程组:最后执行的线程组

# 结果树


在哪个线程组获取哪个线程组的执行结果

#jmeter#测试#压测
上次更新: 2024/01/31 17:19:54
Minio
常用Git命令清单

← Minio 常用Git命令清单→

最近更新
01
JVM 底层
09-13
02
JVM 理论
09-13
03
JVM 应用
09-13
更多文章>
Theme by Vdoing | Copyright © 2022-2024 kinoko | MIT License | 粤ICP备2024165634号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式