性能测试~

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.mzph.cn/web/73717.shtml

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

相关文章

【极速版 -- 大模型入门到进阶】LORA:大模型轻量级微调

文章目录 🌊 有没有低成本的方法微调大模型?🌊 LoRA 的核心思想🌊 LoRA 的初始化和 r r r 的值设定🌊 LoRA 实战:LoraConfig参数详解 论文指路:LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE M…

【论文分析】无人机轨迹规划,Fast-Planner:实时避障+全局最优的路径引导优化算法

这篇论文《Robust Real-time UAV Replanning Using Guided Gradient-based Optimization and Topological Paths》由香港科技大学提出,主要针对无人机(UAV)在复杂环境中的实时轨迹重新规划问题,提出了一种结合梯度优化和拓扑路径搜…

禅道品牌全面战略升级:开创项目管理国产化替代新格局

2025年,禅道软件完成企业品牌战略深度升级。此次升级,从产品力、服务力到生态圈构建等方面进行了全面优化,以更智慧的解决方案、更开放的生态布局,更安全的国产化解决方案,助力企业实现从“工具应用”到“价值创造”的…

PyTorch处理数据--Dataset和DataLoader

在 PyTorch 中,Dataset 和 DataLoader 是处理数据的核心工具。它们的作用是将数据高效地加载到模型中,支持批量处理、多线程加速和数据增强等功能。 一、Dataset:数据集的抽象‌ Dataset 是一个抽象类,用于表示数据集的接口。你…

Android 蓝牙/Wi-Fi通信协议之:经典蓝牙(BT 2.1/3.0+)介绍

在 Android 开发中,经典蓝牙(BT 2.1/3.0)支持多种协议,其中 RFCOMM/SPP(串口通信)、A2DP(音频流传输)和 HFP(免提通话)是最常用的。以下是它们在 Android 中的…

R002-云计算

1 概念 英文名:Cloud Computing 核心:云计算的核心概念就是以互联网为中心,在网站上提供快速且安全的云计算服务与数据存储,让每一个使用互联网的人都可以使用网络上的庞大计算资源与数据中心 2.分类 基础设施即服务(IaaS)它向…

降维(DimensionalityReduction)基础知识2

文章目录 五、基于局部结构保持的降维1、Laplacian Eigenmaps(拉普拉斯特征映射)(1)邻接矩阵(2)图论基础(3)Laplace算子1、散度(Divergence)2、拉普拉斯算子3…

物联网中的物模型是什么意思,在嵌入式软件开发中如何体现?

1. 物模型的概念 物模型(Thing Model)是物联网中对物理设备或虚拟设备的抽象描述,定义了设备的属性、事件和服务。它是设备与云平台或其他设备之间交互的基础,用于统一描述设备的能力和行为。 1.1 物模型的组成 属性&#xff0…

【蓝桥杯】单片机设计与开发,PWM

一、PWM概述 用来输出特定的模拟电压。 二、PWM的输出 三、例程一:单片机P34引脚输出1kHZ的频率 void Timer0Init(void);unsigned char PWMtt 0;void main(void) {P20XA0;P00X00;P20X80;P00XFF;Timer0Init();EA1;ET01;ET11;while(1);}void Timer0Init(void) //1…

C#中,什么是委托,什么是事件及它们之间的关系

1. 委托(Delegate) 定义与作用 ‌委托‌是类型安全的函数指针,用于封装方法,支持多播(链式调用)。‌核心能力‌:将方法作为参数传递或异步回调。 使用场景 回调机制(如异步操作完…

从替代到超越,禅道国产化替代解决方案2.0发布!

3月22日,由禅道携手上海惠艾信息科技、麦哲思科技共同举办的禅道・中国行北京站活动圆满落下帷幕。 除深入探究AI赋能研发项目管理外,禅道在活动现场正式发布了《禅道国产化替代解决方案2.0》,助力企业全方位构建自主可控的研发项目管理新体…

【VirtualBox 安装 Ubuntu 22.04】

网上教程良莠不齐,有一个CSDN的教程虽然很全面,但是截图冗余,看蒙了给我,这里记录一个整洁的教程链接。以备后患。 下载安装全流程 UP还在记录生活,看的我好羡慕,呜呜。 [VirtualBox网络配置超全详解]&am…

2025美国网络专线国内服务商推荐

在海外业务竞争加剧的背景下,稳定高效的美国网络专线已成为外贸企业、跨国电商及跨国企业的刚需。面对复杂的国际网络环境和严苛的业务要求,国内服务商Ogcloud凭借其创新的SD-WAN技术架构与全球化网络布局,正成为企业拓展北美市场的优选合作伙…

2.2.2 引入配置文件和定义配置类

本实战通过三种方式实现Spring Boot中的配置加载与管理。首先,通过PropertySource加载自定义配置文件,结合ConfigurationProperties注解将配置文件中的属性绑定到Java类中,实现配置的灵活管理。其次,利用ImportResource加载XML配置…

Django:构建高性能Web应用

引言:为何选择Django? 在当今快速发展的互联网时代,Web应用的开发效率与可维护性成为开发者关注的核心。Django作为一款基于Python的高级Web框架,以其"开箱即用"的特性、强大的ORM系统、优雅的URL路由设计,…

【银河麒麟高级服务器操作系统 】虚拟机运行数据库存储异常现象分析及处理全流程

更多银河麒麟操作系统产品及技术讨论,欢迎加入银河麒麟操作系统官方论坛 https://forum.kylinos.cn 了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer…

《2核2G阿里云神操作!Ubuntu+Ollama低成本部署Deepseek模型实战》

简介: “本文为AI开发者揭秘如何在阿里云2核2G轻量级ECS服务器上,通过Ubuntu系统与Ollama框架实现Deepseek模型的高效部署。无需昂贵硬件,手把手教程涵盖环境配置、资源优化及避坑指南,助力初学者用极低成本在云端跑通行业领先的大…

【bug解决】NameError: name ‘fused_act_ext‘ is not defined

问题 使用basicsr库做超分的时候发现NameError: name fused_act_ext is not defined这个问题,一直不断重复的使用pip uninstall basicsr 和 BASICSR_EXTTrue pip install basicsr 发现一直没有执行编译过程,导致一直推理失败 原因 之前已经安装过basi…

Anaconda开始菜单里添加JupyterLab快捷方式

Anaconda开始菜单里添加JupyterLab快捷方式 在 Windows 系统安装 Anaconda 后,发现开始菜单只有 Jupyter Notebook,却找不到Jupyter Lab入口。其实这是因为最新版 Anaconda 默认未预装 Lab 组件,本篇介绍一种添加 Jupyter Lab入口到开始菜单…

【Qt】modbus客户端笔记

Qt 中基于 Modbus 协议的通用客户端学习笔记 一、概述 本客户端利用 Qt 的 QModbusTcpClient 实现与 Modbus 服务器的通信,具备连接、读写寄存器、心跳检测、自动重连等功能,旨在提供一个可靠且易用的 Modbus 客户端框架,方便在不同项目中集…