性能测试-jmeter实战3

课程:B站大学
记录软件测试-性能测试学习历程、掌握前端性能测试、后端性能测试、服务端性能测试的你才是一个专业的软件测试工程师

性能测试-jmeter实战3

  • 负载测试
  • 稳定性测试
  • 负载测试曲线图
  • 其他测试策略
    • 并发测试
    • 压力测试
    • 容量测试
  • 性能指标的介绍
    • 响应时间
    • 并发用户数据
    • 吞吐量
    • 吞吐量TPS
    • 吞吐量QPS
  • 点击数
  • 错误率(异常率)
  • 资源利用率
  • 性能测试流程
    • 性能测试需求分析
    • 性能测试计划及方案
    • 性能测试用例
    • 测试脚本编写/录制
    • 性能测试报告
  • 实践是检验真理的唯一标准


# 基准测试 建立系统性能的基线数据,用于后续优化或版本对比。 关键特点​​:

​​标准化场景​​:在固定硬件、软件配置和测试条件下运行。
​​量化指标​​:测量响应时间、吞吐量、CPU/内存占用等。
​​对比性​​:常用于比较不同版本、配置或竞品的性能差异。
​​典型场景​​:

数据库查询速度对比(如MySQL vs PostgreSQL)。
新版本API接口的响应时间是否优于旧版本。
硬件选型时测试不同服务器的处理能力。
​​工具举例​​:

​​Sysbench​​(数据库基准测试)
​​Geekbench​​(CPU/GPU性能测试)
​​JMeter​​(HTTP请求基准测试)

负载测试

评估系统在预期或更高负载下的性能表现,识别瓶颈。
关键特点​​
​​模拟真实用户​​:逐步增加并发用户数或请求量。
​​关注阈值​​:测试系统在峰值负载下的表现(如最大支持1000并发用户)。
​​性能指标​​:TPS(每秒事务数)、错误率、资源利用率等。
​​典型场景​​:
电商网站在促销期间能否承受10万用户同时访问。
API服务在每秒5000请求时的延迟是否达标。
数据库在大量写入操作时的吞吐量极限。
​​工具举例​​:
​​JMeter​​、​​Locust​​(模拟用户负载)
​​Gatling​​(高并发测试)
​​k6​​(云原生负载测试)

稳定性测试

验证系统在长时间运行下的可靠性,发现内存泄漏、资源耗尽等问题。
关键特点​​:
​​长时间运行​​:持续施压数小时甚至数天。
​​监控异常​​:关注内存增长、线程阻塞、日志错误等。
​​恢复能力​​:测试故障后是否自动恢复。
​​典型场景​​:
服务器连续运行7天后是否出现内存泄漏。
数据库在持续写入后是否因连接池耗尽崩溃。
微服务在长时间高负载下是否产生未处理的异常。
​​工具举例​​:
​​JMeter​​(长时间压力测试)
​​Prometheus + Grafana​​(监控资源泄漏)
​​Chaos Mesh​​(注入故障测试恢复能力)

维度基准测试负载测试稳定性测试
目标建立性能基线找出系统负载极限验证长期可靠性
测试时长短(分钟级)中(小时级)长(天级)
关键指标响应时间、吞吐量最大并发数、错误率内存/资源泄漏、错误累积
适用阶段开发早期/版本迭代上线前性能验证上线前/运维期

负载测试曲线图

在这里插入图片描述

  • ​​横轴(X轴)​​:​​并发用户数​​(负载量),从低到高递增。
  • ​​纵轴(Y轴)​​:
  • ​​Utilization (U)​​:系统资源利用率(如CPU、内存),绿色曲线。
  • ​​Throughput (X)​​:系统吞吐量(每秒处理请求数),紫色曲线。
  • ​​Response Time ®​​:请求响应时间,红色曲线。
区域特征性能表现
轻载区并发用户数较少(左侧)- 资源利用率(U)线性增长
- 吞吐量(X)快速上升
- 响应时间(R)稳定低位
最佳并发点The Optimum Number of Concurrent Users(图中标注点)- 吞吐量(X)达到理想值
- 响应时间(R)仍可控
- 资源利用率(U)未饱和
重载区并发用户数超过最佳点(Heavy Load)- 资源利用率(U)接近瓶颈
- 吞吐量(X)增速放缓
- 响应时间(R)明显上升
最大并发点The Maximum Number of Concurrent Users(图中临界点)- 吞吐量(X)达到峰值
- 响应时间(R)陡增
- 资源利用率(U)饱和(100%或更高)
瓶颈区超过最大并发点(右侧Buckle Zone)- 资源饱和:系统过载
- 吞吐量下降:请求堆积/超时
- 用户体验恶化:高延迟或错误
​​故障表现​​:
超过最大并发点后,系统可能出现:
  1. 错误率上升(如HTTP 503)
  2. 资源耗尽(数据库连接池满、线程阻塞)
  3. 响应时间不可接受(用户流失)。

测试策略:

  1. 通过逐步增加并发用户数,定位图中的​​最佳点​​和​​最大点​​。

​​监控指标​​:

  1. 重点关注吞吐量拐点和响应时间突变位置。

其他测试策略

并发测试

验证系统在​​多用户同时操作​​时的功能正确性和资源竞争问题(如死锁、数据脏读)。
关键特点​​
​​模拟真实并发​​:多个线程/用户同时执行相同或不同操作。
​​关注点​​:
数据一致性(如库存超卖)
资源竞争(如数据库连接池耗尽)
线程安全(如全局变量冲突)
​​测试场景​​:
100个用户同时提交订单
多线程并发修改同一数据库记录
​​工具示例​​
​​JMeter​​(线程组模拟并发用户)
​​LoadRunner​​(虚拟用户并发控制)
​​Gatling​​(高并发场景设计)

压力测试

评估系统在​​超过正常负载​​时的表现,定位崩溃临界点及恢复能力。
​​关键特点​​
​​极端条件​​:持续施压直至系统崩溃(如CPU 100%、内存耗尽)。
​​关注点​​:
系统崩溃阈值(如最大支持5000并发)
错误处理机制(如熔断降级)
故障恢复时间(如自动重启后恢复速度)
​​测试场景​​:
短时间内涌入10倍正常流量
强制关闭服务后验证自愈能力
​​工具示例​​
​​JMeter​​(阶梯式加压)
​​k6​​(混沌工程压力注入)
​​Chaos Mesh​​(模拟网络中断、资源枯竭)

容量测试

确定系统在​​长期运行​​下的最大承载能力,为扩容提供数据支撑。
关键特点​​
​​可持续负载​​:长时间维持高负载(如24小时80%资源占用)。
​​关注点​​:
资源泄漏(如内存泄漏、线程堆积)
性能衰减(如数据库查询变慢)
扩展性建议(需增加多少服务器)
​​测试场景​​:
持续7天模拟2000并发用户
数据库每日写入100万条记录后的性能变化
​​工具示例​​
​​Locust​​(长时间稳定负载模拟)
​​Prometheus + Grafana​​(监控资源泄漏)
​​阿里云PTS​​(云环境容量规划)

性能指标的介绍

响应时间

定义
响应时间指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的结果,整个过程所耗费的时间。

【组成】
响应时间 = 网络时间 + 应用程序处理时间

并发用户数据

并发测试的用户数(并发:同时运行请求)

  • 系统用户数​​:系统注册的总用户数据
  • 在线用户数​​:某段时间内访问系统的用户数,这些用户并不一定同时向系统提交请求
  • 并发用户数​​:某一物理时刻同时向系统提交请求的用户数

吞吐量

定义:吞吐量(Throughput)指的是单位时间内处理的客户端请求数量,直接体现软件系统的性能承载能力。

  1. 从业务角度来看,吞吐量也可以用“业务数/小时”、“业务数/天”、“访问人数/天”、“页面访问量/天”来衡量。
  2. 从网络角度来看,还可以用“字节数/小时”、“字节数/天”等来衡量网络的流量。
  3. 从技术指标来看,可以用每秒事务数(TPS)和每秒查询数(QPS)来衡量服务器具体性能处理能力。

吞吐量TPS

TPS:每秒事务数:单位时间内系统处理的客户端请求的事务次数
计算​​
TPS = 并发数 / 平均响应时间
​​事务​​
事务即业务请求,对应界面上一个或多个操作。以支付请求为例:

  • 包含服务器查询用户余额
  • 支付安全校验等多个请求
  • 最终定位到服务器对应的业务请求代码(可能为单段或多段代码)
    在jmeter中可以用事务控制器组合一系列接口请求为一个事务,子事务上有父事务等。
    jmeter示例:
    测试计划
    └── 事务控制器(名称:完整下单事务)
    ├── HTTP请求 1 (登录接口)
    ├── HTTP请求 2 (添加购物车)
    └── HTTP请求 3 (提交订单)

吞吐量QPS

TPS:每秒查询数:一个QPS是一个接口请求
应用场景:
控制服务器每秒处理指定请求数。如:控制服务器达到每秒60QPS,服务器的性能各项性能指标是否正常(服务器处理能力一个重要指标)。

点击数

定义:点击数是衡量Web服务器处理能力的一个重要指标。
​​提示​​

  • 点击数不是通常认为的访问一个页面就是1次点击数,而是该页面包含的元素(图片、链接等)向服务器发出的请求数量。
  • 通常用每秒点击次数(Hits per Second)指标来衡量Web服务器的处理能力。
    大白话:静态资源请求数量==点击数
    ​​注意​​
    只有Web项目才有此指标。
    主要用于衡量web服务器: Apache HTTP Server​,Nginx​,LiteSpeed​,Caddy​, Tomcat (Apache Tomcat)​
    目前主流的有老项目:Tomcat,新项目专用:Nginx。

错误率(异常率)

定义:错误率指系统在负载情况下,失败业务的概率。
计算公式为:
​​错误率 = (失败业务数 / 业务总数) × 100%​​
​​提示​​
不同系统对错误率要求不同,但一般不超过千分之五(≤0.5%);
稳定性较好的系统中,错误率应由超时引起(即表现为超时率)。
错误率大多数是超时,资源耗光导致,所以有资源,扩容,搭建好的集群环境非常重要。

资源利用率

定义:是指系统各种资源的使用情况,一般用“资源的使用量/总的资源可用量×100%”形成资源利用率的数据。
大多数情况下:一个服务器上的基准
通常,没有特殊需求的话:
建议CPU不高于80%(±5);
内存不高于80%;
磁盘不高于90%;
网络不高于80%。
若高于以上数值,则可能存在问题
在这里插入图片描述

性能测试流程

  • 性能测试需求分析
  • 性能测试计划及方案
  • 性能测试用例
  • 测试脚本编写/录制
  • 建立测试环境
  • 执行测试脚本
  • 性能测试监控
  • 性能分析和调优
  • 性能测试报告总结
    性能测试流程:无他,唯手熟尔

性能测试需求分析

第一要点:
● 熟悉被测系统
○ 熟悉系统的业务功能
○ 熟悉系统的技术架构
第二要点
● 明确性能测试内容
○ 从业务角度,挑选核心业务进行测试
○ 从技术角度,挑选逻辑复杂度高、数据量大的业务进行测试
第三要点
● 确定测试策略
○ 负载测试、稳定性等
第四要点
● 确定性能测试指标
○ 有需求:按照需求来测试
○ 没有需求:同类型软件对比,对未来数据进行预估

性能测试计划及方案

性能测试实施文档也是一份重要的文档
主要内容:

  • 项目背景 – 简介
  • 测试目的
  • 测试范围 – 对于需求分析中的性能测试内容
  • 测试策略–对应需求分析中的测试策略
  • 风险控制–技术风险
  • 交付清单
  • 进度与分工

性能测试用例

要素:用例标题、用例编号、用例预制条件、用例步骤、用例预期结果、用例实际结果
在这里插入图片描述

测试脚本编写/录制

1、测试脚本编写/录制​​
说明:性能测试用例编写完成以后,接下来就需要结合用例的需要,进行测试脚本的编写工作。
提示:录制或编写,根据不同的工具要注意代码冗余。

​2、建立测试环境​​
说明:在进行性能测试之前,需要先完成性能测试环境的搭建工作,测试环境一般包括硬件环境、软件环境及网络环境。
提示:一般情况下可以要求运维和开发工程师协助完成。

​​3、 执行测试脚本​​
说明:先保证脚本调试通过之后,才能进入正式压测阶段。
执行测试脚本时,要先进行性能运行场景的设置,再运行脚本。

性能测试报告

报告无需多说,文档,但也很重要,做为性能最终结果也是优化的重要依据
在这里插入图片描述
性能测试类型:
在这里插入图片描述
总结下性能测试理论知识:

  • 响应实践:从客户端发送请求到服务器响应的全部时间=应用程序处理时间和网络事件之和=
  • 并发数:同一时刻在向服务器发送请求的用户数
  • 吞吐量:单位时间内服务器处理请求的数量
  • QPS:每秒查询数(每秒请求数)
  • TPS:每秒事务数,TPS=并发数(在同一秒内发送的请求数)/响应时间(所有请求的平均响应时间)
  • 错误率:超时,资源耗尽导致的500请求(性能负载的场景下,失败事务数占总的事务数的比例)
  • 点击数:web项目,静态资源请求web服务器(nginx、tomact)的次数等
  • 资源利用率:主要是指CPU均值,磁盘IOPS峰值,内存增长值

实践是检验真理的唯一标准

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

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

相关文章

Maven镜像

在 Maven 中配置多个镜像源,主要是为了解决依赖包在不同地区下载速度不同的问题,或者为了使用特定的私有仓库作为依赖源。Maven 支持在 pom.xml 文件中配置多个镜像源(repositories),也可以在 Maven 的全局配置文件 se…

ArduPilot 教程(2):运行第一个 SITL 无人机仿真

目录 1. MAVLink 通信协议 2. MAVProxy 地面控制站 3. 运行 SITL 无人机仿真 3.1. 使用 MAVProxy 控制无人机 3.2. 使用 SITL 地图界面控制无人机 4. MAVProxy 常用命令 5. 其它地面控制站 5.1. QGroundControl 5.2. MissionPlanner 5.3. 不启用 MAVProxy 6. 本讲小…

开源AI大模型驱动下视频媒介对图文生态的重构与S2B2C商业场景创新——基于AI智能名片与商城小程序源码的实践分析

摘要:数字媒介演进的进程中,视频对图片及文字的媒介侵蚀效应正呈现加速态势,尤其在Z世代及新网民群体中,视频已成为其触网的首要信息载体。本文基于媒介技术迭代与商业场景融合的双重视角,探究开源AI大模型如何通过智能…

Kafka线上集群部署方案:从环境选型到资源规划思考

在分布式消息系统的落地应用中,Kafka集群的线上部署方案直接关系到业务系统的稳定性与性能表现。不同于测试环境的简易搭建,生产级集群需要从操作系统适配、存储介质选型、容量规划到网络资源调度等多维度进行系统性设计。本文将从工程实践角度&#xff…

算法第40天|买卖股票的最佳时机 1 2 3

121. 买卖股票的最佳时机 题目 思路与解法 记录每一天买或不买时的价值 class Solution { public:int maxProfit(vector<int>& prices) {// dp数组含义&#xff1a;// dp[i][0]:第i天&#xff0c;持有股票时的最大价值&#xff0c;dp[i][1]:第i天&#xff0c;不持…

【赵渝强老师】使用select...into outfile语句备份MySQL

MySQL可以使用select…into outfile语句将表的内容导出为一个文本文件。其基本的语法格式如下&#xff1a; select [列名] from 表名 [WHERE 语句] into outfile 目标文件 [其他选项];该语句分为两个部分。前半部分是一个普通的select语句&#xff0c;通过这个select语句来查询…

PHY XGE 自协商AN数据交互过程

在裸机环境下&#xff0c;两个 **支持 10GBASE-T** 的 PHY 芯片通过 Clause 73 协议完成自协商&#xff08;Auto-Negotiation&#xff0c;AN&#xff09;&#xff0c;它们在 **无操作系统控制** 的条件下&#xff0c;完成以下 **完整的点对点数据交互流程**&#xff1a; --- ##…

【算法 day09】LeetCode 232.用栈实现队列 | 225. 用队列实现栈 | 20. 有效的括号 |1047. 删除字符串中的所有相邻重复项

232.用栈实现队列 题目链接 | 文档讲解 |视频讲解 : 链接 1.思路&#xff1a; 使用2个栈去实现队列 先将元素放入栈1中&#xff0c;然后在将栈1中的元素出栈到栈2中&#xff0c;栈2的元素出栈顺序就和队列的出队一样 2.代码&#xff1a; class MyQueue {Stack<Integer…

大模型项目实战:业务场景和解决方案

你的这张图已经涵盖了很多主流的大模型实战项目&#xff0c;非常全面&#xff01;下面我会补充更多市面上常见的AI大模型实战项目&#xff0c;并且简要说明每个项目的核心内容、实现思路和主流技术栈&#xff0c;方便你参考和扩展。 1. 智能问答/知识库系统 核心内容&#xff…

vscode + Jlink 一键调试stm32 单片机程序(windows系统版)

vscode Jlink 一键调试stm32 单片机程序 安装交叉编译工具链安装 x-pack 构建工具安装 JLink 工具gnu-debuger 插件编译一键启动调试 安装交叉编译工具链 stm32采用 交叉编译工具链 arm-none-eabi-xxx, 下载之后解压&#xff0c;压缩包内部结构如下图&#xff1a; 目录下的bi…

Linux线程概念和控制

Linux线程概念 Linux中线程如何理解 线程<执行流<进程 Linux中的线程模拟进程实现&#xff08;线程就是轻量级进程&#xff09; 与独立的进程相比&#xff0c;线程创建和销毁的开销较小&#xff0c;因为它们共享相同的内存空间和资源。 线程是进程内的执行分支&…

服务器出现问题,连接服务器出现3680 并删除数据库出现1192,请查看详细问题(运维)

mysql连接服务器时&#xff0c;出现这个问题&#xff1a;3680 - Failed to create schema directory xxxx (errno: 28 - No space left on device) 第一步&#xff1a;诊断问题类型 检查磁盘空间 运行以下命令&#xff1a; bash df -h # 查看磁盘使用情况 如果输出中 Use% 接…

uniapp:微信小程序胶囊「复制链接」灰色处理

在原生开发的小程序中默认是支持复制的 &#x1f424; 但是在 uniapp 开发的小程序中无法复制&#xff08;体验版与开发版都可以进行复制&#xff0c;但发布后不可&#xff09; 解决方法&#xff1a; methods: {onShareAppMessage: function() {// return custom share data …

差分数组c++

温度波动记录 每天记录温度&#xff0c;支持区间温度调整和单日查询 输入&#xff1a; 第一行&#xff1a;一个整数n表示有n个温度 第二行&#xff1a;n个数表示具体温度 第三行&#xff1a;三个整数&#xff1a;S&#xff0c;e&#xff0c;c&#xff0c;表示从…

Vue.js 列表过滤实现详解(watch和computed实现)

Vue.js 列表过滤实现详解 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthd…

性能测试-jmeter实战4

课程&#xff1a;B站大学 记录软件测试-性能测试学习历程、掌握前端性能测试、后端性能测试、服务端性能测试的你才是一个专业的软件测试工程师 性能测试-jmeter实战4 jmeter环境搭建1. 安装Java环境&#xff08;必需&#xff09; JMeter环境搭建完整指南1. 安装Java&#xff0…

GPPT(Graph Pre-training and Prompt Tuning)项目复现

GPPT(Graph Pre-training and Prompt Tuning)项目复现 项目概述 GPPT是一种创新的图神经网络预训练与提示调整框架,由MingChen-Sun等人提出。该项目通过将自然语言处理中的提示学习概念引入图领域,解决了图预训练模型在下游任务中的适应性问题。 环境配置 # 创建Python…

anchor 智能合约 IDL 调用

简介&#xff1a;通过 IDL 生成代码 调用 anchor 智能合约。 全网首发 使用 anchor 可以快速开发 solana 上面的智能合约 &#xff0c; 在本案例中我们 先使用 anchor 创建一个只能合约&#xff08; 多个函数方法&#xff09;。 部署到 dev 链上。 通过 anchor 的 IDL 生成 代码…

【Clickhouse系列】事务

目录 1. 标准 ACID 支持场景 (MergeTree 引擎家族) 2. 非 ACID 场景 3. 实验性事务功能 (非云环境) 总结 参考文档 事务性 (ACID) 支持 | ClickHouse Docs ClickHouse ACID 支持核心要点 1. 标准 ACID 支持场景 (MergeTree 引擎家族) • 单分区插入 (原子块) • ✅ 原子性…

在cursor中,配置jdk和maven环境,安装拓展插件

目录 1.手动配置jdk和maven 2.安装java拓展插件 1.手动配置jdk和maven 第一步&#xff1a;按ctrl shift p, 搜索“Preferences: Open User Settings (JSON)” 并回车&#xff0c;打开 settings.json 文件 。然后添加或修改以下内容&#xff1a; "java.home": &qu…