资深13年测试整理,性能测试指标-评估方法,一篇搞懂...

news2024/11/26 2:56:03

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

1、软件性能的关注点

对于用户来说,当点击一个按钮、链接或发出一条指令开始,到系统把结果以用户感知的形式展现出来为止,这个过程所消耗的时间是用户对这个软件性能的直观印象。

也就是我们所说的响应时间,当响应时间较小时,用户体验是很好的。当然用户体验的响应时间包括个人主观因素和客观响应时间,在设计软件时,我们就需要考虑到如何更好地结合这两部分达到用户最佳的体验。

如:用户在大数据量查询时,我们可以将先提取出来的数据展示给用户,在用户看的过程中继续进行数据检索,这时用户并不知道我们后台在做什么。
因此,用户关注的是用户操作后软件的响应时间。

其次,站在管理员或运维的角度考虑,他们一般关注的性能项有什么,通常来说,包括但不限如下一些指标项:
响应时间;
服务器资源使用情况是否合理;
应用服务器和数据库资源使用是否合理;
系统最多支持多少用户访问、系统最大业务处理量是多少;
系统性能可能存在的瓶颈在哪里;
更换哪些设备可以提高性能;
系统能否支持7×24小时的业务访问;、

再者,站在开发(设计)人员角度去考虑,影响性能的因素,常见有如下一些。

架构设计是否合理
数据库设计是否合理
代码是否存在性能方面的问题
系统中是否有不合理的内存使用方式
系统中是否存在不合理的线程同步方式
系统中是否存在不合理的资源竞争

2、衡量服务性能的关键指标及评估方法

在如此多的性能指标项中,最为重要的又有哪些?
或者是说在衡量服务性能指标时,最常关注的几项性能指标有哪几个:QPS(TPS)、并发数、响应时间。

QPS(TPS):每秒钟处理request/事务的数量。
并发用户数: 系统同时处理的request/事务的用户数量。
响应时间(Response Time,RT): 可以理解为服务器处理响应的耗时,一般取平均响应时间。

1) 并发用户数

提及并发用户数,如何理解什么才算是有效的并发用户?
并发用户:指的是现实系统中操作业务的用户,在性能测试工具中,一般称为虚拟用户数(Virutal User)。

需要注意的是,并发用户跟注册用户、在线用户有很大差别的,并发用户一定会对服务器产生压力的,而在线用户只是 ”挂” 在系统上,对服务器不产生压力,注册用户一般指的是数据库中存在的用户。

并发用户这些用户的最大特征是和服务器会产生交互,这种交互既可以是单向的传输数据,也可以是双向的传送数据。

并发用户数常见的评估方法:
对于已有系统来说,评估并发用户数,可以从如下几个方面去做数据参考。
系统用户数、在线用户数、并发用户数

一般来说,可选取高峰时刻,在一定时间内使用系统的人数,这些人数可认为是在线用户数,而并发用户数可以取其中8%15%的比例基数,例如在1个小时内,使用系统的在线用户数为10万,那么取8%15%(即8000~1.5万)作为并发用户数就基本足够了。

当然,网上也流行另一种并发用户数评估计算方式(可供参考)

它是由几项因素来决定的:
登录系统的用户数量(n),可以理解为平均每天访问用户数。
用户从登录系统到退出系统的时间间隔(L),可以理解为一天内用户从登录到退出系统的时间间隔。

被考察的时间长度(T),可以理解为一天内有多长时间有用户访问系统
利用经验公式估算系统的平均并发用户数和峰值数据,方法可供参考(并不一定准确):
平均并发用户数为: C = nL/T
并发用户数峰值: C‘ = C + 3
√C

例如:某系统A,有3000个用户,平均每天大概有400个用户要访问该系统,对于一个典型用户来说,一天之内用户从登陆到退出的平均时间为4小时,而在一天之内,用户只有在8小时之内会使用该系统。

平均并发用户数为:C = 400*4/8 = 200
并发用户数峰值为:C1 = 200 + 3*√200 = 243
对于新系统来说,如果没有历史数据作参考,建议通过业务部门进行评估。

2)响应时间

作为一个用户你可以对吞吐量(QPS、TPS)、并发用户数这些毫不关心,但响应时间却是用户感受系统性能的主要体现。

从用户角度来说,软件性能就是软件对用户操作的响应时间。

说得更明确一点,对用户来说,当用户单击一个按钮,发出一条指令或在web页面上单击一个链接,从用户单击开始到应用系统把本次操作的结果以用户能察觉的方式展示出来,这个过程所消耗的时间就是用户对软件性能的直观印象。

响应时间既然对用户体验如此重要,那这个时间又是如何评估计算出来的呢?
用一个公式来表示:

响应时间=网络传输时间(请求)+服务器处理时间(一层或是多层)+网络传输时间(响应)+页面前段解析时间

更具体来讲:
响应时间=呈现时间+网络传输时间+系统处理时间

呈现时间:
呈现时间主要是指前端的响应时间,这部分时间主要取决于客户端而非服务端。当然,这个呈现时间也不能全怪罪客户端身上!它还和承载它的操作系统有关,以及电脑硬件比如cpu 、内存有关。

网络传输时间:
千万不要忽视数据传输时间。试想一下,如果你要寄信给你一个远方的朋友,你想是什么影响你将信息传递给远方的朋友?不是你写信的过程(如果你写的信不像书一样厚的话),也不是你朋友读信的过程,而是送信的过程。

你的带宽是多少?有没有考虑网络延迟? 互联网是个网,就是算是相同的起点与终点,它有可能走的不同的路线。

这也是为什么我们在一般做性能测试时,一般要强调要在局域网中进行。

系统处理时间:
在进行性能测试时,呈现时间和数据传输时间通常都是我们很难控制的,用户使用的电脑千差万别,用户的网络状况也是千差万别。我们唯一能控制的就是将系统的处理请求的时间缩到最短。

如果我们对系统处理进行分解的话,它又是一个非常庞大与复杂的过程。包括了语言、语言框架、中间件,数据库、系统架构以及服务器系统等。

现在的测试工具一般都屏蔽呈现过程,只是模拟多用户并发请求,计算用户得到响应的时间,也不会将服务器的每个响应都向客户端呈现。

对于数据传输的问题,这也是我要强调的性能测试要在局域网中进行,在局域网中一般不会受到数据带宽的限制。所以,可以对数据的传输时间忽略不计。

关于响应时间,要特别说明的一点是,对客户来说,该值是否能够被接受是带有一定的用户主观色彩,也就是说,响应时间的“长”和“短”没有绝对的区别。
在互联网行业对于用户响应时间,有一个普遍的标准:2/5/10秒原则。

也就是说,在2秒之内给客户响应被用户认为是“非常有吸引力”的用户体验。

在5秒之内响应客户被认为“比较不错”的用户体验,在10秒内给用户响应被认为“糟糕”的用户体验。如果超过10秒还没有得到响应,那么大多用户会认为这次请求是失败的。这里我们还要考虑一个使用频率的因素。

如果一个功能,一个月才用上一次,并且要求返回的结果也并非实时的,那么即便慢一些,对于用户来讲,也是可接受的。

3)系统吐吞量(QPS\TPS)

系统吞吐量指单位时间内系统处理用户的请求数。从业务角度看,吞吐量可以用:请求数/秒、页面数/秒、人数/天或处理业务数/小时等单位来衡量,从网络角度看,吞吐量可以用:字节/秒来衡量

对于交互式应用来说,吞吐量指标反映的是服务器承受的压力,他能够说明系统的负载能力。

以不同方式表达的吞吐量可以说明不同层次的问题,例如,以字节数/秒方式可以表示主要受网络基础设施、服务器架构、应用服务器制约等方面的瓶颈;已请求数/秒的方式表示主要是受应用服务器和应用代码的制约体现出的瓶颈。

QPS:全名 Queries Per Second,意思是“每秒查询率”,是一台服务器每秒能够响应的查询次数,简单的说,QPS = req/sec = 请求数/秒。比如执行了select操作,相应的QPS就会增加,它代表的是服务器的机器的性能最大吞吐能力。

计算QPS的常用公式:
QPS(TPS)= 并发数/平均响应时间

另外,关于峰值QPS计算方式,一般也可参照2/8原则(供参考,并非一定):
原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间
公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)

问:每天300w PV 的在单台机器上,这台机器需要多少QPS?
答:( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)

TPS即 Transactions Per Second 的缩写,指每秒处理的事务数量。一个事务是指一个客户机向服务器发送请求然后服务器做出回应的过程。

TPS 的过程包括:客户端请求服务端、服务端内部处理、服务端返回客户端。
关于TPS的获取评估方式。

对于已有系统来说:可选取高峰时刻,在一定时间内(如3-10分钟),获取系统总业务量,计算单位时间(秒)内完成的笔数,乘以2-5倍作为峰值的TPS,例如峰值3分钟内处理订单18万笔,平均TPS是1000,峰值TPS可以是2000-5000。

对于新系统来说,因为没有历史数据作参考,一般建议通过业务部门进行评估。

QPS和TPS之间的区别,也是很多新手刚接触时容易搞混的,那他们之间到底有什么区别和联系。

一般来说,QPS基本类似于TPS,但不同的是,对于一个页面的一次访问,会形成一个TPS;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就会计入“QPS”之中。

如果是对一个接口(单场景)压测,且这个接口内部不会再去请求其它接口,那么TPS=QPS。

例如:访问一个 Index 页面会请求服务器 3 次,包括一次 html,一次 css,一次 js,那么访问这一个页面就会产生一个“TPS”,产生三个“QPS”。

对于衡量单个接口服务的处理能力,一般采用QPS比较多,一般如果衡量事务业务场景的处理能力一般则采用TPS。

注:Jmeter聚合报告中,Throughput是用来衡量吞吐量,通常是由TPS来表示。

3、总结

一个系统处理性能能力通常由QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值。

在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等其它消耗导致系统性能下降。

影响系统响应时间由CPU运算、IO、外部系统响应等因素组成。

一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等紧密关联,单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。

系统的性能一般由TPS决定,跟并发用户数没有太大直接关系。

系统的最大TPS是一定的(在一个范围内),但并发用户数不一定,可以调整。
建议性能测试的时候,不要设置过长的思考时间,以最坏的情况下对服务器施压。

一般情况下,大型系统(业务量大、机器多)做压力测试,10000~50000个用户并发,中小型系统做压力测试,5000个用户并发比较常见。

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

勇往直前,不畏艰辛;拼尽全力,追逐梦想。每一次努力都是一种成长,每一次奋斗都是一次进步。坚信自己的力量,创造属于自己的奇迹!

踏上征程,勇敢前行,不止步于平凡。不论困难多大,相信自己的力量,追逐梦想,努力奋斗,终将创造出属于自己的辉煌人生。

奋斗是自己最好的投资,坚持是成功的基石。不论起点如何,只要心怀梦想,勇往直前,努力拼搏,就能书写出属于自己的壮丽篇章。

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

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

相关文章

深入探讨DNS数据包注入与DNS中毒攻击检测 (C/C++代码实现)

DNS数据包注入和DNS中毒攻击是网络安全领域中的两个重要主题。DNS(域名系统)是互联网中的一项核心服务,负责将域名转换为与之相对应的IP地址。 DNS数据包注入是指攻击者通过篡改或伪造DNS请求或响应数据包来干扰或破坏DNS服务的过程。攻击者…

webots仿真报警[ERROR] [1703399199.459991029]: Sampling period is not valid.

一、故障现象 在运行interace传感器使能程序时,报警[ERROR] [1703399199.459991029]: Sampling period is not valid. [ERROR] [1703399199.460080083]: Failed to enable lidar.并发生崩溃。 二、解决方式 1、尝试将程序中的TIME_STEP数值改为与WOrldInfo中的bas…

LeetCode 1954. 收集足够苹果的最小花园周长

一、题目 1、题目描述 给你一个用无限二维网格表示的花园,每一个 整数坐标处都有一棵苹果树。整数坐标 (i, j) 处的苹果树有 |i| |j| 个苹果。 你将会买下正中心坐标是 (0, 0) 的一块 正方形土地 ,且每条边都与两条坐标轴之一平行。 给你一个整数 need…

Cross-Drone Transformer Network for Robust Single Object Tracking论文阅读笔记

Cross-Drone Transformer Network for Robust Single Object Tracking论文阅读笔记 Abstract 无人机在各种应用中得到了广泛使用,例如航拍和军事安全,这得益于它们与固定摄像机相比的高机动性和广阔视野。多无人机追踪系统可以通过从不同视角收集互补的…

红日靶场-2

目录 前言 外网渗透 外网渗透打点 1、arp探测 2、nmap探测 3、nikto探测 4、gobuster目录探测 WebLogic 10.3.6.0 1、版本信息 2、WeblogicScan扫描 3、漏洞利用 4、哥斯拉连接 内网渗透 MSF上线 1、反弹连接 2、内网扫描 3、frpc内网穿透 4、ms17-010 5、ge…

【测试开发】测试用例讲解

文章目录 目录 文章目录 前言 一、测试用例的基本要素 二、测试用例的设计方法 1.基于需求的设计方法 对日历根据web界面的功能布局分析出的功能框图如下: 继续举一个例子百度云盘非功能测试的案例: 2.等价类 3.边界值 5.正交表 6.场景设计法 7…

什么等等? I/O Wait ≠ I/O 瓶颈?

本文地址:什么等等? I/O Wait ≠ I/O 瓶颈? | 深入浅出 eBPF 1. I/O Wait 定义2. 测试验证3. 进一步明确磁盘吞吐和读写频繁进程4. 内核 CPU 统计实现分析5. 总结参考资料 1. I/O Wait 定义 I/O Wait 是针对单个 CPU 的性能指标&#xff0…

使用Python实现发送Email电子邮件【第19篇—python发邮件】

文章目录 👽使用Python实现发送Email电子邮件🎶实现原理🏃Python实现发送Email电子邮件-基础版👫实现源码🙆源码解析 💇Python实现发送Email电子邮件-完善版👫实现源码🙆源码解析&am…

【贪心】单源最短路径Python实现

文章目录 [toc]问题描述Dijkstra算法Dijkstra算法应用示例时间复杂性Python实现 个人主页:丷从心 系列专栏:贪心算法 问题描述 给定一个带权有向图 G ( V , E ) G (V , E) G(V,E),其中每条边的权是非负实数,给定 V V V中的一个…

婚庆婚礼策划服务网站建设的效果如何

品牌效应越来越重要,婚庆行业在多年的发展下,部分区域内也跑出了头部品牌,连锁门店也开了很多家,无论新品牌还是老品牌在新的区域开店总归少不了线上线下的宣传,虽然几乎每个人都会接触婚庆服务,但因为市场…

HarmonyOS构建第一个JS应用(FA模型)

构建第一个JS应用(FA模型) 创建JS工程 若首次打开DevEco Studio,请点击Create Project创建工程。如果已经打开了一个工程,请在菜单栏选择File > New > Create Project来创建一个新工程。 选择Application应用开发&#xf…

操作系统——进程管理算法和例题

1、概述 1.1 进程调度 当进程的数量往往多于处理机的个数,出现进程争用处理机的现象,处理机调度是对处理机进行分配,就是从就绪队列中,按照一定的算法(公平、髙效)选择一个进程并将处理机分配给它运行&am…

各种边缘检测算子的比较研究

边缘检测算子比较研究 文章目录 边缘检测算子比较研究一、引言1.1 边缘检测的重要性1.2 研究背景与意义1.3 研究目的和论文结构 二、文献综述2.1 边缘检测概述2.2 Roberts、Prewitt、Sobel、Laplacian 和 Canny 算子的理论基础和历史2.2.1 **Roberts算子:**2.2.2 **…

给定一个数列,每一次操作可以使a[i]变成x,y,满足x + y = a[i] + k, 求使所有数字相同的最少操作次数

题目 思路&#xff1a; #include<bits/stdc.h> using namespace std; #define int long long const int maxn 2e5 5; int a[maxn], b[maxn], c[maxn]; void solve(){int n, k;cin >> n >> k;int g 0;for(int i 1; i < n; i){cin >> a[i];a[i] …

“FPGA+MDIO总线+UART串口=高效读写PHY芯片寄存器!“(含源代码)

1、概述 前文对88E1518芯片的端口芯片及原理图进行了讲解&#xff0c;对MDIO的时序也做了简单的讲解。本文通过Verilog HDL去实现MDIO&#xff0c;但是88E1518芯片对不同页的寄存器读写需要切换页&#xff0c;无法直接访问寄存器&#xff0c;如果通过代码读写某些固定寄存器的话…

华为HCIA认证H12-811题库新增

801、[单选题]178/832、在系统视图下键入什么命令可以切换到用户视图? A quit B souter C system-view D user-view 试题答案&#xff1a;A 试题解析&#xff1a;在系统视图下键入quit命令退出到用户视图。因此答案选A。 802、[单选题]“网络管理员在三层交换机上创建了V…

揭秘NCO:数字领域的音乐之旅

好的&#xff0c;让我们更详细地解析NCO的数学奥秘&#xff0c;深入探讨数字音乐的乐谱。在我们深入数学公式之前&#xff0c;让我们回顾一下&#xff0c;NCO就像是一位神奇的音符设计师&#xff0c;创造数字音乐的灵感源泉。 NCO&#xff1a;数字音符的魔法创造者 NCO&#x…

AI日报:2024年人工智能对各行业初创企业的影响

欢迎订阅专栏 《AI日报》 获取人工智能邻域最新资讯 文章目录 2024年人工智能对初创企业的影响具体行业医疗金融服务运输与物流等 新趋势 2024年人工智能对初创企业的影响 2023年见证了人工智能在各个行业的快速采用和创新。随着我们步入2024年&#xff0c;人工智能初创公司正…

lv13 环境搭建SD卡启动

一、制作SD卡启动盘 1.1 方法1&#xff1a;在Linux下制作 一、准备好烧录脚本 cd ~/fs4412 ​ unzip sdfuse_q.zip ​ cd sdfuse_q ​ chmod x *.sh 二、将SD卡插入USB读卡器&#xff0c;并连接到虚拟机 或者 一般识别的sd卡会在dev目录下显示sdb 三、烧录 cp ../u-boot-f…

Qt 网络编程

QT 网络编程 TCP 编程 模块引入 QT network 头文件 #include <QTcpServer> // TCP服务器端使用 #include <QTcpSocket> // TCP服务器和客户端都使用 编程流程 服务端 1&#xff09;实例化 QTcpServer 对象 -----------------------------> socket 2&#x…