性能测试-jmeter实战1

article/2025/9/6 6:49:21

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

性能测试-jmeter实战1

  • 为什么需要性能测试呢?
  • 性能测试的作用?
  • 性能测试体系
    • 性能测试基础
    • 性能测试工具
    • 性能监控体系
    • 全链路自动化测试
  • 性能测试与分析优化
  • 性能测试标准
  • 流行性能压测工具介绍
    • 1、Aapache AB工具
    • 2、Aapache JMeter工具
      • 核心功能
      • 常见使用场景
      • 典型组件结构
      • 实战场景(接口压测)
    • 3、Grinder工具
      • 组件结构
      • 实战工作流程
    • 4、Locust工具
      • 核心特点
      • 实战压测 GET 接口
    • 实践是检验真理的唯一标准


为什么需要性能测试呢?

目的是确保系统在高并发或大数据量下依然响应快速、稳定运行,避免系统崩溃或卡顿,保障用户体验和业务连续性。
凡是软件就一定存在性能瓶颈,只有在不断改进性能中,软件才会越走越远!

性能测试的作用?

有效的性能测试能给研发、运维团队提供有效的容量规划能力、系统风险识别、系统瓶颈识别、性能调优指导。

性能测试体系

主要分为:

性能测试基础

  • 性能测试标准流程
  • 性能测试核心指标
  • 性能测试目的/方法
  • 服务基础知识:Nginx、WebServer、DB、Cache、MQ、微服务等等

性能测试工具

  • 工具高级功能、插件、条件处理、脚本编程
  • 工具基础使用&调试
  • 工具高阶开发、多谢语言支撑
  • 性能测试源码&平台开发
  • 性能测试分布式运行

性能监控体系

  • 主机监控:CPU Memory NetWork
  • 应用指标监控、QPS、并发
  • 存储监控、Mysql、Redis、Kafka
  • 全链路可观测、SkyWalking、Zepkin
  • 性能调优,JVM,系统调优

全链路自动化测试

  • 线上服务& 数据隔离
  • 用户场景流量生成
  • 压测方案&止损方案

在这里插入图片描述

性能测试与分析优化

一张图就说明了,掌握性能测试必须掌握的技术栈如下图:
在这里插入图片描述

性能测试标准

这张性能测试图表通过三条关键曲线(资源利用率U、吞吐量X、响应时间R)直观展示了系统在不同并发用户数下的表现。

1、曲线趋势分析​​

  • ​​紫色U曲线(资源利用率)​​:随并发数增加持续上升,最终趋于平缓(资源饱和)。
  • 绿色X曲线(吞吐量)​​:先线性增长(轻载期),达到峰值后下降(系统过载)。
  • ​​红色R曲线(响应时间)​​:初期平稳,超过最佳并发数后指数级上升(用户体验恶化)。
    ​​2、关键区域划分​​
  • 轻载区(Light Load)​​:资源充足,吞吐量与并发数成正比,响应时间稳定。
  • 最佳并发数(Optimum)​​:吞吐量达到峰值,资源利用率合理,响应时间可控。
  • 重载区(Heavy Load)​​:资源饱和(U曲线平缓),吞吐量下降(X曲线拐点),响应时间激增(R曲线陡峭)。
  • ​​崩溃区(Buckle Zone)​​:系统过载,吞吐量骤降,响应时间不可接受,用户受影响明显。

​​3、测试意义​​

  • 确定系统性能拐点(最佳/最大并发数),为容量规划提供依据。
  • 揭示资源瓶颈(如CPU/内存饱和导致吞吐量下降)和用户体验临界点(响应时间突增)。

在这里插入图片描述

流行性能压测工具介绍

1、Aapache AB工具

  • Apache HTTP Server 自带的一个轻量级命令行性能测试工具,常用于对 Web 服务器进行简单的压力测试和基准测试。
    主要用于linux服务端,无图形化
    基本命令示例:
ab -n 1000 -c 100 http://example.com/
命令解析:
-n 1000:总共发送 1000 个请求
-c 100:同时开启 100 个并发请求
http://example.com/:测试目标 URL

常用参数:

-n	请求总数
-c	并发请求数
-t	测试时长(单位秒)
-p	发送 POST 请求的文件
-T	指定 Content-Type(用于 POST)
-H	自定义请求头
-k	使用 HTTP Keep-Alive
-A	添加用户名和密码(Basic Auth)

输出指标说明(部分):

指标名称	含义说明
Requests per second	每秒处理请求数(TPS),反映服务吞吐能力
Time per request	单个请求平均耗时
Percentage served within	表示百分之几的请求在某个时间内返回(响应时间分布)
Failed requests	失败请求数量,通常关注是否为 0

场景:适用于 接口层 和 静态页面 的基础性能评估

2、Aapache JMeter工具

  • 广泛用于对 Web 应用、接口、数据库等进行压力测试、负载测试和功能测试。
    支持协议 HTTP、HTTPS、SOAP、REST、JDBC、FTP、MQ、TCP、WebSocket 等

核心功能

  • 压力测试 模拟成千上万个并发用户访问系统
  • 接口测试 可用于 HTTP/HTTPS 接口功能测试和性能测试
  • 分布式测试 支持 master-slave 模式,执行分布式压力测试
  • 报表生成 自动生成 HTML 格式的图形化测试报告 参数化/断言 支持读取 CSV 文件作为测试数据,支持响应断言(内容、状态码等)
  • 脚本可视化 提供可视化测试计划配置界面,便于拖拽式建模
  • 插件丰富 拥有大量社区插件(如 JMeter Plugin Manager)

常见使用场景

  • 网站首页或接口的并发访问能力测试
  • 用户登录/下单/支付流程的接口压力测试
  • 数据库 SQL 查询性能分析
  • 消息队列、FTP 服务性能评估
  • 接口自动化测试(可集成 CI/CD)

典型组件结构

一个完整的 JMeter 测试计划通常包括:

测试计划(Test Plan)
└── 线程组(Thread Group)├── Sampler(采样器,如 HTTP 请求)├── Listener(监听器,如查看结果树、汇总报告)├── Assertion(断言,如响应断言)├── Pre/Post Processor(前置/后置处理器)└── Config Element(配置元素,如请求默认值、CSV 数据集)

实战场景(接口压测)

  • 添加线程组,设置并发数为 100,循环 10 次
  • 添加 HTTP 请求,配置目标接口和参数
  • 添加响应断言,验证接口响应码是否为 200
  • 添加监听器,查看响应时间、错误率、TPS 等指标
  • 执行并查看图形报告或导出 HTML 报告

3、Grinder工具

  • 适用于对 Web 应用、HTTP 服务、数据库、Socket、RMI 等进行压力测试。它由 Grinder Project 开发,灵活性强,支持通过 Jython(Python for Java)脚本编写测试逻辑。

组件结构

  • Agent:执行测试的负载生成器(可部署多台)
  • Console:控制器/监控器,负责启动、停止测试、收集结果
  • Script:基于 Jython 编写的脚本,定义测试流程和逻辑
  • Properties 文件:配置参数(如线程数、脚本路径、目标地址等)

实战工作流程

1、编写 test_script.py,模拟请求逻辑

2、编辑 grinder.properties 配置文件,设置线程数、测试目标等

3、启动 Console:java net.grinder.Console

4、启动 Agent:java net.grinder.Grinder grinder.properties

5、在 Console 中开始测试,实时查看并收集报告
比如下面得http请求:

from net.grinder.script import Test
from net.grinder.plugin.http import HTTPRequest
from net.grinder.script.Grinder import grinderrequest = HTTPRequest()
test = Test(1, "Test HTTP Request")
test.record(request)class TestRunner:def __call__(self):result = request.GET("http://example.com")

使用得场景:

  • 大型系统的分布式性能测试
  • 需要高度定制协议、逻辑的性能测试
  • 企业 Java 项目的接口、数据库、Socket 等多协议性能验证
  • 对资源使用、并发控制、流程自定义要求高的性能测试场景

4、Locust工具

  • 用于模拟用户行为并对系统进行负载测试。相比 JMeter、AB 等工具,Locust 更轻量、可编程性强、易读易写,广泛应用于 Web 系统、API 接口的压力测试。

核心特点

特点说明
Python 脚本驱动测试逻辑通过 Python 编写,灵活可编程
Web UI 控制面板可在浏览器中设置并发数、启动压测,实时查看请求数、失败率等指标
支持分布式压测可轻松扩展为分布式部署,应对大规模并发测试
清晰的用户行为建模以“用户行为”为核心概念,符合真实业务建模方式
易集成、低门槛Python 编写,易上手,便于与测试框架和自动化流程集成

实战压测 GET 接口

from locust import HttpUser, task, betweenclass WebsiteUser(HttpUser):wait_time = between(1, 3)  # 模拟用户行为等待时间(1-3秒)@taskdef index(self):self.client.get("/")

运行命令:

locust -f locustfile.py --host=http://example.com

控制台输出指标,但是这个使用较少,一般主要用于接口性能测试或者自动化测试
目前国内主要的性能测试工具还是必选Jmeter
在这里插入图片描述
下一章分析性能监控工具

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


http://www.hkcw.cn/article/haERYHJtuy.shtml

相关文章

PABD 2025:大数据与智慧城市管理的融合之道

会议简介 2025年公共管理与大数据国际会议(ICPMBD 2025)确实在海口举办。本次会议将围绕公共管理与大数据的深度融合、数据分析在公共管理中的应用、大数据驱动的政策制定与优化等议题展开深入研讨。参会者将有机会聆听前沿学术报告,分享研究…

DL00924-基于深度学习YOLOv11的工程车辆目标检测含数据集

文末有代码完整出处 🚗 基于深度学习YOLOv11的工程车辆目标检测——引领智能识别新潮流! 🚀 随着人工智能技术的飞速发展, 目标检测 已经在各个领域取得了显著突破,尤其是在 工程车辆识别 这一关键技术上。今天&#…

Java 对接 Office 365 邮箱全攻略:OAuth2 认证 + JDK8 兼容 + Spring Boot 集成(2025 版)

🚨 重要通知:微软强制 OAuth2,传统认证已失效! 2023 年 10 月起,Office 365 全面禁用用户名 密码认证,Java 开发者必须通过OAuth 2.0实现邮件发送。本文针对 CSDN 技术栈,提供从 Azure AD 配置…

秒杀/高并发解决方案+落地实现

前面我们防止超卖 是通过到数据库查询和到数据库抢购,来完成的, 代码如下:如果在短时间内,大量抢购冲击 DB, 造成洪峰, 容易压垮数据库解决方案:使用 Redis 完成预减库存,如果没有库存了,直接返回,减小对 DB 的压力。图示:Redis 的预减,已经存在了原子性,就是一条一条…

Baklib企业知识激活解决方案

Baklib知识中台构建路径 Baklib通过模块化架构设计与智能数据治理双轮驱动,为企业构建知识中台提供标准化实施路径。首先基于自然语言处理(NLP)技术实现非结构化文档的语义解析,打通CRM、ERP等业务系统间的数据孤岛;随…

【Gemini 深度研究】人形机器人:最新开发方案与未来展望 (2024-2025)

Gemini根据深度研究报告自动生成的html网页录屏 人形机器人:最新开发方案与未来展望 (2024-2025) I. 执行摘要 2024年至2025年,人形机器人正处于从科研探索向实际应用转型的关键时期,其作为通用型机器人的潜力日益显现。这一转变主要得益于具…

【动态规划:斐波那契数列模型】第 N 个泰波那契数

1、第 N 个泰波那契数(easy) 1137. 第 N 个泰波那契数 泰波那契序列 Tn 定义如下: ​ T0 0, T1 1, T2 1, 且在 n > 0 的条件下 Tn3 Tn Tn1 Tn2。给你整数 n,请返回第 n 个泰波那契数 Tn 的值。 示例 1: …

秋招Day11 - JVM - JVM调优

性能监控的命令行工具? 操作系统层面: 我用过top来查看cpu和内存的使用情况使用过vmstat查看过虚拟内存的统计信息使用过iostat查看过系统的io情况使用过netstat查看过系统的网络信息 JDK自带的命令层面,我使用过: jmap -heap…

ChatGPT Plus/Pro 订阅教程(支持支付宝)

订阅 ChatGPT Plus GPT-4 最简单,成功率最高的方案 1. 登录 chat.openai.com 依次点击 Login ,输入邮箱和密码 2. 点击升级 Upgrade 登录自己的 OpenAI 帐户后,点击左下角的 Upgrade to Plus,在弹窗中选择 Upgrade plan。 如果…

【深度学习】12. VIT与GPT 模型与语言生成:从 GPT-1 到 GPT4

VIT与GPT 模型与语言生成:从 GPT-1 到 GPT4 本教程将介绍 GPT 系列模型的发展历程、结构原理、训练方式以及人类反馈强化学习(RLHF)对生成对齐的改进。内容涵盖 GPT-1、GPT-2、GPT-3、GPT-3.5(InstructGPT)、ChatGPT …

笔试模拟 day14

观前提醒: 笔试所有系列文章均是记录本人的笔试题思路与代码,从中得到的启发和从别人题解的学习到的地方,所以关于题目的解答,只是以本人能读懂为目标,如果大家觉得看不懂,那是正常的。如果对本文的某些知…

基于照片环境信息的AI定位技术:从原理到实战的深度解析

基于照片环境信息的AI定位技术:从原理到实战的深度解析 摘要 本文聚焦基于照片环境信息的AI定位技术,系统梳理其核心原理、技术实现路径及行业应用场景。结合多模态融合、深度学习优化等前沿技术,分析如何通过AI训练提升定位精度&#xff0c…

NumPy 2.x 完全指南【二十二】数组标量

文章目录 1. 标量(Scalar )2. 数组标量(Array Scalar)3. 标量类型3.1 基类3.1.1 generic3.1.2 number3.1.3 flexible 3.2 整数类型3.2.1 有符号整数3.2.2 无符号整数 3.3 不精确类型3.3.1 浮点数3.3.2 复数 3.4 其他类型3.4.1 布尔…

外地车在北京进京证用完后该如何行驶

外地车在北京进京证用完后该如何行驶 这个问题想必非京籍的车友都有这样的困惑吧 作为一名资深外地车主,已在北京漂泊了13年之久,12次进京证的办理根本不够用,也有网友支招说和家人来回过户200搞定,多出12次,奈何这种…

可靠数据传输原理

目录 构造可靠数据传输协议 一、rdt1.0:理想信道下的可靠传输 核心假设与功能 二、rdt 2.0:带差错检测的停等协议 核心假设与功能 三、rdt 2.1:修复 ACK/NAK 不可靠性 核心改进 四、rdt 2.2:纯 ACK 实现的可靠传输 核心改…

JAVA重症监护系统源码 ICU重症监护系统源码 智慧医院重症监护系统源码

智慧医院重症监护系统源码 ICU重症监护系统源码 开发语言:JavaVUE ICU护理记录:实现病人数据的自动采集,实时记录监护过程数据。支持主流厂家的监护仪、呼吸机等床旁数字化设备的数据采集。对接检验检查系统,实现自动化录入。喜…

新版LangChain向量数据库VectorStore设计详解

导读:在大型语言模型与知识库集成的实践中,向量数据库的选择和架构设计往往成为项目成败的关键因素。本文深入剖析了LangChain框架中VectorStore的核心设计理念,为开发者提供了系统性的技术指导和实践方案。 文章揭示了LangChain如何通过抽象…

Transformer架构核心流程解析

Transformer的核心流程 Tokenizer→Embedding→Attention→FFN 1. 文本预处理与分词阶段(Tokenizer) 分词方式演进 基于单词的分词器:通过空格、标点符号拆分,但词汇表庞大且易出现未知词(UNK)基于字符…

【五模型时间序列预测对比】Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN

【五模型时间序列预测对比】Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN 目录 【五模型时间序列预测对比】Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Transformer-LSTM、Transformer、CNN-LSTM、LSTM、…

美国华盛顿州一公园发生枪击事件 7人受伤

美国华盛顿州一公园在5月28日晚间发生枪击事件,导致7人受伤,其中3人伤势严重。警方表示,目前尚不清楚有多少嫌疑人参与了这起事件,并且截至事发当日,还没有任何人被逮捕。责任编辑:zx0176