性能测试 --概念

什么是性能测试

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

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

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

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

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

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

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

就以购物软件为例:

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://xiahunao.cn/news/3030760.html

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

相关文章

用户体验优化uxo指的是什么?

用户体验优化(User Experience Optimization,简称UXO)是一种专注于改善和提升用户在使用企业产品或服务时的整体感受和体验的过程。简单来说,它旨在通过改进产品或服务的设计和功能,使用户在使用过程中感到更加愉悦、满意和高效。用户体验优化…

区块链的跨链交互:从学校间交流看跨链技术

区块链是一种去中心化的分布式账本技术,它通过加密学和共识机制来确保数据的安全性和不可篡改性。每个区块链就像一所独立的学校,有自己的制度、学生和重点专业。它们各自运行,有时在同一领域展开不同的活动。随着区块链技术的不断发展&#…

Excel中实现md5加密

1.注意事项 (1)在Microsoft Excel上操作 (2)使用完,建议修改的配置全部还原,防止有风险。 2.准备MD5宏插件 MD5加密宏插件放置到F盘下(直接F盘下,不用放到具体某一个文件夹下) 提示:文件在文章顶部&…

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

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

表面的相似,本质的不同

韩信与韩王信,两个韩信的结局都是被刘邦所杀,似乎结局类似。但是,略加分析,就会发现其中存在本质的区别。 韩信属于必杀。他的王位是要来的,有居功自傲的本意,功高震主而且毫不避讳。而且年轻,…

【CTF Crypto】XCTF GFSJ0522 base64 Writeup(Base64编码)

base64 元宵节灯谜是一种古老的传统民间观灯猜谜的习俗。 因为谜语能启迪智慧又饶有兴趣,灯谜增添节日气氛,是一项很有趣的活动。 你也很喜欢这个游戏,这不,今年元宵节,心里有个黑客梦的你,约上你青梅竹马…

指针(脑图梳理)

今天让我们来梳理一下指针都有哪些概念吧 这个脑图是整理的一些指针相关知识的概念,希望对大家有帮助

Element快速上手!

Element是饿了么公司前端团队开发的一套基于Vue的组件库,用于快速构建网页~ 官网链接: Element - The worlds most popular Vue UI frameworkElement,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库https://element.elem…

arp icmp 等报文格式

ARP报文格式 ARP是一个独立的三层协议,所以ARP报文在向数据链路层传输时不需要经过IP协议的封装,而是直接生成自己的报文,其中包括ARP报头,到数据链路层后再由对应的数据链路层协议(如以太网协议)进行封装…

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

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

【JVM基础篇】JVM入门介绍

JVM入门介绍 为什么学习JVM 岗位要求 解决工作中遇到的问题 性能调优 真实案例 导出超大文件,系统崩溃从数据库中查询超大量数据出错消费者消费来不及导致系统崩溃Mq消息队列接受消息导致的内存泄漏业务高峰期系统失去响应 初识JVM 什么是JVM? JV…

Excel——项目管理,设置时间到期自动提醒及颜色高亮

效果图 第一步、自动获取合同到期日期 1、首先合同【签约日期】和【到期日期】下面的数据必须是日期格式,不能是其它的格式否则无法计算,如果是其它格式需要转换成标准的日期格式,如下图所示。 2、在“到期日期”下面的第一个单元格中输入公…

【Web后端】web后端开发简介_Servlet简介

1.web后端开发简介 Java企业级开发,也就是学习]avaEE(Enterprise Edition)版本,是一种结构和一套标准。在应用中开发的标准就是Servlet、jsp和JavaBean技术。jsp技术现在已基本处于淘汰状态,简单了解即可web后端开发,基于B/S模式的开发体系。…

【系统架构师】-选择题(十二)计算机网络

1、网闸的作用:实现内网与互联网通信,但内网与互联网不是直连的 2、管理距离是指一种路由协议的路由可信度。15表示该路由信息比较可靠 管理距离越小,它的优先级就越高,也就是可信度越高。 0是最可信赖的,而255则意味…

智能奶柜:健康生活新风尚

智能奶柜:健康生活新风尚 在快节奏的都市生活中,健康与便利成为了现代人的双重追求。而在这两者交汇之处,智能奶柜应运而生,它不仅是科技与生活的完美融合,更是日常营养补给的智慧之选。 清晨的第一缕温暖 —— 新鲜…

Ansible-Playbook通过role角色部署Lnmp架构

目录​​​​​​​ 一、配置Nginx的Roles角色 1.1编写files/default.conf 1.2编写files/nginx.repo 1.3编写handlers/main.yml 1.4编写tasks/main.yml文件 1.5编写vars/main.yml文件 1.6测试运行结果,并不是真的执行任务 二、配置Mysql的Roles角色 2.1编写…

Go实现树莓派I2C读取SHT30温度湿度传感器

简介 树莓派其实本身包含很多资源引脚, 合理利用其实可以自制智能家居的一部分,本身硬件和Linux系统等高级语言支持加生态, 不说了, 做就好了… I2C 功能开启 参考之前的文章就可以了 Go实现树莓派读取bh1750光照强度 查看I2C总…

(Java)心得:LeetCode——5.最长回文子串

一、原题 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 1: 输入:s "babad" 输出:"bab" 解释:"aba"…

网页版Figma汉化

最近学习Figma,简单介绍一下网页版Figma的汉化方法 1.打开网址:Figma软件汉化-Figma中文版下载-Figma中文社区 2.下载汉化插件离线包 解压汉化包 3.点开谷歌的管理扩展程序 4.点击加载已解压的扩展程序,选择刚刚解压的包 这样就安装好了汉化…

厚德提问大佬答4:AI绘画生成的心得

遇到难题不要怕!厚德提问大佬答! 厚德提问大佬答 你是否对AI绘画感兴趣却无从下手?是否有很多疑问却苦于没有大佬解答带你飞?从此刻开始这些问题都将迎刃而解!你感兴趣的话题,厚德云替你问,你解…