JMeter

一、JMeter介绍与安装

1、JMeter介绍

JMeter是一款能够模拟多个用户并发请求的测试工具;不仅支持性能测试(多用户并发),单用户模式时可作为接口测试工具使用

2、JMeter安装

安装网站:Jmeter安装URL

安装方式:JMeter是解压即用软件,解压后无需额外安装步骤

存放位置:我放在了D盘

3、配置Java环境变量并修改JMeter语言

前提条件:JMeter需要Java运行环境,必须提前配置好Java环境变量

双击jmeter.bat,打开JMeter

修改JMeter语言

用记事本打开

把其中"#language=en"换成"language=zh_CN",Ctrl+S保存

二、性能测试案例

1、准备工作
python 复制代码
import pymysql
from flack import Flask,request

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'


@app.route('/hello')
def hello_world1():
    return 'Hello World! aaa'


@app.route('/hello/<username>')
def hello_world2(username):
    print(username)
    return 'Hello World! aaa' + username

@app.route('/hello/args/<username>')
def hello_world3(username):
    print(username)
    key = request.args.get('key', '')
    value = request.args.get('value', '')
    print(key)
    print(value)
    return 'Hello World! aaa' + username + ':::' + key + '::' + value


@app.route("/mypost", methods=['post'])
def my_post():
    return "post request"

@app.route("/mypost1", methods=['post'])
def my_post1():
    # 表单数据类型
    username = request.form['username']
    sex = request.form['sex']
    print(username)
    print(sex)
    return "post request" + username + "::" + sex


@app.route("/mypost2", methods=['post'])
def my_post2():
    # json数据格式
    request_data = request.get_json()
    print(request_data)
    print(request_data['user'])
    return "post request" + str(request_data)

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=5000)
2、使用JMeter发送get请求
3、使用JMeter发送post请求
(1)发送post请求
(2)发送JSON格式post请求

注意:HTTP信息头管理器配置

(3)多线程组解决方案
  • 隔离方案:
    • 为不同格式请求创建独立线程组
    • 每个线程组可配置专属HTTP信息头管理器
  • 表单参数特殊处理:
    • 勾选"对POST使用multipart/form-data"选项
    • 或使用独立线程组避免头信息冲突
4、响应数据乱码问题
  • 在内容编码处明确指定utf−8
  • 保持"自动重定向"选项不勾选
  • 这样能确保请求和响应中的中文字符都能正确显示

三、JMeter模拟多用户同时发送请求

1、用户定义变量与逻辑分支控制
(1)用户定义变量
(2)逻辑分支控制

可以添加变量ifrun------true( 第一种情况,直接写一个变量值${ifrun})

第二种情况

将post3放到if控制器下面

2、JMeter模拟多用户的并发请求
(1)线程数
  • 定义:表示模拟的用户数量,如设置为2则表示2个用户同时执行测试脚本。
  • 验证方法:在查看结果树中可以看到每个用户执行的请求记录,如2个用户会分别执行post1、post2、post3请求。
  • 实际应用:测试时可根据需要设置为10个或更多用户,后端服务会接收到对应数量的请求。
(2)Ramp-Up时间
  • 定义:控制所有并发用户启动的时间间隔,如10个用户设置10秒表示每秒启动1个用户。
  • 效果对比:
    • 设置1秒:所有用户快速启动
    • 设置20秒:用户缓慢启动,每2秒启动1个
  • 测试建议:通常保持默认1秒设置,让用户尽快启动进
(3)循环次数
  • 默认值:1表示每个用户只执行1次脚本
  • 多次循环:设置为2时,每个用户会执行2次完整脚本
  • 持续压测:勾选"永远"选项会让脚本无限循环执行,直到手动停止
  • 观察方法:通过后端服务日志可以查看持续接收的请求情况
(4)在取样器错误后要执行的动作
  • 选项说明:
    • 继续:默认选项,出错后继续执行
    • 启动下一进程循环:重新执行当前循环
    • 停止线程:停止当前出错线程
    • 停止测试/立即停止测试:完全终止测试
  • 错误示例:当后端服务处理能力不足时,会出现"Address already in use"等连接错误
  • 测试建议:保持默认"继续"设置以完整测试系统稳定性
相关推荐
查拉图斯特拉面条1 天前
JMeter 实战技巧:JSON 数组筛选指定对象并剔除首尾大括号
jmeter·json
查拉图斯特拉面条1 天前
JMeter 实战:JSON 响应中文节点 + 数值精准断言(附真实接口案例)
jmeter·json
qq_4924484463 天前
Jmeter Transaction Controller(事务控制器) 的 TPS(每秒事务数)严格固定为 1
java·开发语言·jmeter
Rookie_hh3 天前
使用Jmeter进行性能测试
jmeter
qq_452396236 天前
第十四篇:《JMeter插件扩展:自定义函数与第三方插件》
开发语言·python·jmeter
qq_452396236 天前
第十三篇:《分布式压测:JMeter Master-Slave集群》
分布式·jmeter
qq_452396237 天前
第十一篇:《性能压测基础:JMeter线程模型与压测策略设计》
java·开发语言·jmeter
沫沫-小白7 天前
JMeter 上传固定文件时,如何修改 Content-Disposition 的 filename
jmeter
qq_452396238 天前
第六篇:《JMeter逻辑控制器:循环、条件和交替执行》
android·java·jmeter
qq_4523962310 天前
第四篇:《JMeter参数化:CSV数据文件与用户变量》
jmeter