【JMeter】性能测试知识和工具

news2025/6/7 5:36:17

目录

何为系统性能

何为性能测试

性能测试分类

性能测试指标

性能测试流程

性能测试工具: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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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),包含英文大小写字母、数字…

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;代码质量堪…

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;马拉车算法(具有局限性) 时间复杂…

仿真每日一练 | 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. 每…

【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工具的核心…

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…

Attention Is All You Need (Transformer) 以及Transformer pytorch实现

参考https://zhuanlan.zhihu.com/p/569527564 Attention Is All You Need (Transformer) 是当今深度学习初学者必读的一篇论文。 一. Attention Is All You Need (Transformer) 论文精读 1. 知识准备 机器翻译&#xff0c;就是将某种语言的一段文字翻译成另一段文字。 由…

uniapp+vue2+uView项目学习知识点记录

持续更新中... 1、发送给朋友&#xff0c;分享到朋友圈功能开启 利用onShareAppMessage和onShareTimeline生命周期函数&#xff0c;在script中与data同级去写 // 发送给朋友 onShareAppMessage() {return {title: 清清前端, // 分享标题path: /pages/index/index, // 分享路…