性能测试~

news2025/4/25 22:08:00

1.什么是性能测试

1.什么是性能

就像这两个车一样,虽然都是代步工具,构造都是一样的,但是路虎的发动机要比捷达好.路虎的百米加速却是比捷达快的,我们就知道路虎的性能要比捷达好 .

那么什么是软件的性能呢?我们分析一下

2.常见的性能测试指标

2.1并发数

并发数是指在同一时间点上,系统能够同时处理的请求或任务的数量.比如:"双十一电商大战".此时各大电商平台在某一时间段突然涌入大量的用户,下单商品.如果系统承受不住高并发的压力,就会挂掉.

2.2 吞吐量

单位时间内处理的并发数,直接体现软件系统负载承受能⼒。吞吐量越⾼,系统承受的并发越
多,性能越好。
吞吐量反映了系统在一定时间内完成工作的能力。例如,在网络通信中,吞吐量可以表示为单位时间内成功传输的数据量

2.3 响应时间

应⽤系统从请求发出开始,到客⼾端接收到最后⼀个字节数据所消耗的时间。
响应时间反映了系统对请求的处理速度。在不同的应用场景中,响应时间的具体含义和重要性有所不同。例如,在网页浏览中,响应时间是指从用户点击链接或提交表单到浏览器接收到完整页面内容并显示出来的时间。对于在线交易系统,响应时间则是从用户提交交易请求到系统返回交易结果的时间

2.4 并发数,吞吐量,响应时间的关系

当并发⽤⼾较少,系统吞吐量低,系统响应时间较短,我们认为系统处于空闲区间。随着系统并发⽤⼾增加,系统吞吐量开始呈线性增⻓,系统性能进⼊了线性增⻓区间。 吞吐量在某个点上达到了饱和点,也称之为拐点。在这之后⽤⼾请求不再被⽴即处理,响应时间随之 变⻓,吞吐量也逐渐降低,系统性能进⼊了过饱和区间。

2.5 事务

⼀个接⼝可以是⼀个事务,多个接⼝也可以是事务,⼀个流程可以是事务,事务代表⼀个完整的功
能。用户登录接口我们就视为一个事务.而我们的下单事务,可能包含多个接口,比如商品下单,支付信息等,包含很多接口,我们把这个也称为一个事务.银行转账系统中,从一个账户扣除一定金额并将其添加到另一个账户的操作就是一个事务。
TPS和QPS

TPS:每秒处理事务数,⽤于衡量系统在⼀定时间内能够处理的事务数

QPS:每秒查询率.是用于衡量系统每秒能够处理的查询请求数量的指标,常用于评估数据库、搜索引擎、Web 服务器等系统的性能。

资源利用率

观察CPU,内存,硬盘的使用信息


3.性能测试分类

3.1基准测试

基准测试(Benchmark Testing)⼜称单⽤⼾测试,主要⽤于监测被测系统在较低压⼒下的运⾏状
况并记录相关数据。当性能测试环境确定以后,通常选取业务模型中的重要业务做基准测试,对
被测系统施加⼀定压⼒,从⽽获取被测系统在单⽤⼾运⾏情况下的各项性能指标,为多⽤⼾并发
测试和混合场景测试等提供参考依据

3.2并发测试

并发测试(Concurrency Testing)⽤于评估被测系统的某些特定操作同时发⽣时的性能表现,例
如,被测系统被多个⽤⼾同时登录时的响应能⼒,或系统的某⼀功能被多个⽤⼾同时操作时的性
能表现。

3.3负载测试

负载测试是通过逐步加载的⽅式来确定系统的处理能⼒。负载测试
类似于举重运动,通过不断给运动员增加重量,确定运动员在其⾝体状况保持正常的情况下所能
举起的最⼤重量。通过负载测试可以获取系统能够达到的峰值指标。
例如,⼀个软件系统的响应时间要求不超过2秒,如果在这个前提下不断增加⽤⼾访问量,系统
的响应时间就会变⻓。假设当访问量超过1万⼈时系统的响应时间超过2秒,那么就可以确定在系
统响应时间不超过2秒的前提下,系统的最⼤负载量是1万⼈。负载测试可⽤于系统的性能验证、
性能诊断和性能调优等场景

3.4压力测试

进⾏压⼒测试时通常采⽤逐步增加系统负载的⽅式,使系统某些资源达到饱和甚⾄失
效,从⽽发现那些只有在⾼负载条件下才会出现的缺陷,如同步问题、内存泄漏等。通过对被测
系统进⾏压⼒测试,也能找出被测系统的性能拐点,获得系统所能提供的最⼤服务级别(系统所
能承受的最⼤压⼒),评估系统在峰值负载或超出最⼤负载情况下的处理能⼒。压⼒测试主要⽤
于性能诊断、性能调优和容量规划等场景

压力测试和负载测试的区别

负载测试是在保持性能指标要求的前提下测试系统能够承受的最⼤负
载,⽽压⼒测试则是测试系统性能达到极限的状态.

4.性能测试实战

4.1安装性能测试工具

1.性能测试工具我们这里使用jmeter.

Apache JMeter - Apache JMeter™https://jmeter.apache.org/2.打开jmeter

3.每次打开都很费劲,所以我们添加环境变量在命令行打开

4.2操作 jmeter进行性能测试

4.2.1添加线程组

线程组就是模拟用户发送请求

 

4.2.2添加请求

这一步就是构造访问请求,接下来我们对登录接口进行性能测试

构造完请求之后我们要观察结果,所以加入"查看结果树"

接下来我们运行观察结果,我们看到返回的结果都是正确的


 4.2.3 重要组件

前面我们已经使用了线程组和HTTP请求组件,接下来我们介绍一些比较常用的组件

4.2.3.1 HTTP请求默认值

每次对一个接口进行性能测试都要在HTTP请求器中输入IP,端口,十分麻烦.所以我们就可以使用HTTP请求默认值这个组件来将IP地址和端口号设置成默认值,这样我们就不要每次发送请求的时候重复输入了

设置好了之后后续我们构造HTTP请求器的时候就不用输入了


4.2.3.2 CSV数据文件格式
以登陆接⼝为例,当我们执⾏登陆接⼝的性能测试时,⼿动配置了⽤⼾名和密码为固定的username和password,然⽽实际使⽤中不可能只有⼀个⽤⼾登陆,为了模拟更真实的登录环境,我们需要提供更多的⽤⼾username和password来实现登录操作
文件名: 填写csv⽂件的路径。建议使⽤绝对路径。(创建一个excel表格,写完数据之后存储到本次创建的测试项目路径下)
文件编码:UTF-8
变量名称( 从csv数据⽂件中读起的数据需要保存到的变量名。有多个变量时⽤逗号分隔)
是否忽略⾸⾏:是否从csv数据⽂件第⼀⾏开始读取
分隔符:要求与csv数据⽂件中多列的分隔符⼀致
遇到⽂件结束符再次循环:若选择为True当数据不够的时候会从头取。若选择False,则需要勾选
下⾯的配置,遇到⽂件结束符停⽌线程,这⾥如果不勾选,请求将会报错。

1.创建csv文件

2.修改登陆接⼝及其他涉及到username和password获取的参数

修改完该配置后,登陆接⼝发起请求时将从csv⽂件中获取配置好的username和password参数,获取顺序为从上往下依次获取
3. 修改线程组中线程数,使得每次取到的username和password都不⼀样
4.运行结果

4.2.3.3 JSON提取器

在我们设计后端服务器代码的时候,为了防止用户跳过登录,直接访问我们的其他页面,我们设置了拦截器,访问页面必须要携带token或者session.而只有在登录的时候才会生成.我们通过url直接访问页面就会受到拦截.

但是在我们做性能测试的时候,都是对一个一个接口进行测试,不是完整的测试一个流程.所以其他的接口不会携带token或者session,所以返回的就是失败.所以我们就要用到json提取器.将token从登录返回的响应中提取出来,放到HTTP信息头管理器中,其他的接口也就可以拿到token,进而可以访问了

如何从登录中获取token,这里我们使用JSON提取(其实还有很多方法,这里就不一一列举了)


4.2.3.4 JSON断言

接口请求成功返回状态码200并不能完全代表接口请求成功,我们还要关注返回的数据是否符合预期

(1)添加断言

针对某⼀个HTTP请求接⼝添加JSON断⾔
(2).添加JSON断言配置
注意:
1)若不选Additionally assert value,表⽰添加断⾔值,则可⽤来判断字段是否存在
2)选择Additionally assert value,则必须添加Expected Value期望的断⾔值
3)若不选Match as regular expression正则匹配,则Expected Value必须填写完整,少⼀个字符都
会导致断⾔失败
4)若选择Match as regular expression正则匹配,则Expected Value可以仅写上部分关键词即可断
⾔成功

4.2.3.5 同步定时器

JMeter同步定时器的作⽤主要在于模拟多⽤⼾并发访问的场景,确保多个线程能够同时执⾏某个操
作,以达到真正的并发效果。
当多个线程同时启动时,它们可能会在不同的时间间隔内执⾏,这样就⽆法达到真正的并发效果。同 步定时器的作⽤就是将这些线程的执⾏时间同步,使它们在同⼀时间点执⾏。它可以在多个线程之间 制造⼀定的延迟,直到同时到达指定时间点,再同时执⾏后续的操作。
此外,同步定时器可以理解为集合点,当线程数量达到指定值后,再⼀起释放,可以瞬间产⽣很⼤的 压⼒。这样,可以更好地模拟真实的⽤⼾并发访问场景,提⾼测试的准确性和可靠性。
在性能测试过程中,为了真实模拟多个⽤⼾同时进⾏操作以度量服务器的处理能⼒,可以使⽤同步定 时器来设置集合点。不过,虽然通过加⼊集合点可以约束请求同时发送,但不能确保请求同时到达服 务器,所以只能说是较真实模拟并发
现实⽣活中,红绿灯就相当于⼀个集合点,有⼈先到达,有⼈后达到,但必须等到绿灯后所有⼈才能开始过⼈⾏道。

4.2.3.6 事务控制器
Meter事务控制器的作⽤主要⽤于测试执⾏嵌套测试元素所花费的总时间。这相当于模拟⽤⼾进⾏⼀系列操作的测试。
在进⾏⻚⾯性能测试或API性能测试时,事务控制器是⼀个⾮常重要的⼯具。它可以帮助测试⼈员更准确地评估系统性能,尤其是在涉及多个接⼝或操作的复杂场景中。例如,在订单提交的过程中,可能 需要调⽤多个接⼝,并且某些接⼝可能依赖于前⼀个接⼝的结果。在这种情况下,使⽤事务控制器可以将这些接⼝统⼀视为⼀个事务进⾏性能测试,从⽽得到更接近真实场景的性能测试结果

4.2.3压力测试

4.2.3.1 安装管理插件

Install :: JMeter-Plugins.org A custom set of plugins for Apache JMeter, not affiliated with Apache Software Foundation, graphs, load shapers, new functions.https://jmeter-plugins.org/install/Install/下载监听器插件

下载线程组插件

安装完后


4.2.3.2 Stepping Thread Group(梯度压测)

This group will start:启动多少个线程,同线程组中的线程数
First, wait for:等待多少秒才开始压测,⼀般默认为0
Then start:⼀开始有多少个线程数,⼀般默认为0
Next,add:下⼀次增加多少个线程数
threads every:当前运⾏多⻓时间后再次启动线程,即每⼀次线程启动完成之后的的持续时间;
using ramp-up:启动线程的时间;若设置为5秒,表⽰每次启动线程都持续5秒
thenhold loadfor:线程全部启动完之后持续运⾏多⻓时间
finally,stop/threadsevery:多⻓时间释放多少个线程;若设置为5个和1秒,表⽰持续负载结束之后
每1秒钟释放5个线程
4.2.3.3 监听器

聚合报告


Response Times Over Time
Response Times Over Time的图形展⽰中,横坐标通常代表运⾏时间,⽽纵坐标则代表响应时间(单位是毫秒)。测试⼈员可以根据图形中的趋势线来判断响应时间的稳定性以及是否存在⼤的波动。例如,如果响应时间在某个时间点突然增加,这可能意味着系统在该时间点遇到了性能问题。

Transactions per Second(TPS)
JMeter中的Transactions per Second(TPS)监听器是⼀个⽤于分析系统吞吐量的重要⼯具。TPS
即每秒事务数,表⽰⼀个客⼾机向服务器发送请求后服务器做出反应的过程。这个指标反映了系统在 同⼀时间内处理业务的最⼤能⼒。TPS值越⾼,说明系统的处理能⼒越强
在使⽤TPS监听器时,横坐标通常代表运⾏时间,⽽纵坐标则代表TPS值。通过监听器展⽰的图表,可 以清晰地看到TPS值随时间的变化情况。在图表中,红⾊通常表⽰通过的TPS,⽽绿⾊可能表⽰失败的TPS。这有助于我们快速识别系统性能的变化和瓶颈

4.2.4测试报告

JMeter测试报告是⼀个全⾯⽽详细的⽂档,它提供了关于测试执⾏结果的详细信息,帮助⽤⼾全⾯评估系统的性能并进⾏性能优化。⽣成性能测试报告的命令
Jmeter -n -t 脚本⽂件 -l ⽇志⽂件 -e -o ⽬录
-n : ⽆图形化运⾏
-t : 被运⾏的脚本
-l : 将运⾏信息写⼊⽇志⽂件,后缀为 jtl 的⽇志⽂件
-e : ⽣成测试报告
-o : 指定报告输出⽬录

注意:⽇志⽂件和⽬录可以不存在,若为已经存在的情况下需要保证内容为空,否则会出现错误! 

运行后:

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

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

相关文章

排查使用RestTemplate远程调用,@RequestBody注解接收不到实体类

做项目学习,使用RestTemplate远程调用,从order订单系统调用pay支付系统,出现使用Request做远程接收。 代码的逻辑很简单,但就是没有接收到实体类 1. 猜想是不是没有序列化和初始化方法? 这个好排查,看Pay和…

数据库同步中间件PanguSync:如何跳过初始数据直接进行增量同步

某些用户在使用数据库同步中间件PanguSync时说,我不想进行初次的全量同步,我已经源备份还原到目标库了,两边初始数据一样,想跳过初始数据,直接进行增量同步,该怎么设置。 直接上干货,按如下步骤…

qwen2.5vl技术报告解读

一. 首先qwen2.5vl模型特点 全能文档解析能力 升级文本识别至全场景文档解析,擅长处理多场景、多语种及复杂版式文档(含手写体、表格、图表、化学方程式、乐谱等),实现跨类型文档的精准解析。 跨格式精准目标定位 突破格式限制,大幅提升对象检测、坐标定位与数量统计精度,…

【Linux】进程的详讲(上)

目录 📖1、冯诺依曼体系结构 📖2、硬件介绍 📖3、内存的重要性 📖4、程序运行的步骤 📖5、QQ聊天时的数据流动 📖6、操作系统 📖7、操作系统的目的 📖8、操作系统是如何…

Pyside6 开发 使用Qt Designer

使用Qt Designer 在Scripts目录下打开pyside6-designer.exe 分别将姓名、年龄、爱好对应的输入框的ObjectName 设置为 uname、uage、ulike 提交按钮Object设置为 btnSubmit 点击保存文件 ,命名为student.ui 将.ui文件编程成.py文件 pyside6-uic student.ui -o st…

PyQt6实例_批量下载pdf工具_使用pyinstaller与installForge打包成exe文件

目录 前置: 步骤: step one 准备好已开发完毕的项目代码 step two 安装pyinstaller step three 执行pyinstaller pdfdownload.py,获取初始.spec文件 step four 修改.spec文件,将data文件夹加入到打包程序中 step five 增加…

局域网共享失败?打印机/文件夹共享工具

很多时候,在办公或家庭环境中,我们需要进行打印机和文件夹的共享,以便更高效地协作和处理文件。然而,寻找对应版本的共享设置或是不想花费太多时间去进行复杂的电脑设置,总是让人感到头疼。今天,我要向大家…

DeepSeek-V3-250324: AI模型新突破,性能超越GPT-4.5

DeepSeek 于 3 月 25 日宣布完成 V3 模型的小版本升级,推出 DeepSeek-V3-250324 版本。新版本在推理能力、代码生成、中文写作及多模态任务上实现显著优化,尤其在数学和代码类评测中得分超越 GPT-4.5,引发行业高度关注。 DeepSeek-V3-250324…

第R9周:阿尔兹海默症诊断(优化特征选择版)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 文章目录 1、导入数据2、数据处理2.1 患病占比2.2 相关性分析2.3 年龄与患病探究 3、特征选择4、构建数据集4.1 数据集划分与标准化4.2 构建加载 5、构建模型6…

19726 星际旅行

19726 星际旅行 ⭐️难度&#xff1a;困难 &#x1f31f;考点&#xff1a;Dijkstra、省赛、最短路问题、期望、2024 &#x1f4d6; &#x1f4da; import java.util.*;public class Main {static int N 1005;static ArrayList<Integer>[] g new ArrayList[N]; // …

DeepSeek大模型应用开发新模式

DeepSeek大模型应用全景技术架构 DeepSeek大模型 VS 主流大模型 DeepSeek大模型系统提示词 VS 主流大模型 DeepSeek大模型迭代版本 DeepSeek专业化模型分类 DeepSeek大模型部署所需显存资源 DeepSeek不同参数模型及应用场景 DeepSeek大模型安装部署技术选型

探索:如何构建一个自我的AI辅助的开发环境?

构建支持AI的开发辅助环境并实现全流程自动化&#xff0c;需要整合开发工具链、AI模型服务和自动化流水线。以下是分步实施指南&#xff0c;包含关键技术栈和架构设计&#xff1a; 一、开发环境基础架构 1. 工具链集成平台 #mermaid-svg-RFSaibQJwVEcW9fT {font-family:"…

华为eNSP-配置静态路由与静态路由备份

一、静态路由介绍 静态路由是指用户或网络管理员手工配置的路由信息。当网络拓扑结构或者链路状态发生改变时&#xff0c;需要网络管理人员手工修改静态路由信息。相比于动态路由协议&#xff0c;静态路由无需频繁地交换各自的路由表&#xff0c;配置简单&#xff0c;比较适合…

时尚界正在试图用AI,创造更多冲击力

数字艺术正以深度融合的方式&#xff0c;在时尚、游戏、影视等行业实现跨界合作&#xff0c;催生了多样化的商业模式&#xff0c;为创作者和品牌带来更多机会&#xff0c;数字艺术更是突破了传统艺术的限制&#xff0c;以趣味触达用户&#xff0c;尤其吸引了年轻一代的消费群体…

ai画图comfyUI 精准定位gligen。允许指定图像中多个对象的位置和大小

基础功能下&#xff0c;outpainting是内容填充&#xff0c;拉近拉远镜头&#xff0c;自动填充旁边物体。嵌入模型也需要单独下载&#xff0c;演示完示例后推荐模型站有更直观效果介绍和用法。选中精确定位。看一眼坐标&#xff0c;直接默认出一张图。然后修改定位&#xff0c;和…

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例7,TableView16_07 列拖拽排序示例

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例7,TableView16_07 列…

使用idea开发spark程序

新建scala 项目 创建lib目录 将spark jars/ 路径下所有jar 复制到 lib目录 添加依赖 创建scala 程序 package sparkimport org.apache.spark.{SparkConf, SparkContext}object WordCount {def main(args: Array[String]): Unit {val conf new SparkConf().setAppName(&q…

学习日记0327

A cross-domain knowledge tracing model based on graph optimal transport 我们使用gnn来学习这些节点的特征。在此基础上&#xff0c;我们使用显式分布距离度量对齐来自两个不同域的特征向量&#xff0c;旨在最小化域差异&#xff0c;实现最大的跨域知识转移。 AEGOT-CDKT…

CSS学习笔记6——网页布局

目录 一、元素的浮动属性、清除浮动 清除浮动的其他方法 1、使用空标签清除浮动影响 2、使用overflow属性清除浮动 3、使用伪元素清除浮动影响 原理 overflow属性 二、元素的定位 1、相对定位 2、绝对定位 ​编辑 3、固定定位 z-index层叠等级属性 一、元素的浮动…

线程同步——互斥锁

线程同步——互斥锁 目录 一、基本概念 二、打印成对出现的字母 三、生产者消费者&#xff08;有限缓冲问题&#xff09; 3.1 基本概念 3.2 代码实现 一、基本概念 互斥锁是一种用于控制对共享资源访问的同步机制。它确保在同一时间内&#xff0c;只有一个线程可以访问被…