性能测试 --概念

news2024/10/5 20:20:30

什么是性能测试

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

案例:豌豆射手和三线射手都是射手, 它们的功能都是向前发射豌豆进行攻击, 能够攻击到地面的僵尸.

但是从性能上来讲, 豌豆射手只能攻击到一路的僵尸, 而三线射手能同时攻击三路(注:放在边路实际攻击的是两路)的僵尸, 这样我们就可以看出三线射手性能是更高的.

对于一个事情, 能做是一回事, 能不能做好是另外一回事, 就跟做饭一样, 是不是饭是一回事, 饭好不好吃又是另一回事.

 概念: 为了发现系统的性能问题/为了得出系统的性能指标而做出的测试.

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

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

就以购物软件为例:

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

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

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

甚者如生活中的抢票功能, 对于软件的性能要求极高, 由于用户都在同一时间抢票, 并发量过大, 导致响应速度极慢, 很难抢到票, 这也是软件的一个栗子.(五一没抢到星穹铁道演唱会的票呜呜呜~)

常见性能测试指标 

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

并发数

即并发用户数.

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

从服务器后端来看, 并发数是指web服务器为了处理浏览器请求而建立的http连接数或生成的处理线程总数.

案例: 一个已经投入运行的web系统, 有5000名员工使用, 最多同时有2500人使用, 用户分别进行浏览页面, 填写订单, 提交订单, 查询订单的操作. 那么这个系统的并发用户数为2500. 实际的并发用户数是提交订单和查询订单操作的用户.

吞吐量

单位时间内处理的并发数, 直接体现软件系统的负载承受能力. 吞吐量越高, 系统承受的并发量越高, 系统性能越好.

案例: AB两场景

A场景, 有100个并发用户, 每个用户每隔1秒发出一条请求.

B场景, 有1000个并发用户, 每个用户每隔10秒发出一条请求. 但是A场景的思考时间短, 所以A场景占用的系统资源更多.

响应时间

应用系统从请求发出开始, 到客户端接收到最后一个字节数据所消耗的时间.

 对于web服务器来说, 响应时间分为前端展示时间和系统响应时间.

前端展示时间: 页面的渲染等.

系统响应的时间: 包含服务器, 数据库, 通讯网络等的响应时间.

并发用户量, 系统吞吐量与响应时间的关系:

当并发用户较少, 系统吞吐量低, 系统的响应时间比较短, 我们认为系统处于空闲区间. 随着系统用户增加, 系统吞吐量呈线性增长, 系统性能进入了线性增长区间.

吞吐量在某个点上达到了饱和点, 也称之为拐点.  在这之后用户请求不再被立即处理, 响应时间随之变长, 吞吐量开始下降, 系统性能进入了线性下降区间.(过饱和)

 系统性能测试一个关键的工作就是找到这个性能的拐点.

事务

一个接口可以是一个事务, 多个接口也可以是一个事务, 一个流程也可以是事务, 事务代表一个完整的功能.

TPS(Transaction Per Second)和QPS(Queries Per Second)

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

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

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

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

1)没有更详细的数据: 就根据二八原则, 20% 的时间会存在80%的事务

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

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

TPS = 50000 / 24 * 60 = 13.9(在实际情况下还需要考虑业务增长等问题, 这里不再详述).

QPS: 每秒查询率

当一个事务只对应一个接口且这个接口为查询接口时, TPS = QPS;

 资源的利用率

通过查看系统占用情况分析资源瓶颈.

服务器: CPU, 内存, 磁盘, 网络等.

性能测试关注点

不同角色看待性能测试的侧重点不同.

从客户端发起一个请求到客户端收到请求的整个过程中, 各阶段都可能存在问题.

后端处理请求的性能问题

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

中间件, 网络, 数据库, 架构设计是否存在瓶颈.

开发人员和测试人员不需要关注全流程的性能问题. 通过分析不同角色的侧重点, 从而促进性能测试更好的开展. 和软件系统性能相关的角色主要有4种.

终端用户

对于终端用户来说, 表现为用户进行业务操作时的主观响应时间. 用户重点关注从你提交请求到收到响应的时间, 包括之前讲到的前端展示时间和系统响应时间.

运维人员

系统运维人员除了关注单个请求的响应时间, 更关注大量用户并发访问时对系统的影响. 以及更大负载量的情况下系统的健康状态. 从而执行系统的整体策略.

1.关注全局利益最大化, 对最大并发用户数和系统响应时间进行权衡取舍.(两者的优先级视实际业务情况而定).

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

软件设计开发人员

关注算法设计, 架构设计, 性能最佳实践, 数据库相关, 软件性能和可测试性等方面.

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

测试人员

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

性能测试分类

基准测试

基准测试又称单用户测试, 主要用于监测被测系统在较低压力下的运行状态并记录相关数据. 当性能测试环境确定后, 通常选取业务模型中的重要业务做基准测试, 对被测系统施加一定的压力 从而获取被测系统在单用户运行状态下各项性能指标, 为多用户并发测试和混合场景测试提供依据.

并发测试

 并发测试用于评估被测系统的某些特定操作同时发生时的性能表现, 例如, 被测系统被多个用户同时登录时的响应能力, 或系统的某一功能被多个用户同时操作时的性能表现. 通过并发测试, 不仅可以获得被测系统在多用户并发操作时的性能指标, 还可以发现被测系统在并发条件下可能发生的问题. 如内存泄漏, 线程锁, 资源争用问题. 例如, 通过模拟多个用户同时访问某一条件数据, 或模拟多个用户同时更新数据, 可能会发现被测系统的数据库访问错误, 写入错误等. 几乎所有的性能测试都会涉及到并发测试. 但并发测试对并发时间要求比较苛刻, 通常需要借助专门的性能测试工具, 采用多线程或多进程的方式来模拟多个虚拟用户的并发性操作.

负载测试

负载测试是性能测试的一种类型, 用于评估被测系统在预期的不同负载下的行为.   负载测试关注系统处理不同负载的能力, 这些负载可通过控制并发用户或者进程的数量来实现. 进行负载测试时, 通过对系统不断增加并发访问负载 , 检测系统性能的变化, 直到系统的某项或多项性能指标达到临界安全值, 最终确定在满足安全临界值的性能指标下, 系统所能承受的最大负载量. 简而言之, 负载测试是通过逐步加载的方式确定系统的处理能力.  就比如举重运动员, 不断给他增加配重, 确定他在身体情况正常的情况下所能举起的最大重量. 通过负载测试可以获取系统能达到的峰值指标.

例如: 一个软件系统的响应时间要求不超过2s, 如果在这个前提下不断增加用户访问量, 系统的响应时间就会变长. 假设当访问量超过1w人时的系统响应时间超过2s, 那么就可以确定在系统响应时间不超过2s的前提下, 系统的最大负载量是1w人. 负载测试可用于系统的性能验证, 性能诊断和性能调优等场景. 

压力测试

 压力测试用于评估被测系统在高于预期, 高于指定容量负载需求或低于最少需求资源的条件下的行为, 且需要运行比较长的时间. 压力测试关注被测系统处理超出预期或特定峰值负载的能力, 也可以用于评估系统在资源匮乏时的处理能力. 比如在可用计算能力, 带宽和内存资源不足的条件下系统的表现. 进行压力测试时通常采用逐步增加系统负载的方式, 使系统某些资源达到饱和甚至失效, 从而发现那些只有高负载条件下才会出现的缺陷.  如同步问题, 内存泄漏, 数据库崩溃等问题. 通过对被测系统进行压力测试, 也能找出被测系统的性能拐点, 获得系统所能提供的最大服务级别(系统所能承受的最大压力), 评估系统在峰值负载或超出最大负载情况下的处理能力. 压力测试主要用于性能诊断,性能调优和容量规划的场景.

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

压力测试和负载测试不同. 负载测试是在保持性能指标要求的前提下测试系统能够承受的最大负载, 而压力测试则是测试系统性能达到极限的状态.  例如: 软件系统要求的响应时间为2s. 进行负载测试发现, 当访问量到达1w时, 系统的响应时间不超过2s, 而访问量超过1w时, 系统的响应时间则会超过2s, 那么, 在满足系统响应时间指标的前提下, 该系统能够承受的最大访问量为1w. 在进行压力测试, 则可继续增加系统的访问量, 并观察系统的性能变化. 例如, 当系统访问量增加到2w时, 发现系统的响应延迟时间为5s, 而访问量为3w时, 系统崩溃, 无法做出响应. 由此可确定系统达到极限访问量为3w.

 稳定性测试

在负载测试的基础上, 执行较长时间的测试以检查系统稳定性. 通常指3*24h以上.

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

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

相关文章

读天才与算法:人脑与AI的数学思维笔记24_预测性文本生成器

1. 起源 1.1. 人类讲故事可能起源于“假如……”这种问答结构 1.2. 讲故事是人类做安全试验的一种方式 1.2.1. 如果你问一个人“假如……”,其实是在探索你的行为对他可能带来的影响 1.3. 最早出现的故事极有可能就源自我们对在周遭混乱的环境中寻找某种秩序的渴…

基于vgg16和efficientnet卷积神经网络的天气识别系统(pytorch框架)全网首发【图像识别-天气分类】

一个能够从给定的环境图像中自动识别并分类天气(如晴天、多云、雨天、雪天闪电等)的系统。 技术栈: 深度学习框架:PyTorch基础模型:VGG16与EfficientNet任务类型:计算机视觉中的图像分类 模型选择 VGG16 …

螺栓扭矩如何设计?——SunTorque智能扭矩系统

螺栓扭矩设计的大小是一个涉及工程实践的重要问题,它直接关系到螺栓连接的紧固质量和安全性。螺栓扭矩是工程领域中常用的一个概念,用来描述螺栓在连接过程中所需的旋转力矩。正确的螺栓扭矩可以确保螺栓和螺母之间的紧密连接,避免由于松动而…

JINGWHALE 虚拟现实物质与空间理论 —— 全息世界

JINGWHALE 对此论文相关未知以及已知概念、定理、公式、图片等内容的感悟、分析、创新、创造等拥有作品著作权。未经 JINGWHALE 授权,禁止转载与商业使用。 一、虚拟现实物质与空间理论 物质是由离散的奇点JING粒子,依据不同的维度粒度,通过…

《解锁高效合同管理系统:优化业务流程,提升管理效率》

随着企业规模的扩大和业务复杂性的增加,合同管理变得愈发重要。合同是企业与客户、供应商、合作伙伴之间的法律约束和商业承诺,而有效的合同管理系统则成为企业提高运营效率、降低风险的关键工具。本文将探讨合同管理系统的重要性以及如何利用合同管理系…

网络编程——Socket——模拟用户登录

功能一:模拟用户登录 功能二:实现客户发送登录用户信息,服务器端显示登录信息并响应给客户端登录成功 这里设置的用户登录信息为:admin,123456 实现: 1.首先,服务端创建并启动服务器&#x…

selenium爬取TapTap评论

上一篇写的beautifulsoup和request爬取出的结果有误。首先,TapTap网页以JS格式解析,且评论并没有“下一页”,而是每次加载到底部就要进行等待重新加载。我们需要做的,是模仿浏览器的行为,所以这里我们用Selenium的方式…

STM32_HAL_RTC_中断实现闹钟

1STM32设置 在STM32Cude中设置RTC//具体设置看先前发的文章 再打开闹钟中断(如下图) 2代码思路 2.1启动闹钟(HAL_RTC_SetAlarm_IT(&hrtc,&sAlarm,FORMAT_BCD)) 2.2设置回调函数(void HAL_RTC_AlarmAEventC…

C++ VScode: launch: program ...... dose not exist

VScode: launch: program … dose not exist 介绍 参考VS Code 配置 C/C 编程运行环境(保姆级教程)教程配置了VSCode。在配置launch.json适用多个.c 文件编译时,弹出下面错误。 原因和解决方法 是task.json 默认配置的问题。 默认的 cwd参…

内网远程软件哪个好用

内网远程软件哪个好用 在现代化的办公环境中,内网远程软件已成为提高工作效率、实现灵活办公的重要工具。然而,市场上内网远程软件众多,究竟哪个好用呢?本文将为您推荐几款优秀的内网远程软件,并分析其特点&#xff0…

将来会是Python、Java、Golang三足鼎立吗?

在开始前我有一些资料,是我根据网友给的问题精心整理了一份「 Java的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 软件工程里没有银弹&#xff…

【Mac】Indesign 2023 Mac(ID2023) v18.5中文版安装教程

软件介绍 Adobe InDesign是一款由Adobe Systems开发的桌面排版软件,旨在用于创建、编辑和格式化印刷和数字出版物,如书籍、杂志、报纸、传单等。以下是一些关于Adobe InDesign的主要特点和功能: 1.强大的排版工具:InDesign提供了…

【Java难点】多线程-终极【更新中...】

Java内存模型之JMM 为什么需要JMM 计算机存储结构:从本地磁盘到主存到CPU缓存,也就是从硬盘到内存,到CPU。一般对应的程序的操作就是从数据库查数据到内存然后到CPU进行计算。 CPU和物理主内存的速度不一致,所以设置多级缓存&am…

JAVA 双亲委派之一

JAVA 双亲委派之一 JVM类加载流程 java语言系统内置了众多类加载器,从一定程度上讲,只存在两种不同的类加载器:一种是启动类加载器,此类加载由C实现,是JVM的一部分;另一种就是所有其他的类加载器&#xf…

《软件方法(下)》8.3.2.2 警惕拼凑泛化(202405更新)

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 8.3 建模步骤C-2 识别类的关系 8.3.2 识别泛化关系 8.3.2.1 识别泛化的思路 (3)自上而下(从一般到特殊) 如图8-92所示,这…

西湖大学英语听力考试音频无线发射系统-英语听力发射系统浅析

西湖大学英语听力考试音频无线发射系统-英语听力发射系统浅析 由北京海特伟业科技任洪卓发布于2024年5月10日 西湖大学,这所矗立于时代前沿的高等学府,始终秉持着创新精神和追求卓越的坚定信念,不断致力于教学质量的提升与学术研究的深化。其…

verilog中含有无关项的序列检测

编写一个序列检测模块,检测输入信号a是否满足011XXX110序列(长度为9位数据,前三位是011,后三位是110,中间三位不做要求),当信号满足该序列,给出指示信号match。 程序的接口信号图如…

能聚合各站热点的DailyHot

什么是 DailyHot ? 今日热榜(DailyHot)是一个获取各大热门网站热门头条的聚合网站,能追踪全网热点、实现简单高效阅读。项目分为前、后端,其中后端提供了一个聚合热门数据的 API 接口。 🚩 后端 API 特性 极快响应&a…

Gradient发布支持100万token的Lllama3,上下文长度从8K扩展到1048K

前言 近日Gradient公司在Crusoe Energy公司的算力支持下,开发了一款基于Llama-3的大型语言模型。这款新模型在原Llama-3 8B的基础上,将上下文长度从8000 token大幅扩展到超过104万token。 这一创新性突破,展现了当前SOTA大语言模型在长上下…

kali安装及替换源

一、安装及简单配置 1.安装:地址就不贴了,自己打一下就好 2.虚拟机中打开kali 3.替换包源 (1)使用指令打开/etc/apt/sources.list mousepad /etc/apt/sources.list (2)将内容替换成阿里云源 deb http://mirrors.aliyun.com/kali kali-rolling main n…