【JMeter】性能测试知识和工具
目录
何为系统性能
何为性能测试
性能测试分类
性能测试指标
性能测试流程
性能测试工具:JMeter(主测web应用)
jmeter文件目录
启动方式
基本元件:元件内有很多组件
jmeter参数化
jmeter关联
自动录制脚本
直连数据库
何为系统性能
时间:系统处理用户请求的响应时间
资源:系统运行时消耗的资源
何为性能测试
定义
使用自动化工具,模拟不同场景对软件各项性能指标进程测试和评估的过程
目的
- 评估当前系统的能力
- 找到性能瓶颈,优化性能
- 评估软件是否满足未来需求
性能测试分类
基准测试
作用:设定标准线,当系统的软硬件发生变化时就进行比对
用途:多用户并发,综合场景,优化前后性能变化
负载测试
作用:在满足各项性能指标下系统同时能到到的最大用户数量
用途:主要测高负载下系统资源消耗
稳定性测试
作用:一定数量的用户负载下系统能稳定运行的时间
压力测试
作用:在强负载的情况下,在系统处于峰值情况下是否有功能隐患,以及是否具有良好的容错能力和可恢复能力
场景: 极限负载下的破坏性压力测试 ;高负载下的长时间稳定性测试
并发测试
作用:短时间处理多个请求,测试系统并发处理能力
场景:主要测并发时资源的争抢问题
性能测试指标
响应时间
定义:发送请求开始到接受响应为止,不包括网页的渲染等
并发用户数
定义:同一时间发送的请求的用户数
吞吐量
定义:单位时间内客户端的请求数量
指标:QPS:每秒的请求数量;TPS:每秒的事务请求数量
点击率
定义:在页面点击后的请求数
错误率
定义:在高负载下的失败业务概率
资源利用率
定义:各个资源的使用情况
指标:
- CPU使用率:不高于75%-85%
- 内存(大小):<80%
- 磁盘(速率):<90%
- 网络(速率):<80%
性能测试流程
性能测试需求分析
- 明确被测系统的业务功能和技术架构
- 明确测试内容:高频使用的业务功能,逻辑复杂度高的业务,数据量大的业务
- 明确测试类型
- 明确测试指标
性能测试计划及方案
- 测什么:项目背景,测试目的,测试范围
- 谁来测:进度与分工。交付清单
- 怎么测:测试策略
性能测试用例设计
性能测试执行
建立测试环境,编写测试脚本, 性能测试监控,执行测试脚本
性能分析和调优
性能测试报告总结
测试工作的经过回顾,缺陷分析和调优,风险评估,性能测试结果,测试工作总结与改进
性能测试工具:JMeter(主测web应用)
jmeter文件目录
bin目录
作用:存放可执行文件和配置文件
docs目录
- 是JMerer的api文档,用于开发扩展组件
- API文档路径:apache-jmeter-5.6.3\docs\api\index.html
printable_doce目录
- 用户帮助手册
- 用户手册路径:apache-jmeter-5.6.3\printable_docs\usermanual\index.html
lib目录
作用:存放jmeter依赖的jar包和用户扩展所依赖的jar包
启动方式
找到jmeter的安装文件,在此目录下进入输入cmd,打开命令提示符,输入jmeter进入
基本元件:元件内有很多组件
元件
配置元件:初始化测试数据
前置处理器:对请求的操作
定时器:
- 同步定时器:累计一定的请求量后一起发
- 常数吞吐量定时器
- 固定定时器:必须添加在需要等待的HTTP请求的子节点下
取样器:
- HTTP请求
后置处理器:
- 对响应的操作
断言:
- 响应断言
- JSON断言
- 持续时间断言:指响应时间
监听器:
- 查看结果树:查看请求信息和响应信息
- 聚合报告:查看性能指标
逻辑控制器:
- IF控制器
- 循环控制器:控制器是可控制部分元件的执行次数和方式 ;线程组是控制全部元件的执行次数
- ForEach控制器
线程组:
- 定义:控制用于执行测试的一组用户
- 属性:
- 分类:
Setup线程组:预测试操作,所有脚本之前执行
普通线程组:执行测试用例,可以有1个或者多个(并行/串行—在测试计划下设置)
Teardown线程组:测试后操作,所有脚本之后执行
元件的加载顺序
- 有几个取样器,整个线程组就要加载几次
- 每个取样器加载的顺序是父级元件-同级元件-子级元件
- 样例:
jmeter参数化
定义全局变量
前置处理器->用户定义的变量
用户参数
- 前置处理器->用户变量
文件方式参数化
配置元件->CSV Data Set Config
函数
count函数:线程组的用户设为n个,循环可获不同的参数值
jmeter关联
存在依赖关系,一个请求的入参是另一个请求的出参
方法:在前一个请求的后置处理器提取参数,在后一个请求里以变量的形式使用
- 正则表达式提取器
- Xpath提取器
- JSON提取器
- 跨线程的关联
自动录制脚本
原理:在主机向服务端发送请求时经jmeter复刻一份
组件:测试计划(右键)->非测试元件->HTTP脚本记录器
步骤:
- 1.配置脚本记录器的参数
- 2.开启windows操作系统的浏览器代理
- 3.启动脚本记录器
直连数据库
步骤:
添加MySQL驱动jar包
方式一:在测试计划面板点击“浏览…“按钮,将你的JDBC驱动添加进来—本脚本可用
方式二:将MySQL驱动jar包放入到lib/ext目录下,重启JMeter—所有脚本可用
配置数据库连接信息
添加方式:测试计划 --> 线程组--> (右键添加) 配置元件 --> JDBC Connection Configuration
添加JDBC请求
添加方式:取样器->JDBC Request
相关文章:

【JMeter】性能测试知识和工具
目录 何为系统性能 何为性能测试 性能测试分类 性能测试指标 性能测试流程 性能测试工具:JMeter(主测web应用) jmeter文件目录 启动方式 基本元件:元件内有很多组件 jmeter参数化 jmeter关联 自动录制脚本 直连数据库…...

SOC-ESP32S3部分:25-HTTP请求
飞书文档https://x509p6c8to.feishu.cn/wiki/KL4RwxUQdipzCSkpB2lcBd03nvK HTTP(Hyper Text Transfer Protocol) 超文本传输协议,是一种建立在 TCP 上的无状态连接,整个基本的工作流程是客户端发送一个 HTTP 请求,说明…...

字符编码全解析:ASCII、GBK、Unicode、UTF-8与ANSI
UTF - 8(全球字符能被唯一标识)、GBK、Unicode、ANSI 区别与关联 qwen模型分词器文件 1. ASCII(基础铺垫,理解编码起源) 作用:最早期为处理英文文本设计,是字符编码的基础,后演变成其他编码兼容的一部分 。范围:共 128 个字符(0 - 127),包含英文大小写字母、数字…...
《前端面试题:HTML5、CSS3、ES6新特性》
现代前端开发中,HTML5、CSS3和JavaScript ES6共同构成了三大核心技术支柱。这些技术不仅显著提升了用户体验和性能表现,更大幅提高了开发效率。本文将从技术演进、核心特性到最佳实践,系统性地介绍这三大技术的应用之道。 我们将首先探讨HTM…...

MaxCompute开发UDF和UDTF案例
文章目录 一、Java开发UDF1、创建Maven项目2、创建UDF类3、打包上传资源4、创建函数MyUDF5、SQL验证 二、Java开发UDTF1、创建Maven项目2、创建UDTF类3、打包上传更新资源4、创建函数MyUDTF5、SQL验证 三、常见问题1、发布函数报错 一、Java开发UDF 1、创建Maven项目 创建Mav…...

49套夏日小清新计划总结日系卡通ppt模板
绿色小清新PPT模版,日系小清新PPT模版,粉红色PPT模版,蓝色PPT模版,草青色PPT模版,日系卡通PPT模版 49套夏日小清新计划总结日系卡通ppt模板:夏日小清新日系卡通PPT模版https://pan.quark.cn/s/9e4270d390fa…...

告别硬编码!用工厂模式优雅构建可扩展的 Spring Boot 应用 [特殊字符]
嗨,各位技术伙伴们!👋 在日常的软件开发中,我们经常面临需求变更的挑战。如何构建一个既能满足当前需求,又能轻松应对未来变化的系统呢?答案往往藏在那些经典的设计模式中。 今天,我们就来聊聊…...

Express教程【006】:使用Express写接口
文章目录 8、使用Express写接口8.1 创建API路由模块8.2 编写GET接口8.3 编写POST接口 8、使用Express写接口 8.1 创建API路由模块 1️⃣新建routes/apiRouter.js路由模块: /*** 路由模块*/ // 1-导入express const express require(express); // 2-创建路由对象…...

mongodb集群之分片集群
目录 1. 适用场景2. 集群搭建如何搭建搭建实例Linux搭建实例(待定)Windows搭建实例1.资源规划2. 配置conf文件3. 按顺序启动不同角色的mongodb实例4. 初始化config、shard集群信息5. 通过router进行分片配置 1. 适用场景 数据量大影响性能 数据量大概达到千万级或亿级的时候&…...

Starrocks Full GC日志分析
GC日志样例: [2025-06-03T07:36:06.1770800] GC(227) Pause Full (G1 Evacuation Pause) [2025-06-03T07:36:06.1960800] GC(227) Phase 1: Mark live objects [2025-06-03T07:36:06.9480800] GC(227) Cleaned string and symbol table, strings: 47009 processed,…...

飞算 JavaAI 赋能老项目重构:破旧立新的高效利器
许多企业的 Java 老项目面临着代码陈旧、架构落后、维护困难等问题。老项目重构势在必行,却又因庞大的代码量、复杂的业务逻辑让开发团队望而却步。 老项目重构困境重重 传统的 Java 老项目往往在长期的迭代和维护中积累了诸多问题。一方面,代码质量堪…...
RockyLinux9安装Docker
如何在RockyLinux9下安装Docker RockyLinux采用了全新的dnf来进行包管理,dnf支持yum别名,还没习惯的可以将dnf替换为yum 确保dnf最新 sudo dnf update -y安装dnf-plugins-core包 sudo dnf install -y dnf-plugins-core yum-utils添加Docker的官方仓库…...
RequestRateLimiterGatewayFilterFactory
一、功能说明 RequestRateLimiterGatewayFilterFactory 是 Spring Cloud Gateway 的流量控制组件,用于实现 API 请求速率限制,核心功能包括: 限制单位时间内的请求数量(如每秒10次)防止服务被突发流量击垮࿰…...
解决 xmlsec.InternalError: (-1, ‘lxml xmlsec libxml2 library version mismatch‘)
解决 xmlsec.InternalError: (-1, ‘lxml & xmlsec libxml2 library version mismatch’) 错误信息如下: Traceback (most recent call last):File "/home/mobsf/Mobile-Security-Framework-MobSF/manage.py", line 18, in <module>execute_f…...
【Linux基础知识系列】第九篇-Shell脚本入门
在Linux世界中,Shell脚本是自动化任务和简化操作的重要工具。它可以帮助用户编写一系列命令,自动执行重复的任务,从而提高工作效率。在本篇文章中,我们将介绍Shell脚本的基本概念、编写方法、常用命令和结构。通过这些内容&#x…...

typescript的Interface和Type
类型别名和接口非常相似,在大多数情况下你可以在它们之间自由选择。 几乎所有的 interface 功能都可以在 type 中使用,关键区别在于不能重新开放类型以添加新的属性,而接口始终是可扩展的。 // window.ts.transpileModule(src, {}); 这是调…...

java后端生成心电图-jfreechart
用jfreechart生成心电图 先上成功的图片 上代码 1.导入包 implementation org.jfree:jfreechart:1.5.4implementation org.jfree:jcommon:1.0.242.实现代码 对数据进行滤波 转换单位 package com.shinrun.infrastructure.util;import java.util.ArrayList; import java.ut…...

算法/机理模型演示平台搭建(二)——算法接口部署(FastApi)
算法/机理模型演示平台搭建(二)—— 算法接口部署(FastApi) 1. 项目结构2. 构建 Docker 镜像3. 运行 Docker 容器4. 访问 API 文档5. 调用 API1. 项目结构 app app/algorithms app/models Dockerfile FROM python:3.9-slimWORKDIR /codeCOPY ./requirements.txt /code…...

动态规划-647.回文子串-力扣(LeetCode)
一、题目解析 这里的子字符串是连续的,与之前的子序列不同,这里需要我们统计回文子串的数目。 二、算法原理 这里也有其他算法可以解决该问题,如中心扩展算法 时间复杂度O(N^2)/空间复杂度O(1),马拉车算法(具有局限性) 时间复杂…...
es 的字段类型(text和keyword)
Text 当一个字段是要被全文检索时,比如 Email 内容、产品描述,这些字段应该使用 text 类型。设置 text 类型以后,字段内容会被分析,在生成倒排索引之前,字符串会被分析器分词。text类型的字段不用于排序,很…...
Kotlin 中companion object {} 什么时候触发
在 Kotlin 中,companion object 的初始化触发时机是一个重要但容易被忽视的细节。以下是详细的解释: 1. 基本触发时机 companion object 的初始化发生在: 首次访问该类时(无论是访问伴生对象成员、创建类实例,还是通过…...

仿真每日一练 | Workbench中接触种类及选择方法简介
Workbench中给我们提供的接触类型主要包括以下几种👇 ◆ 1、摩擦 ◆ 2、无摩擦 ◆ 3、绑定 ◆ 4、不分离 ◆ 5、粗糙 ◆ 6、强制滑移 下面通过最常用的摩擦和绑定给大家展示两者的区别,同时文末也给大家介绍了几种接触的选择方法。首先先给大家介绍一下…...

Go语言中的rune和byte类型详解
1. rune类型 1.1. 基本概念 1. rune是Go语言的内建类型,它是int32的别名,即32位有符号整数; 2. 用于表示一个Unicode码点,全拼Unicode code point; 3. 可以表示任何UTF-8编码的字符; 1.2. 特点 1. 每…...
superior哥AI系列第6期:Transformer注意力机制:AI界的“注意力革命“
🎭 superior哥AI系列第6期:Transformer注意力机制:AI界的"注意力革命" 嘿!小伙伴们!👋 今天superior哥要带你们探索AI界最火的技术——Transformer!这个家伙可了不得,它不…...

【java面试】redis篇
redis篇 一、适用场景(一)缓存1、缓存穿透1.1 解决方案1:缓存空数据,查询返回的数据为空,将空结果缓存1.2 解决方案2:布隆过滤器 2、缓存击穿1.1 解决方案1:互斥锁1.2 解决方案2:逻辑…...

高效易用的 MAC 版 SVN 客户端:macSvn 使用体验
高效易用的 MAC 版 SVN 客户端:macSvn 使用体验 下载安装使用总结 最近有个项目要使用svn, 但是mac缺乏一款像 Windows 平台 TortoiseSVN 那样全面、高效且便捷的 SVN 客户端工具, 直到博主找到了该工具本文将结合实际使用体验,详细介绍 macSvn工具的核心…...
【搭建 Transformer】
搭建 Transformer 的基本步骤 Transformer 是一种基于自注意力机制的深度学习模型,广泛应用于自然语言处理任务。以下为搭建 Transformer 的关键步骤和代码示例。 自注意力机制 自注意力机制是 Transformer 的核心,计算输入序列中每个元素与其他元素的…...
自然图像数据集
目录 CIFAR-10 数据集CIFAR-100 数据集AFHQ 数据集FFHQ 数据集 CIFAR-10 数据集 简介: CIFAR-10 是一个经典的图像分类数据集,广泛用于机器学习领域的计算机视觉算法基准测试。它包含60000幅32x32的彩色图像,分为10个类,每类6000…...
Linux下使用nmcli连接网络
Linux下使用nmcli连接网络 介绍 在使用ubuntu系统的时候,有时候不方便使用桌面,使用ssh远程连接,可能需要使用nmcli命令来连接网络。本文将介绍如何使用nmcli命令连接网络。nmcli 是 NetworkManager 的命令行工具,用于管理网络连…...

HCIP(BGP综合实验)
一、实验拓扑 AS 划分: AS1:R1(环回 L0:172.16.0.1/32,L1:192.168.1.0/24)AS2:R2、R3、R4、R5、R6、R7(内部运行 OSPF,AS 号为 64512 和 64513 的联盟)AS3:R…...