当前位置: 首页 > article >正文

【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】性能测试知识和工具

目录 何为系统性能 何为性能测试 性能测试分类 性能测试指标 性能测试流程 性能测试工具&#xff1a;JMeter&#xff08;主测web应用&#xff09; jmeter文件目录 启动方式 基本元件&#xff1a;元件内有很多组件 jmeter参数化 jmeter关联 自动录制脚本 直连数据库…...

SOC-ESP32S3部分:25-HTTP请求

飞书文档https://x509p6c8to.feishu.cn/wiki/KL4RwxUQdipzCSkpB2lcBd03nvK HTTP&#xff08;Hyper Text Transfer Protocol&#xff09; 超文本传输协议&#xff0c;是一种建立在 TCP 上的无状态连接&#xff0c;整个基本的工作流程是客户端发送一个 HTTP 请求&#xff0c;说明…...

字符编码全解析:ASCII、GBK、Unicode、UTF-8与ANSI

UTF - 8(全球字符能被唯一标识)、GBK、Unicode、ANSI 区别与关联 qwen模型分词器文件 1. ASCII(基础铺垫,理解编码起源) 作用:最早期为处理英文文本设计,是字符编码的基础,后演变成其他编码兼容的一部分 。范围:共 128 个字符(0 - 127),包含英文大小写字母、数字…...

《前端面试题:HTML5、CSS3、ES6新特性》

现代前端开发中&#xff0c;HTML5、CSS3和JavaScript ES6共同构成了三大核心技术支柱。这些技术不仅显著提升了用户体验和性能表现&#xff0c;更大幅提高了开发效率。本文将从技术演进、核心特性到最佳实践&#xff0c;系统性地介绍这三大技术的应用之道。 我们将首先探讨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模版&#xff0c;日系小清新PPT模版&#xff0c;粉红色PPT模版&#xff0c;蓝色PPT模版&#xff0c;草青色PPT模版&#xff0c;日系卡通PPT模版 49套夏日小清新计划总结日系卡通ppt模板&#xff1a;夏日小清新日系卡通PPT模版https://pan.quark.cn/s/9e4270d390fa…...

告别硬编码!用工厂模式优雅构建可扩展的 Spring Boot 应用 [特殊字符]

嗨&#xff0c;各位技术伙伴们&#xff01;&#x1f44b; 在日常的软件开发中&#xff0c;我们经常面临需求变更的挑战。如何构建一个既能满足当前需求&#xff0c;又能轻松应对未来变化的系统呢&#xff1f;答案往往藏在那些经典的设计模式中。 今天&#xff0c;我们就来聊聊…...

Express教程【006】:使用Express写接口

文章目录 8、使用Express写接口8.1 创建API路由模块8.2 编写GET接口8.3 编写POST接口 8、使用Express写接口 8.1 创建API路由模块 1️⃣新建routes/apiRouter.js路由模块&#xff1a; /*** 路由模块*/ // 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日志样例&#xff1a; [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 老项目面临着代码陈旧、架构落后、维护困难等问题。老项目重构势在必行&#xff0c;却又因庞大的代码量、复杂的业务逻辑让开发团队望而却步。 老项目重构困境重重 传统的 Java 老项目往往在长期的迭代和维护中积累了诸多问题。一方面&#xff0c;代码质量堪…...

RockyLinux9安装Docker

如何在RockyLinux9下安装Docker RockyLinux采用了全新的dnf来进行包管理&#xff0c;dnf支持yum别名&#xff0c;还没习惯的可以将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 的流量控制组件&#xff0c;用于实现 API 请求速率限制&#xff0c;核心功能包括&#xff1a; 限制单位时间内的请求数量&#xff08;如每秒10次&#xff09;防止服务被突发流量击垮&#xff0…...

解决 xmlsec.InternalError: (-1, ‘lxml xmlsec libxml2 library version mismatch‘)

解决 xmlsec.InternalError: (-1, ‘lxml & xmlsec libxml2 library version mismatch’) 错误信息如下&#xff1a; Traceback (most recent call last):File "/home/mobsf/Mobile-Security-Framework-MobSF/manage.py", line 18, in <module>execute_f…...

【Linux基础知识系列】第九篇-Shell脚本入门

在Linux世界中&#xff0c;Shell脚本是自动化任务和简化操作的重要工具。它可以帮助用户编写一系列命令&#xff0c;自动执行重复的任务&#xff0c;从而提高工作效率。在本篇文章中&#xff0c;我们将介绍Shell脚本的基本概念、编写方法、常用命令和结构。通过这些内容&#x…...

typescript的Interface和Type

类型别名和接口非常相似&#xff0c;在大多数情况下你可以在它们之间自由选择。 几乎所有的 interface 功能都可以在 type 中使用&#xff0c;关键区别在于不能重新开放类型以添加新的属性&#xff0c;而接口始终是可扩展的。 // 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)

一、题目解析 这里的子字符串是连续的&#xff0c;与之前的子序列不同&#xff0c;这里需要我们统计回文子串的数目。 二、算法原理 这里也有其他算法可以解决该问题&#xff0c;如中心扩展算法 时间复杂度O(N^2)/空间复杂度O(1)&#xff0c;马拉车算法(具有局限性) 时间复杂…...

es 的字段类型(text和keyword)

Text 当一个字段是要被全文检索时&#xff0c;比如 Email 内容、产品描述&#xff0c;这些字段应该使用 text 类型。设置 text 类型以后&#xff0c;字段内容会被分析&#xff0c;在生成倒排索引之前&#xff0c;字符串会被分析器分词。text类型的字段不用于排序&#xff0c;很…...

Kotlin 中companion object {} 什么时候触发

在 Kotlin 中&#xff0c;companion object 的初始化触发时机是一个重要但容易被忽视的细节。以下是详细的解释&#xff1a; 1. 基本触发时机 companion object 的初始化发生在&#xff1a; 首次访问该类时&#xff08;无论是访问伴生对象成员、创建类实例&#xff0c;还是通过…...

仿真每日一练 | Workbench中接触种类及选择方法简介

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

Go语言中的rune和byte类型详解

1. rune类型 1.1. 基本概念 1. rune是Go语言的内建类型&#xff0c;它是int32的别名&#xff0c;即32位有符号整数&#xff1b; 2. 用于表示一个Unicode码点&#xff0c;全拼Unicode code point&#xff1b; 3. 可以表示任何UTF-8编码的字符&#xff1b; 1.2. 特点 1. 每…...

superior哥AI系列第6期:Transformer注意力机制:AI界的“注意力革命“

&#x1f3ad; superior哥AI系列第6期&#xff1a;Transformer注意力机制&#xff1a;AI界的"注意力革命" 嘿&#xff01;小伙伴们&#xff01;&#x1f44b; 今天superior哥要带你们探索AI界最火的技术——Transformer&#xff01;这个家伙可了不得&#xff0c;它不…...

【java面试】redis篇

redis篇 一、适用场景&#xff08;一&#xff09;缓存1、缓存穿透1.1 解决方案1&#xff1a;缓存空数据&#xff0c;查询返回的数据为空&#xff0c;将空结果缓存1.2 解决方案2&#xff1a;布隆过滤器 2、缓存击穿1.1 解决方案1&#xff1a;互斥锁1.2 解决方案2&#xff1a;逻辑…...

高效易用的 MAC 版 SVN 客户端:macSvn 使用体验

高效易用的 MAC 版 SVN 客户端&#xff1a;macSvn 使用体验 下载安装使用总结 最近有个项目要使用svn, 但是mac缺乏一款像 Windows 平台 TortoiseSVN 那样全面、高效且便捷的 SVN 客户端工具, 直到博主找到了该工具本文将结合实际使用体验&#xff0c;详细介绍 macSvn工具的核心…...

【搭建 Transformer】

搭建 Transformer 的基本步骤 Transformer 是一种基于自注意力机制的深度学习模型&#xff0c;广泛应用于自然语言处理任务。以下为搭建 Transformer 的关键步骤和代码示例。 自注意力机制 自注意力机制是 Transformer 的核心&#xff0c;计算输入序列中每个元素与其他元素的…...

自然图像数据集

目录 CIFAR-10 数据集CIFAR-100 数据集AFHQ 数据集FFHQ 数据集 CIFAR-10 数据集 简介&#xff1a; CIFAR-10 是一个经典的图像分类数据集&#xff0c;广泛用于机器学习领域的计算机视觉算法基准测试。它包含60000幅32x32的彩色图像&#xff0c;分为10个类&#xff0c;每类6000…...

Linux下使用nmcli连接网络

Linux下使用nmcli连接网络 介绍 在使用ubuntu系统的时候&#xff0c;有时候不方便使用桌面&#xff0c;使用ssh远程连接&#xff0c;可能需要使用nmcli命令来连接网络。本文将介绍如何使用nmcli命令连接网络。nmcli 是 NetworkManager 的命令行工具&#xff0c;用于管理网络连…...

HCIP(BGP综合实验)

一、实验拓扑 AS 划分&#xff1a; AS1&#xff1a;R1&#xff08;环回 L0:172.16.0.1/32&#xff0c;L1:192.168.1.0/24&#xff09;AS2&#xff1a;R2、R3、R4、R5、R6、R7&#xff08;内部运行 OSPF&#xff0c;AS 号为 64512 和 64513 的联盟&#xff09;AS3&#xff1a;R…...