Apache JMeter 5.6.3压力测试步骤详解

Apache JMeter 5.6.3压力测试步骤详解

  • 压力测试简介
    • 软件测试概述
    • 性能测试
    • 性能测试指标
    • 性能指标推算web资源公式
  • 1. 安装 Jmeter
  • 2. 创建测试任务
    • 2.1 创建线程组
    • 2.2 创建 HTTP 请求
    • 2.3 添加HTTP消息头管理器
  • 3.添加查看结果监听器
  • 4. 执行测试
  • 5. 查看结果
  • 6. 非GUI模式测试
  • 7. 使用csv对于一个接口测试不同参数

压力测试简介

软件测试概述

软件测试描述了一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

性能测试

性能测试通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。

  • **负载测试:**模拟实际软件系统所承受的负载条件的系统负荷,通过不断加载(如逐渐增加模拟用户的数量)或其它加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(如CPU、内存)等,以检验系统的行为和特性,以发现系统可能存在的性能瓶颈、内存泄漏、不能实时同步等问题。负载测试更多地体现了一种方法或一种技术。

  • **压力测试:**在强负载(大数据量、大量并发用户等)下的测试,查看应用系统在峰值使用情况下操作行为,从而有效地发现系统的某项功能隐患、系统是否具有良好的容错能力和可恢复能力。压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。

性能测试指标

  • **RPS(Request Per Second):**每秒处理请求数(处理开始到处理结束 中间时间成为响应时间)可以通过测试工具 模拟多线程访问某个http计算 jmeter中是通过聚合报告的throughput(吞吐量)查看 不同的系统由于CPU 内存 磁盘 网络的限制 rps(吞吐量重要指标)也就不同

  • **QPS/TPS(Query/Transaction Per Second):**每秒查询或者事务数每个请求可能是基于查询或者修改目的 请求被分为查询请求和事务请求一般互联网系统QPS>TPS可以说RPS是QPS和TPS的总和

  • **PV/UV:**网站流量是指网站的访问量,用来描述访问网站的用户数量以及用户所浏览的网页数量等指标,常用的统计指标包括网站的独立用户数量、总用户数量(含重复访问者)、网页浏览数量、每个用户的页面浏览数量、用户在网站的平均停留时间等。网站访问量的常用衡量标准:独立访客(UV) 和 综合浏览量(PV),一般以日为单位来衡量和计算。

    • **独立访客(UV):**指一定时间范围内相同访客多次访问网站,只计算为1个独立访客。
    • **综合浏览量(PV):**指一定时间范围内页面浏览量或点击量,用户每次刷新即被计算一次。
  • **并发量:**就是同一时刻服务器在同时处理多少个请求 QPS=(同一时刻

处理的请求 也就是并发量)/响应的时间,一个系统吞吐量通常由QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降。

性能指标推算web资源公式

假设目前需求确定系统的平均日PV(多天pv总和/天数) 通过日PV可以推算:

网络带宽=平均日pv/246060页面的平均大小(峰值和平均流量倍数 一般是5)
假设平均日pv 100w 100w/(24-8)6060 【一天的总描述 除掉睡觉8个小时】 等于1s的pv =18
峰值流程可能是平均流程 5倍 秒pv(rps/qps/tps)=18 5 =90 最后乘 平均每个页面大小 假设是 50KB
最终带宽 =90
50KB=5M带宽

并发数= PV / 统计时间 * 页面衍生连接次数 * http响应时间 * 因数 / web服务器数量;
假设平均日pv 100w 100w、的秒pv(rps/qps/tps) 100w/(24-8)6060峰值倍数5 =18 5 =90
qps
平均响应时间 假设2s =90
2=180 假设一个访问派生的js /css /图片是 10个 就是 180*10=1800并发数

机器数=并发数/每 台机器能处理并发数
假设上面算出了日pv 100w需要1800并发数 单机能处理1000个并发 需要 1800/1000=2台机器

QPS=( 总PV数 ) / ( 每天秒数 【除掉8个小时睡觉时间】 ) = 每秒请求数(QPS)

峰值QPS=( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间
100w 总pv 峰值qps= (100w0.8)/(2460600.2)=80w/17,280=47qps
使用qps计算机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器

1. 安装 Jmeter

  1. 安装 Jmeter 之前需要先安装好 JDK 环境 (1.8及以上)
  2. 下载 Jmeter 安装包(压缩包,windows 环境为 zip 格式):https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.6.3.zip
  3. 解压安装包,进入 bin 目录,点击 jmeter.bat 启动 Jmeter。

image-20240115145507591

image-20240115145753187

2. 创建测试任务

2.1 创建线程组

即设置虚拟用户数

image-20240115150003113

image-20240115150248194

  • 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
  • Ramp-up就是每个线程的执行时间间隔,0表示并发
  • 循环次数:每个线程发送请求的次数。如果线程数为 10,循环次数为 100,那么每个线程发送 100 次请求。总请求数为 10*100=1000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
  • Delay Thread creation until needed:直到需要时延迟线程的创建。
  • 调度器配置:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远
    调度器配置参数:
  • 持续时间(秒):测试持续时间,会覆盖结束时间
  • 启动延迟(秒):测试延迟启动时间,会覆盖启动时间

2.2 创建 HTTP 请求

创建的线程组后,在创建的线程组基础上,点击添加 HTTP 请求:

image-20240115151220046

image-20240115152148249

  1. Web服务器
  • 协议:向目标服务器发送 请求协议,可以是 HTTP 或 HTTPS,默认为 HTTP
  • 服务器名称或 IP :HTTP 请求发送的目标服务器名称或 IP
  • 端口号:目标服务器的端口号,默认值为 80
  1. HTTP 请求
  • 方法:发送 HTTP 请求的方法,可用方法包括 GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE 等。
  • 路径:目标 URL 路径(URL中去掉服务器地址、端口及参数后剩余部分)
  • 内容编码 :编码方式,默认为 ISO-8859-1 编码,可以配置为 utf-8
  1. 参数

在请求中发送的 URL 参数,用户可以将 URL 中所有参数设置在本表中,表中每行为一个参数(对应URL中的 name=value)

2.3 添加HTTP消息头管理器

如果需要请求头中添加参数,可添加HTTP消息头管理器

image-20240115153517906

3.添加查看结果监听器

添加察看结果树

image-20240115152319792

添加聚合报告

4. 执行测试

image-20240115152944345

5. 查看结果

聚合报告

image-20240115165013706

  • Label:每个JMeter的element的Name值,例如HTTP Request的Name;
  • 样本:发出请求数量;模拟1000个用户,循环100次,所以显示了2000;
  • 平均值:平均响应时间(单位:ms);默认是单个Request的平均响应时间,当使用了Transaction Controller时,也可以以Transaction为单位显示平均响应时间;
  • 中位数:50%的用户响应时间小于这个值;
  • 95%百分位:95%的用户响应时间小于这个值;
  • 99%百分位:99%的用户响应时间小于这个值;
  • 最小值:用户响应时间最小值;
  • 最大值:用户响应时间最大值;
  • 异常%:测试出现的错误请求数量百分比;请求的错误率 = 错误请求的数量/请求的总数;若出现错误就要看服务端的日志查找定位原因;
  • 吞吐量:Throughput简称TPS,吞吐量,默认情况下表示每秒处理的请求数,也就是指服务器处理能力,TPS越高说明服务器处理能力越好;
  • 接收KB/sec:每秒从服务器端接收到的数据量
  • 发送KB/sec:每秒发送到服务器端的数据量

6. 非GUI模式测试

  1. 进入jemter工具的bin目录下,输入cmd进行命令行

image-20240117110009914

  1. 编写执行测试计划
jmeter -n -t <测试JMX文件> -l <测试报告文件> -e -o <输出文件夹的路径>

**-n:**非GUI模式执行JMeter

**-t :**执行测试文件所在的位置

**-l :**指定生成测试结果的保存文件,.jtl文件格式

**-e:**测试结束后,生成测试报告

**-o:**指定测试报告的存放位置

**测试JMX文件:**测试用的.jmx文件路径

**测试报告文件:**必须是不存在的,否则会报错

**输出文件夹的路径:**手动创建存放报错的文件夹的路径,需要提前创建,每次运行前必须清空,否则会报错

 jmeter -n -t  D:\apache-jmeter-5.6.3\pdf测试计划.jmx -l pdf请求压力测试 -e -o  D:\apache-jmeter-5.6.3\report

3.执行测试计划

image-20240117110201054

4.查看生成的测试计划

进入设置的“输出文件夹的路径”,双击index.html

image-20240117110309204

image-20240117110402146

7. 使用csv对于一个接口测试不同参数

使用场景:例如使用不同的账号进行登录,使用不同id调用某个详情接口等

添加元件“CSV数据文件设置”

image-20240117102837910

image-20240117103309050

csv中存在两列数据,第一列是id,第二列为aid

image-20240117103328244

http请求中设置

image-20240117103754296

image-20240117105638893

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/330562.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS||Emmet语法

1、简介 ​ Emmet语法的前身是Zen coding,它使用缩写,来提高html/css的编写速度, Vscode内部已经集成该语法。 ​ 快速生成HTML结构语法 ​ 快速生成CSS样式语法 2、快速生成HTML结构语法 生成标签 直接输入标签名 按tab键即可 比如 div 然后tab 键&#xff0c; 就可以生成 <…

CSS 设置背景图片

文章目录 设置背景颜色设置背景图片背景图片偏移量计算原点背景图片尺寸设置背景图片位置设置背景图片重复方式设置背景范围设置背景图片是否跟随元素移动测试背景图片 本文概念部分参考&#xff1a;CSS背景background设置 设置背景颜色 background-color 设置背景颜色 设置…

UE5 独立程序的网络TCP/UDP服务器与客户端基础流程

引擎源码版&#xff0c;复制\Engine\Source\Programs\路径下的BlankProgram空项目示例。 重命名BlankProgram&#xff0c;例如CustomTcpProgram&#xff0c;并修改项目名称。 修改.Build.cs内容 修改Target.cs内容 修改Private文件夹内.h.cpp文件名并修改.cpp内容 刷新引擎 …

联想模拟器抓包

联想模拟器抓包 下载抓包工具配置代理并启动模拟器配置代理返回reqable查看抓包数据 下载抓包工具 reqable 配置代理并启动 模拟器配置代理 返回reqable查看抓包数据

定义公共样式css

index.less 文件 // 全局按钮颜色 btn_background: #005298; btn_border-color: #6fa18d;// 默认的 btn_border-color-highlight: #0598d3;// 高亮边框 btn_border-color-success: #36be7e;// 成功边框 btn_font_color: #fff;// 边框颜色 背景色 文字颜色 .btn_public(btn_bo…

外贸网站建设有哪些技巧?如何做海洋建站?

搭建外贸网站需要什么流程步骤&#xff1f;独立网站建站怎么做&#xff1f; 外贸网站的建设变得至关重要。一家成功的外贸企业需要一个强大而专业的在线存在&#xff0c;以便吸引国际客户。在这篇文章中&#xff0c;海洋建站将探讨一些关键的技巧&#xff0c;帮助您打造出色的…

Vg3225vfn压控晶体振荡器规格书

频率范围: 25mhz ~ 500mhz电源电压:3.3 V类型绝对拉力范围:50 10 6分钟。/ 25mhz至42.5 MHz50 MHz至85 MHz&#xff0c;100mhz ~ 170mhz:20 10 6最小&#xff0c;10 10 6分钟。/ 25mhz ~ 250mhz:10 10 6分钟。/ 250 MHz至500 MHz(85C最高)操作温度温度范围:-40℃~ 85℃温度…

低代码开发:解锁数字化转型新维度

在信息化浪潮中&#xff0c;企业正面临着前所未有的挑战与机遇。一方面&#xff0c;市场环境瞬息万变&#xff0c;业务需求迭代频繁&#xff0c;对快速应用开发提出了更高要求&#xff1b;另一方面&#xff0c;传统软件开发模式受限于高成本、长周期等瓶颈&#xff0c;难以满足…

C++、QT 数字合成游戏

一、项目介绍 数字合成游戏 基本要求&#xff1a; 1&#xff09;要求游戏界面简洁美观&#xff0c;且符合扫雷的游戏风格。 2&#xff09;需要有游戏操作或者规则说明&#xff0c;方便玩家上手。 3&#xff09;需具有开始游戏&#xff0c;暂停游戏&#xff0c;结束游戏等方便玩…

银河麒麟服务器操作系统搭建证书服务器并颁发可用于签名的证书步骤说明

银河麒麟服务器操作系统搭建证书服务器并颁发可用于签名的证书的方法与前面Centos7上&#xff08;centos7 使用openssl 配置证书服务器并颁发证书&#xff08;史上最详细版本&#xff09;_centos phpinfo显示的openssl配置项为/etc/pki/tls/openssl.c-CSDN博客&#xff09;是一…

某马头条——day04

自媒体文章自动审核 流程介绍 阿里云接口 这玩意必须要开通企业认证才能用&#xff0c;看看得了。 开通内容安全服务 文本审核接入指南_内容安全(Content Moderation)-阿里云帮助中心 文本审核接口返回内容 直接导入依赖并使用提供的实例代码 接口集成 接口测试 要在weme…

muduo网络库剖析——监听者Poller基类

muduo网络库剖析——监听者Poller基类 前情从muduo到my_muduo 概要框架与细节成员函数使用方法 源码结尾 前情 从muduo到my_muduo 作为一个宏大的、功能健全的muduo库&#xff0c;考虑的肯定是众多情况是否可以高效满足&#xff1b;而作为学习者&#xff0c;我们需要抽取其中…

新定义51单片机(RD8G37)实现测距测速仪

本文描述用新定义51单片机&#xff08;RD8G37&#xff09;超声波一体测距传感器实现简单的测距测速仪。 测距仪演示效果 新定义RD8G37Q48RJ开发板 超声波测距模块&#xff1a; 8位并口屏 1、main.c unsigned short timeConsuming0; unsigned int oldDistance;void rectClearS…

iOS上h5长按识别图片二维码,图片会默认放大,禁用这一默认行为

iOS上h5长按识别图片二维码&#xff0c;图片会默认放大&#xff0c;禁用这一默认行为 测试代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-widt…

变分自编码器(Variational AutoEncoder,VAE)

1 从AE谈起 说到编码器这块&#xff0c;不可避免地要讲起AE&#xff08;AutoEncoder&#xff09;自编码器。它的结构下图所示&#xff1a; 据图可知&#xff0c;AE通过自监督的训练方式&#xff0c;能够将输入的原始特征通过编码encoder后得到潜在的特征编码&#xff0c;实现了…

npm依赖库备份

常用命令 设置默认使用本地缓存安装Nodejs时会自动安装npm&#xff0c;但是局路径是C:\Users\Caffrey\AppData\Roaming\npm默认的缓存路径是C:\Users\Caffrey\AppData\Roaming\npm-cache&#xff1b;查看npm的prefix和cache路径配置信息设置路径 设置默认使用本地缓存 npm con…

MySQL面试题 | 14.精选MySQL面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Java NIO (三)NIO Channel类

1 概述 前面提到&#xff0c;Java NIO中一个socket连接使用一个Channel来表示。从更广泛的层面来说&#xff0c;一个通道可以表示一个底层的文件描述符&#xff0c;例如硬件设备、文件、网络连接等。然而&#xff0c;远不止如此&#xff0c;Java NIO的通道可以更加细化。例如&a…

实战 | OpenCV两种不同方法实现粘连大米粒分割计数(步骤 + 源码)

导 读 本文主要介绍基于OpenCV的两种不同方法实现粘连大米分割计数,并给详细步骤和源码。源码和图片素材见文末。 背景介绍 测试图如下,图中有个别米粒相互粘连,本文主要演示如何使用OpenCV用两种不同方法将其分割并计数。 方法一:基于分水岭算法 基于分水岭算法…

【playwright】新一代自动化测试神器playwright+python系列课程18_playwritht元素相关操作_等待元素到某种状态

元素相关操作_等待元素到某种状态 对于自动化测试来说&#xff0c;本质上就是定位元素、操作元素。网页上的元素有不同状态&#xff0c;有些元素本来不在网页的DOM中&#xff0c;经过某一步操作后才出现。有些元素是本来就已经在DOM中但是是隐藏的状态&#xff0c;经过某一步操…