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"等连接错误
  • 测试建议:保持默认"继续"设置以完整测试系统稳定性
相关推荐
宇文诸13 小时前
jmeter-beanshell学习17-上传文件接口删请求头
学习·jmeter
se-tester14 天前
JMeter、Postman 和 SoapUI 在做接口测试上的优势和缺点
测试工具·jmeter·接口测试·postman·soapui
feathered-feathered15 天前
测试实战【用例设计】自己写的项目+功能测试(1)
java·服务器·后端·功能测试·jmeter·单元测试·压力测试
质量保障小乔20 天前
JMeter+Jenkins+AI自动化测试
jmeter
装不满的克莱因瓶21 天前
Java高并发异步请求实战,Jmeter暴力压测下的解决方案
jmeter·线程池·多线程·并发·resttemplate·qps·压测
在坚持一下我可没意见1 个月前
ideaPool论坛系统测试报告
java·spring boot·功能测试·selenium·jmeter·mybatis·压力测试
linweidong1 个月前
别让老板等:千人并发下的实时大屏极致性能优化实录
jmeter·clickhouse·性能优化·sentinel·doris·物化视图·离线数仓
CesareCheung1 个月前
JMeter核心组件使用方法及场景大全
jmeter
我会一直在的1 个月前
Jmeter的基础使用
功能测试·jmeter·压力测试