Jmeter性能测试工具使用

本文详细介绍如何使用JMeter进行压力测试,包括下载安装、基本配置、线程组、HTTP请求、CSV数据文件、HTTP信息头管理器、HTTP Cookie管理器、结果查看、聚合报告等内容,以及如何利用数据库配置提高测试效率。

什么是压力测试

顾名思义:压力测试,就是 被测试的系统,在一定的访问压力下,
看程序运行是否稳定/服务器运行是否稳定(资源占用情况)
比如: 2000个用户同时到一个购物网站购物,这些用户打开页面的速度是否会变慢,或者网站是否会奔溃

1.下载地址

http://jmeter.apache.org/download_jmeter.cgi

历史版本选择,下图,进入后选择binaries目录,本文使用5.1.1版本
在这里插入图片描述
但不知为何,打不开;

2.运行

下载后,解压,执行bin目录下的jmeter.bat ,切换语言

在这里插入图片描述

3.使用

(1)添加线程组
测试计划上右键->添加->线程(用户)->线程组
在这里插入图片描述
主要参数(线程属性):

线程数: 启用线程数(模拟用户数,如200)

Ramp-Up时间(秒): 设置线程需要多长时间全部启动。如果线程数为200 ,准备时长为10 ,
那么需要1秒钟启动20个线程。也就是每秒钟启动20个线程。

循环次数: 每个线程发送请求的次数(如10,总请求数=200*10),如果勾选了“永远”,
那么所有线程会一直发送请求,直到选择停止运行脚本

(2)添加HTTP请求
线程组右键->添加->取样器->http请求
在这里插入图片描述
参数配置参考下图: 参数写法 ${xx}

POST方式  (主要配置-> 协议:http , 服务名称或ip ,端口号 , 方法:post , 路径: 请求地址 , 内容编码: utf8 )

post方式,参数需要放到消息体数据页,字符串两边要加引号,不然报错当做参数解析了,json格式用{} ,列表用[],可以把${xx}替换死数据先测试一波
在这里插入图片描述GET方式 (配置同post)

方法切换为GET就行, 但是参数设置要在参数页, 而且此工具,如果消息体数据 有内容,参数是无法切换的,需要先删除,或者从头新建一个线程组,低版本会提示清除参数,此版本不提示,按钮不能点击; 如果是文本参数,需要勾选编码,避免出现参数乱码
在这里插入图片描述(3)添加CSV数据文件
http请求->添加->配置元件->CSV数据文件设置

用于从文件读取批量参数(也可以配置从数据库读取),文本参数也可以json格式字符串,服务器名称或ip,端口,路径等都可以从文本配置读取,此处详细列一种,其他自行百度学习配置
https://blog.youkuaiyun.com/liangyoufei/article/details/83690753

在这里插入图片描述
文本参数内容(可以使用excel生成,导出为csv或txt):
在这里插入图片描述
文件名 : 数据文件,CSV,文本等均可
变量名称: 对应文本参数行数据的字段,逗号隔开
忽略首行: 如果数据文本内容是头行数据(第一行是参数名称),设置为true ,
参数可以设置成json字符串, 变量名称可以留空,消息体数据可以写 ${参数名称}
在这里插入图片描述

(4)添加http信息头管理器
http请求->添加->配置元件->http信息头管理器

用于给请求,天加请求头参数,如 content-type : application/json , CSRF-TOKEN : xxxx (csrf攻击验证字符串)

(5)添加http Cookie管理器
同(4) ,如 SESSIONID : xxx
在这里插入图片描述
配置的cookie内容可以在浏览器F12查看 :
在这里插入图片描述

(6)添加查看结果树
http请求->添加->监听器->察看结果树

可以看到请求发送,以及取样器结果,请求,相应数据, 如果参数乱码,可能是参数csv或txt文件使用的文本编码不对,用notepad++或其他工具转换格式为utf-8即可
在这里插入图片描述在这里插入图片描述在这里插入图片描述

(7)添加聚合报告
http请求->添加->监听器->聚合报告

可以看到,样本即50个线程每个发送10个请求合计500个请求,平均响应时间596毫秒, 请求无异常, 吞吐量每秒60.2个请求
在这里插入图片描述其他高级玩法,待学习后补充…

补充数据库配置: post请求参数数据量过大,采用文本内容不方便生产, 因此使用数据库数据,如下
在这里插入图片描述
线程组->添加配置元件->JDBC Connection Configuration :
在这里插入图片描述线程组->取样器->JDBC Request :

在这里插入图片描述JDBC Request->监听器->察看结果树 :

在这里插入图片描述返回数据库列表结果;

将数据库返回结果列表用于请求参数 :
线程组->逻辑控制器->循环控制器

循环控制器->配置元件->计数器 :
在这里插入图片描述为所有输入参数建立计数器;

创建函数助手对话框(一个输入参数一个框)
在这里插入图片描述
例如 : gbHeaderId_${N} , N为计数器记录的数据库数据行号,
行数据被转化成gbHeader_1 , gbHeader_2 … ( gbHeader_# 表示最大记录 )
在这里插入图片描述
将生成的函数字符串粘贴到HTTP请求参数 消息体数据:
(http请求建立在循环控制器下,其下有查看结果树,聚合报告,其他不用线程组可以占时关闭)
在这里插入图片描述
运行测试即可;

PS :
一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。
单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。
系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间

    QPS(TPS):每秒钟request/事务 数量
    并发数: 系统同时处理的request/事务数
    响应时间:  一般取平均响应时间

(很多人经常会把并发数和TPS理解混淆)
理解了上面三个要素的意义之后,就能推算出它们之间的关系:
QPS(TPS)= 并发数/平均响应时间

### Apache JMeter 性能测试使用教程 Apache JMeter 是一款功能强大的开源性能测试工具,支持多种协议和服务的测试。以下内容将详细介绍如何使用 JMeter 进行性能测试。 #### 1. 安装与启动 JMeter 的安装过程简单直接,只需下载并解压二进制压缩包即可完成安装[^1]。确保系统中已正确配置 JDK 环境(版本要求在 1.6 或更高)。启动 JMeter 时,根据操作系统选择相应的启动脚本: - **Linux/Mac**: 在终端中运行 `./jmeter.sh`。 - **Windows**: 双击 `jmeter.bat` 文件[^3]。 启动后,JMeter 将打开图形化用户界面 (GUI),用于创建和管理测试计划。 #### 2. 创建测试计划 测试计划是 JMeter 中的核心概念,它定义了整个测试的结构和流程。以下是创建测试计划的基本步骤: - **创建线程组**:右键单击测试计划 -> 添加 -> 线程(用户) -> 线程组。线程组用于模拟并发用户负载,可以通过设置线程数、循环次数等参数来控制负载条件[^3]。 - **定义用户变量**:选中线程组 -> 右键添加 -> 配置元件 -> 用户定义的变量。通过此步骤可以定义测试过程中需要使用的全局变量[^4]。 #### 3. 配置采样器 采样器用于定义要测试的目标资源或服务。常见的采样器类型包括 HTTP 请求、数据库查询、FTP 操作等。以 HTTP 请求为例: - 右键单击线程组 -> 添加 -> 采样器 -> HTTP 请求。 - 在弹出的窗口中,填目标服务器的详细信息,例如 URL、方法(GET/POST)、请求头等。 #### 4. 添加监听器 监听器用于收集和展示测试结果。常用的监听器包括“查看结果树”、“聚合报告”等。 - 右键单击线程组 -> 添加 -> 监听器 -> 查看结果树。 - 运行测试后,可以在监听器中查看详细的响应数据和性能指标[^2]。 #### 5. 执行测试 点击工具栏上的绿色三角按钮即可启动测试。测试完成后,可以通过监听器分析结果,并根据需要调整线程组或采样器的配置。 #### 6. 高级功能 JMeter 提供了许多高级功能以满足复杂的测试需求,例如: - **录制脚本**:通过 HTTP(S) 测试脚本录制器捕获用户的操作行为,自动生成测试计划[^1]。 - **分布式测试**:利用多台机器协同工作,模拟更大规模的并发负载[^2]。 ```python # 示例代码:简单的 JMeter 脚本生成逻辑 import os def start_jmeter(platform): if platform == "linux": os.system("./jmeter.sh") elif platform == "windows": os.system("jmeter.bat") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值