【软件测试】性能测试-概念篇

目录

🌴什么是性能测试

🌳常见性能测试指标

🚩并发数

🚩吞吐量

🚩吞吐量分类

🏀按照请求分类:TPS和QTS

🏀按照网络数据包划分:KB

🚩响应时间

🚩资源利用率

🌲性能测试关注点

🎄性能测试分类

🚩基准测试

🚩并发测试

🚩负载测试

🚩压力测试

🚩稳定性测试


目标:能够对个人编写的项目进行接口的性能测试以及性能调优

🌴什么是性能测试

性能测试和功能测试都是在系统测试阶段进行,那么这两者有什么区别呢?

案例1:五菱和法拉利都是汽车厂商生产的汽车,从功能上说,它们都有四个轮⼦一个方向盘,能够坐在里面往前开,有挡风玻璃能够遮风挡雨。

从性能来说,五菱的座椅材质可能是人造皮,法拉利是真皮;速度从0-100km/h,五菱可能需要⼗几秒,而法拉利只需要几秒,这就是性能的区别。

对于一个事情来说,能做是一回事,做的好不好又是另一回事情。就跟做饭一样,能不能吃是一回 事,好不好吃又是另一回事。

一般在真实环境、特定负载条件下,通过工具模拟实际软件系统的运行及其操作,同时监控性能各项指标,最后对测试结果进行分析来确定系统的性能情况。

对于软件来说什么是性能问题:

以购物软件为例:

1)购物过程中页面突然无法打开,刷新后可以重新打开

2)双十一期间无法进入商品页面

3)页面加载时间过长,需要消耗用户大量的等待时间

......

常见的性能问题:

查询数据时间过长,网速很慢,服务器无响应,查询数据很长时间才显示列表。

🌳常见性能测试指标

如何来评估系统性能的好坏?需要借助性能指标来统计和分析。

🚩并发数

并发用户数。

从业务层面看,并发用户数指的是实际使用系统的用户总数。

从后端服务器层⾯看,指的是web服务器在一段时间内处理浏览器请求⽽建⽴的http连接数或⽣ 成的处理线程数。

案例:⼀个已经投⼊运⾏的web系统,有5000名员⼯使⽤,最多同时有2500⼈使⽤,⽤⼾分别进⾏ 浏览⻚⾯、填写订单、提交订单、查询订单的操作。那么这个系统的业务并发⽤⼾数是2500,实际 并发⽤⼾数是提交订单和查询订单操作的⽤⼾。

🚩吞吐量

单位时间内处理的并发数(/s),直接体现软件系统负载承受能⼒。吞吐量越⾼,系统承受的并发越 多,性能越好。

案例:

有AB两种场景。

A场景,有100个并发⽤⼾,每个⽤⼾每隔1秒发送⼀个请求。

B场景,有1000个并发⽤⼾,每个⽤⼾每隔10秒发送⼀个请求。

A和B场景的吞吐量相同都是每秒100个请求。但是A场景思考时间短,所以A场景占⽤的系统资源更 多。

🚩吞吐量分类

事务:⼀个接⼝可以是⼀个事务,多个接⼝也可以是事务,⼀个流程可以是事务,事务代表⼀个完整的功 能。

🏀按照请求分类:TPS和QTS

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

计算公式:总的事务数/ 总的运⾏时间

举例1:某⼀系统1分钟处理1000个业务,那么TPS=1000/60=16.7

举例2:2022年最⾼的⼀天⼜10万笔交易,预测2023年TPS需要多少合格?认为每笔交易就是⼀个事 务,理论TPS=100000/24*60*60=1.2(理想状态),然⽽实际上订单量会在某段时间内突然增 加,并不是平均到每个时间段内,因此

1)没有更详细的数据:根据⼆⼋定律(80%的事务在20%的时间内完成)

TPS=100000*0.8/24*60*60*0.2=4.6

2)如果有详细的数据:5万笔交易在晚上的8~9点完成的

TPS=50000/60*60=13.9(实际还要参考往年业务的增⻓,假设每年业务增⻓30%,则TPS= 50000 +50000*0.3/60*60=18)23年要达到18才算合格

一般来说,吞吐量越大,性能越好

QTS(query per second):每秒查询率

若一个事务中只有一个接口且是查询接口,则QPS=TPS

🏀按照网络数据包划分:KB

也就是每秒能处理多少KB的数据

🚩响应时间

验证系统处理速度快不快

应⽤系统从请求发出开始,到客⼾端接收到最后⼀个字节数据所消耗的时间。

对于web系统⽽⾔,系统响应时间包含前端展现时间和系统响应时间。

前端展现时间:⻚⾯渲染时间

系统响应时间:包含服务器、数据库、通讯⽹络等响应时间。

并 发⽤⼾、系统吞吐量、系统响应时间之间的关系

当并发⽤⼾较少,系统吞吐量低,系统响应时间较短,我们认为系统处于空闲区间。随着系统并发⽤ ⼾增加,系统吞吐量开始呈线性增⻓,系统性能进⼊了线性增⻓区间。

吞吐量在某个点上达到了饱和点,也称之为拐点。并且并发数还在增加,在这之后⽤⼾请求不再被⽴即处理,响应时间随之变⻓,吞吐量也逐渐降低,系统性能进⼊了过饱和区间。

系统性能的拐点通常是性能测试的主要⽬的。

🚩资源利用率

通过查看系统占⽤的情况分析资源瓶颈。 服务器:CPU、内存、磁盘、⽹络等

🌲性能测试关注点

不同的⻆⾊看待性能测试的侧重点不同。

从客⼾端发起⼀个请求到客⼾端收到请求的整个过程中,各阶段都可能存在性能问题。

后端处理请求的性能问题

服务器硬件资源(CPU、内存、磁盘)

中间件、⽹络、数据库、架构设计等是否存在瓶颈。

开发⼈员和测试⼈员并不需要关注全流程的性能问题。通过分析不同⻆⾊的侧重点,从⽽促进性能测 试更好的开展。和软件系统性能相关的⻆⾊主要有四种。

  • 终端⽤⼾

对于终端⽤⼾来说,表现为⽤⼾进⾏业务操作时的主观响应时间。⽤⼾重点关注从你提交请求到收 到响应的时间,包括系统响应时间和前端展现时间。

  • 系统运维⼈员

系统运维⼈员除了关注单个请求的响应时间,更关注⼤量⽤⼾并发访问时对系统的影响,以及更⼤ 负载情况下的系统健康状态。从⽽执⾏系统的整体的策略。

1.关注全局利益最⼤化,对最⼤并发⽤⼾数和系统响应时间进⾏权衡取舍

2.系统并发处理时间、系统容量、数据库调优,以及⻓时间运⾏稳定性和可扩展性。

例如:当有以下两种⽅案时

     A⽅案:100万并发访问⽤⼾,登陆响应时间3秒

     B⽅案:500万并发访问⽤⼾,登陆响应时间8秒

这种情况下运维⼈员往往更更倾向于第⼆种。

  • 软件设计开发⼈员

关注算法设计、架构设计、性能最佳实践、数据库相关、软件性能的可测试性等⽅⾯。

例 如:对于算法,要保证⾼效,⽆内存泄漏;对于架构,要保证系统容量和性能可扩展。

  • 性能测试⼈员

⼯作重点在于性能测试场景的设计、脚本的开发和执⾏,以及性能缺陷的排查和定位。

测试⼈员除了具有及其宽⼴的知识⾯,如系统架构,存储架构,⽹络架构等全局的知识,还要有⼤ 量知识积累,⽐如数据库SQL语句的执⾏计划调优、JVM垃圾回收、多线程常⽤问题等。

可⻅性能测试的范围太⼤了,不同的⻆⾊对于性能有不同的处理⽅式

对于我们来说,只需要关注性能测试的结构,不需要对其进行性能调优,若懂一点性能调优,在面试中可说懂一点,例如数据库中不能全表查询,要用索引,索引的目的就是为了查询更快.

🎄性能测试分类

🚩基准测试

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

🚩并发测试

并发测试(ConcurrencyTesting)⽤于评估被测系统的某些特定操作同时发⽣时的性能表现,例 如,被测系统被多个⽤⼾同时登录时的响应能⼒,或系统的某⼀功能被多个⽤⼾同时操作时的性 能表现。通过并发测试,不仅可以获得被测系统在多⽤⼾并发操作时的性能指标,还可以发现被 测系统在并发条件下可能发⽣的问题,如内存泄漏、线程锁、资源争⽤问题。例如,通过模拟多 个⽤⼾同时访问某⼀条件数据,或模拟多个⽤⼾同时更新数据,可能会发现被测系统的数据库访 问错误、写⼊错误等。⼏乎所有的性能测试都会涉及⼀些并发测试。但并发测试对并发时间要求 ⽐较苛刻,通常需借助专⻔的性能测试⼯具,采⽤多线程或多进程的⽅式来模拟多个虚拟⽤⼾的 并发性操作。

🚩负载测试

负载测试(LoadTesting)是性能测试的⼀种测试类型,⽤于评估被测系统在预期的不同负载下的 ⾏为。负载测试关注系统处理不同负载的能⼒,这些负载可通过控制并发⽤⼾或者进程的数量来 实现。进⾏负载测试时,通过对系统不断增加并发访问负载,监测系统性能的变化,直到系统的 某项或多项性能指标达到安全临界值,最终确定在满⾜该安全临界值的性能指标下,系统所能承 受的最⼤负载量。简⽽⾔之,负载测试是通过逐步加载的⽅式来确定系统的处理能⼒。负载测试 类似于举重运动,通过不断给运动员增加重量,确定运动员在其⾝体状况保持正常的情况下所能 举起的最⼤重量。通过负载测试可以获取系统能够达到的峰值指标。

例如,⼀个软件系统的响应时间要求不超过2秒,如果在这个前提下不断增加⽤⼾访问量,系统 的响应时间就会变⻓。假设当访问量超过1万⼈时系统的响应时间超过2秒,那么就可以确定在系 统响应时间不超过2秒的前提下,系统的最⼤负载量是1万⼈。负载测试可⽤于系统的性能验证、 性能诊断和性能调优等场景

🚩压力测试

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

压⼒测试和负载测试的区别?

压⼒测试与负载测试不同。负载测试是在保持性能指标要求的前提下测试系统能够承受的最⼤负 载,⽽压⼒测试则是测试系统性能达到极限的状态。例如,软件系统要求的响应时间为2秒。进 ⾏负载测试时发现,当访问量达到1万时,系统响应时间不超过2秒,⽽当访问量超过1万时,系 统响应时间则会超过2秒,那么,在满⾜系统响应时间指标的前提下,该系统能够承受的最⼤访 问量是1万。进⾏压⼒测试时,则可继续增加系统的访问量,并观察系统的性能变化。例如,当系统访问量增加到2万时,发现系统响应时间延迟到5秒,⽽当访问量增加到3万时,系统则崩 溃,⽆法做出响应。由此可以确定系统能达到的极限访问量是3万

🚩稳定性测试

在负载测试的基础上,执⾏较⻓时间的测试以检查系统的稳定性。通常较⻓时间指3*24⼩时以 上。

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

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

相关文章

SpringBoot启动流程之运行时监听器

SpringBoot启动过程: 上一节我们讨论SpringApplication实例化的过程,也就是上图1-5步骤,本节我们讨论6-9的关键步骤,现在主要讲是run方法里面的过程 /*** 启动方法* param args* return*/public ConfigurableApplicationContext …

基于JAVA+SpringBoot+Vue的景区民宿预约系统

基于JAVASpringBootVue的景区民宿预约系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接🍅 哈…

Mamba所需的causal-conv1d 和mamba-ssm库在哪下载?

背景介绍 参照 Mamba [state-spaces/mamba: Mamba SSM architecture (github.com)] github中提到的环境安装[Installation 一栏] [Option] pip install causal-conv1d>1.4.0: an efficient implementation of a simple causal Conv1d layer used inside the Mamba block.…

浙版传媒思迈特软件大数据分析管理平台建设项目正式启动

近日,思迈特软件与出版发行及电商书城领域的领军企业——浙江出版传媒股份有限公司,正式启动大近日,思迈特软件与出版发行及电商书城领域的领军企业——浙江出版传媒股份有限公司,正式启动大数据分析管理平台建设项目。浙版传媒相…

华为HarmonyOS灵活高效的消息推送服务(Push Kit) - 2 开通推送服务与配置Client ID

在开通推送服务前,请先参考“应用开发准备”完成基本准备工作,再继续进行以下开发活动。 说明 从HarmonyOS NEXT Developer Beta2起,开发者无需配置公钥指纹和Client ID。 操作步骤 登录AppGallery Connect网站,选择“我的项目…

UML图中部署图例题

答案:B 知识点: 组件图 一组构件之间的组织和依赖,专注于系统的静态实现视图 部署图 运行处理结点以及构件的配置,给出体系结构的静态视图 类图 一组对象,接口,协作和它们之间的关系 UML图中涉及到…

ALTIUM DESIGNER PCB设计中关闭和打开捕捉热点(hot spot)功能

ALTIUM DESIGNER PCB设计中关闭和打开捕捉热点(snap to hot spot)功能 在采用ALTIUM DESIGNER 18 进行PCB元器件布局时,我喜欢将元器件放置在栅格(grid)上,这样元器件的位置比较规整。但在设置完栅格后&am…

Java流程控制语句——跳转语句详解:break 与 continue 有什么区别?

🌐在Java编程中,break和continue是两个重要的控制流语句,它们允许开发者根据特定条件改变程序的执行流程。虽然两者都用于中断当前的行为,但它们的作用方式不同。本文将通过生动的例子来详细解释这两个语句,并使用流程…

VMware启动时报错: “另一个程序已锁定文件的一部分,进程无法访问” 分析记录

项目场景: VMware启动时报错: “另一个程序已锁定文件的一部分,进程无法访问” 问题描述 VMware启动时报错: “另一个程序已锁定文件的一部分,进程无法访问” 原因分析: 虚拟机开启后会对部分文件继续加密,关闭时虚拟机会自动对其解密&…

计算机毕业设计之:基于uni-app的校园活动信息共享系统设计与实现(三端开发,安卓前端+网站前端+网站后端)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

Transcipher:从对称加密到同态加密

摘要 本文介绍了Transcipher的概念。在Transcipher的框架下,用户使用高效的对称加密,对自己的数据进行加密,然后将密文和私钥的同态加密密文传输给服务器。服务器进行同态解密,得到用户数据同态加密的密文。Transcipher通过将计算…

分布式锁的几种方案对比?你了解多少种呢?

目录标题 1.关于分布式锁2.分布式锁的实现方案2.1 基于数据库实现2.1.1乐观锁的实现方式2.1.2 悲观锁的实现方式2.1.3 数据库锁的优缺点 2.2 基于Redis实现2.2.1 基于缓存实现分布式锁2.2.2缓存实现分布式锁的优缺点 2.3 基于Zookeeper实现2.3.1 如何实现?2.3.2 zk实…

1.量化第一步,搭建属于自己的金融数据库!

数据是一切量化研究的前提。 做量化没有数据,就相当于做饭时没有食材。 很多时候,我们需要从大量的数据中寻找规律,并从中开发出策略。如果我们每次使用的时候,都从网上去找数据,一方面效率低下,另一方面短…

运行 xxxxApplication 时出错。命令行过长。 通过 JAR 清单或通过类路径文件缩短命令行,然后重新运行。

一、问题描述 运行 xxxxApplication 时出错。命令行过长。 通过 JAR 清单或通过类路径文件缩短命令行,然后重新运行。 二、问题分析 在idea中,运行一个springboot项目,在使用大量的库和依赖的时候,会出现报错“命令行过长”&…

你了解system V的ipc底层如何设计的吗?消息队列互相通信的原理是什么呢?是否经常将信号量和信号混淆呢?——问题详解

前言:本节主要讲解消息队列, 信号量的相关知识。 ——博主主要是以能够理解为目的进行讲解, 所以对于接口的使用或者底层原理很少涉及。 主要的讲解思路就是先讨论消息队列的原理, 提一下接口。 然后讲解ipc的设计——这个设计一些…

构建未来企业的理论基石:业务能力建模指南的深度解析与战略实施框架

数字化转型已经成为全球企业的战略焦点,在这个过程中,如何有效地将复杂的业务需求、技术架构和市场变化结合,形成具备长期竞争力的企业能力框架,是企业成败的关键。《业务能力指南》提供了一套经过验证的理论体系,帮助…

【番茄成熟度数据集】12类names

【番茄成熟度数据集】12类 names: [half-ripe, ripe, rotten tomatoes, tomato fully ripe, tomato semi ripe, tomato unripe, tomato_half_ripe, tomato_overripe, tomato_ripe, tomato_rotten, tomato_unripe, unripe] 名称: [半熟的, 成熟的, 腐烂的西红柿, 西红柿完全成熟…

centos7离线安装MySQL8

下载Mysql安装包地址 https://dev.mysql.com/downloads/mysql/解压到指定目录 [rootlocalhost tools]# tar -xvf mysql-8.4.2-1.el7.x86_64.rpm-bundle.tar -C /root/training [rootlocalhost tools]# cd ../training/ [rootlocalhost training]# ll total 1027204 -rw-r--r-…

计算机毕业设计之:基于微信小程序的诗词智能学习系统(源码+文档+解答)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

Spring_AMQP

文章目录 一、SpringAMQP二、SpringAMQP应用2.1、消息发送2.2、消息接收 一、SpringAMQP SpringAMQP是基于RabbitMQ封装的一套模板,并且还利用SpringBoot对其实现了自动装配,使用起来非常方便。 SpringAmqp的官方地址。 SpringAMQP提供了三个功能&am…