性能测试的基本概念和重要指标

news2024/11/13 12:23:06

这里写自定义目录标题

  • 一、什么是性能测试
  • 二、为什么要学习性能
  • 三、性能测试与功能测试的区别
    • 1、性能测试和功能测试的区别?
    • 2、性能测试是在什么时候做?
    • 3、我们在做我们的产品的时候,我们只做功能不做性能可不可以?
    • 4、性能测试主要是这几个方面进行考虑:
  • 四、性能测试的分类(重点)
    • 1、一般性能测试(基线测试)
    • 2、稳定性测试
      • a、为什么要做稳定性能测试?
    • 3、负载测试
      • a、为什么要做负载测试呢?
    • 4、压力测试
      • a、为什么要做压力测试?
    • 5、并发测试
      • a、为什么要做并发测试?
  • 五、性能测试的指标(重重点)
    • 1、响应时间
    • 2、系统处理能力(HPS,TPS,QPS)吞吐量
      • 标准
    • 3、并发用户数量
    • 4、错误率
    • 5、CPU
    • 6、Memory(内存)
    • 7、磁盘吞吐量
    • 8、网络吞吐量

一、什么是性能测试

性能测试就是测试软件性能方面的质量,它是一种非功能性的测试,它是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

二、为什么要学习性能

进行性能测试:是为了满足我们现实产品中的业务场景,支持大量用户的同时访问,高并发等业务的需求。
比如微信每天的在线人数:

它对我们的产品性能的提升主要是体现在以下几个方面:

提供系统的度量
jmeter 内存 CPU ;基本的度量单位 50% 30%
这些测试有助于对参数进行基准测试,如度量应用程序速度的响应时间,我们都知道功至关重要。这对于应用程序的性能比较是致关重要。

有助于评估应用程序的可扩展性
马士兵官网 每天访问量1W 后续的访问量达到2W 10W时
性能测试有助于检查应用程序是否有能力扩充更多的用户量。

有助于检查应用程序的健壮性
产品的时间通过压力测试,我们可以检查应用程序在工作负载高于预期或高于应用程序阈值时的稳健性。

有助于检查应用程序的可靠性
进行不同类型的性能测试是为了检查应用程序是否可靠,是否提供了正确的和一致的输出。性能测试,如负载测试和耐久测试,有助于评估系统在预期的工作负载下的正确性。

三、性能测试与功能测试的区别

功能测试:主要是关注的是我们的产品功能是否符合产品功能需求规格,主要是指我们产品的功能的正常用例和异常的用例,特殊的情况 (主要是关注的是我们的产品说明书上的,正常和异常的情况,以及我们特殊的情况)
性能测试:是在功能完成以后,我们主要是关注的是产品的各个指标(如,响应时间,cpu,内存,吞吐量等等)是否满足我们产品的业务需求场景。 (时间,资源)

1、性能测试和功能测试的区别?

测重点不一样
功能测试:主要是看我们的产品的实现的功能是否符合我们的产品文档以及产品文档所列出的正向和反向的用例
比如:我们登录我们马士兵官网
正确的用例:我们输入正常的用户名和密码,登录成功
错误的用例:输入正常的用户名和错误的密码,登录不成功
特殊情况:输入用户名带空格和正常的密码,是否登录成功
性能测试:主要看的是我们一些性能指标是否符合我们的产品文档
比如:我们登录我们马士兵官网
1W用户同时使用正确的用户名和密码登录,2S内登录成功时间
同时我们的服务器cpu使用率低于40% ,内存使用率低于50%资源

2、性能测试是在什么时候做?

性能测试,一定是在我们的功能测试完成以后才进行的测试

3、我们在做我们的产品的时候,我们只做功能不做性能可不可以?

如果说是你公司自己的用的系统,用的人数很少的情况下,可以不做性能
如果是商用的产品,用户量比较大的时候,这个性能是一定要做的。

4、性能测试主要是这几个方面进行考虑:

时间特性:用户发出请求到收到应答的这段时间
资源利用率:包括:cpu、内存、硬盘
服务器可靠性:指服务器能在相对高负载情况下持续的运行
可配置优化性:指服务器配置优化、业务逻辑优化、代码优化等

四、性能测试的分类(重点)

1、一般性能测试(基线测试)

在给产品系统施加较低压时,查看系统的运状况并记录相关数做为基础参考

基数线:对于电脑来说,cpu达到90% 内存到达70%会影响到性能
比如说:马士兵官 V2.0版本,模拟1W用户在我们的服务器上下订单服务,它的响应时间是2S ----这个就是我们的一般性能测试。它是做的一个参考的存在。
V3.0 模拟1W用户在我们的服务器上下订单服务 ,再看一下,它的一个响应时间8S,它的响应时间是不是有对应的性能问题

2、稳定性测试

通过给系统加载一定的业务压力(如CPU资源在70%~90%的使用率)的情况下,运行一段时间,检查系统是否稳定。

monkey测试 马士兵严选APP 下班之后去运行我们monkey
1000000 9分钟
10000000 90分钟

手机 --》 售后、性能(稳定性)

a、为什么要做稳定性能测试?

马士兵官网它能抗的住我们同时 1W用户同时下定单,那我们能保证长时间下订单吗?

3、负载测试

是通过逐渐增加系统的负载测试系统性能的变化,并最终确定在满系统性能指标的情况下,系统所能承受的最大负载量的测试。 简之,负载测试是通过逐步加压的方式来确定系统的处理能力和能够承受的各项阈值

马士兵官网要求下订单不超过3s
100人下订单 1s
1000人下订单 2S
2000人下订单 2.5s
3000人下订单 3S
4000人下订单 3.5s

a、为什么要做负载测试呢?

举例说明:12306我们进行买票,平常我们买票是不是没问题,但是你能保证节假日,或者春节的时候,12306也能正常的运行吗?

4、压力测试

是通过逐步增加系统的负载,测试系统性能的变化,并最终确定在什么负载条件下,处于失效状态,并获得系统能提供的最大服务级别的测试。压力测试是逐步增加负载,使系统某些资源达到饱和甚至失效

3000人下订单 —》4000–》5000

a、为什么要做压力测试?

软件在使用的过程中,用户量不是我们能控制的吧,是不是有可能超出我们的最大使用量该如何应对?

负载测试和我们的压力测试最大的区别在于什么?
负载测试是从我们最开始进行逐步增加
压力测试是从负载的基础上进行逐步增加
负载测试测试只是测出我们的产品最大的负载量,而我们的压力测试,是在逐步增加负载量的情况下,把我们的系统压跨

5、并发测试

测试多个用户同时访问同一个应用、在极短的时间内,发送多个请求,来验证服务器对并发的处理能力

a、为什么要做并发测试?

马士兵官网能抗住大量用户的访问,但是你能保证在我们马士兵官网上时的某一个商品时的秒杀时不出现问题吗?

五、性能测试的指标(重重点)

RT -Response time(响应时间)
系统处理能力也称吞吐量(HPS,TPS,QPS)
并发用户数量
错误率(例如千分之三,1000个里面有3个错误)

CPU
Memory(内存)
磁盘吞吐量
网络吞吐量

1、响应时间

从客户端发出请求到得到响应的整个时间,一般包括网络响应时间+server的响应时间。
注意我们并不关心客户端点击和客户端处理页面显示的时间。

在这里插入图片描述

用户接受准则:

例如2-5-10原则,即按照正常用户体验,如果用户能够在2秒内得到响应,会感觉速度很快,如果2-5秒得到响应,用户感觉系统的响应速度还不错,在5-10秒之内得到响应时,用户会感觉系统的响应速度慢,但是可以接受,超过10秒后还没有响应,用户就会感觉不能够接受。
行业参考标准:
不同行业不同业务可接受的响应时间是不同的,一般情况,对于在线实时交易:
互联网企业:500毫秒以下,例如淘宝业务10毫秒左右。
金融企业:1秒以下为佳,部分复杂业务3秒以下。
保险企业:3秒以下为佳。
制造业:5秒以下为佳。

2、系统处理能力(HPS,TPS,QPS)吞吐量

系统处理能力也叫我们的吞吐量,吞吐量是什么呢?
吞吐量是指系统在单位时间内(按照秒计算) 处理请求的数量
对于单用户的系统,响应时间可以很好地度量系统的性能,但对于并发系统,通常需要用吞吐量作为性能指标。
一般情况下,用以下几个指标来度量:
HPS(Hits Per Second) :每秒点击次数,单位是次/秒。
TPS(Transaction per Second):系统每秒处理事务数,单位是笔/秒。
QPS(Query per Second):系统每秒处理查询次数,单位是次/秒。

对于互联网业务中,如果某些业务有且仅有一个请求连接,那么TPS=QPS=HPS,

如果是对一个接口(单场景)压测,且这个接口内部不会再去请求其它接口,那么tps=qps,否则,tps≠qps
在这里插入图片描述
单业务多接口请求
在这里插入图片描述

每秒钟处理完的事务次数,一般TPS是对整个系统来讲的。一个应用系统1s能完成多少事务处理,一个事务在分布式处理中,可能会对应多个请求,对于衡量单个接口服务的处理能力,用QPS比较多。

标准

无论TPS、QPS、HPS,此指标是衡量系统处理能力非常重要的指标,越大越好,根据经验,一般情况下:
金融行业:1000TPS~9000TPS,不包括互联网化的活动
保险行业:100TPS~1000TPS,不包括互联网化的活动
制造行业:10TPS~50TPS
互联网电子商务:10000TPS~1000000TPS
互联网中型网站:1000TPS~50000TPS
互联网小型网站:500TPS~10000TPS

3、并发用户数量

并发用户数量:同一时间 向服务器发送请求的用户数
常见的错误理解:
使用系统的全部用户数量(只是注册用户,存储在数据库中的数据)
使用系统的全部在线用户数量(登录成功后,在操作其他的任务,只是在线用户)
假如100w的注册用户数,10w的在线用户数,其中3w的用户在同时查看视频,则3w为并发用户数

正确理解
并发用户数指在同一时刻内,打开系统并进行业务操作的用户数量,并发用户数对于长连接(登录成功后,在系统频繁的操作业务)(数据库连接时长连接,web请求时短连接)系统来说最大并发用户数即是系统的并发接入能力。
对于短连接(登录成功后,不再管这个系统了)系统而言最大并发用户数并不等于系统的并发接入能力,而是与系统架构、系统处理能力等各种情况相关。
http:请求只能由客户端发出,服务端被动响应。

4、错误率

错误率指系统在负载情况下,失败交易的概率。错误率=(失败交易数/交易总数)*100%。稳定性较好的系统,其错误率应该由超时引起,即为超时率。
eg:马士兵官网下订单操作:下了100个订单其中1个订单错误,错误率是1%,其中100一定是在负载的情况下,即TPS为100次数/s
eg:TPS的最大处理请求能力为1w次/s,而发送了100个订单请求,成功了99个,错误了1个,这不叫错误率,叫bug。
超时率不会影响金额,影响不大。

互联网行业参考标准:
不同系统对错误率的要求不同,但一般不超出千分之3,即成功率不低于99.7%

5、CPU

中央处理器是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。
1.CPU主频: 即CPU 时钟频率,频率的高低直接决定了CPU的性能强弱。 以GHz为单位,数值越高频率越高性能越强,同样功耗也更大。可通过超频即增加电压来提高CPU主频,但会增加发热以及不稳定性。
2.CPU位数: 指的就是处理器能够 一次性计算的浮点数的位数, 通常情况下,CPU的位数越高,CPU 进行运算时候的速度就会变得越快。现在普遍为64位芯片。
3.CPU缓存: 是 位于CPU与内存之间的临时存储器 ,它的容量比内存小的多但是交换速度却比内存要快得多一般来讲,CPU 的缓存可以分为一级缓存、二级缓存和三级缓存,缓存性能直接影响CPU处理性能。
4.CPU核心数: 指的是CPU上集中的处理数据的cpu核心个数, 核心数的数量多少直接影响CPU处理速度的快慢。
5.CPU线程数: CPU的几线程是 指同一个处理器上的多个线程同步执行并共享处理器的执行资源的线程数量, 几乎不用增加额外的成本就可以显著地提升效能。多线程技术可以为高速的运算核心准备更多的待处理数据,减少运算核心的闲置时间。总的来说线程数越多性能越为强大。
6.CPU制程: 指的是CPU的制程工艺,一般以纳米为单位。 数值越低可集成晶体管数越多,即性能越强大,所以说工艺制程的提升为性能提升提供了基础。并且更先进的制程也会减少发热降低功耗。
CPU指标主要指的CPU利用率,包括用户态(user)、系统态(sys)、等待态(wait)、空闲态(idle)。CPU 利用率要低于业界警戒值范围之内,即小于或者等于75%;CPU sys%小于或者等于30%, CPU wait%小于或者等于5%。单核CPU也需遵循上述指标要求。
User表示:CPU一共花了多少比例的时间运行在用户态空间或者说是用户进程(running user space processes)。典型的用户态空间程序有:Shells、数据库、web服务器……
System的含义与User相似。System表示:CPU花了多少比例的时间在内核空间运行。分配内存、IO操作、创建子进程……都是内核操作。这也表明,当IO操作频繁时,System参数会很高。
wait在计算机中,读写磁盘的操作远比CPU运行的速度要慢,CPU负载处理数据,而数据一般在磁盘上需要读到内存中才能处理。当CPU发起读写操作后,需要等着磁盘驱动器将数据读入内存(可参考:JAVA IO 以及 NIO 理解),从而导致CPU 在等待的这一段时间内无事可做。CPU处于这种等待状态的时间由Wait参数来衡量。
Idel表示:CPU处于空闲状态时间比例

6、Memory(内存)

内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。

现代的操作系统为了最大利用内存,在内存中存放了缓存,因此内存利用率100%并不代表内存有瓶颈,衡量系统内有瓶颈主要靠SWAP(与虚拟内存交换)交换空间利用率,一般情况下,SWAP交换空间利用率要低于70%,太多的交换将会引起系统性能低下。

7、磁盘吞吐量

磁盘吞吐量是指在无磁盘故障的情况下单位时间内通过磁盘的数据量。

磁盘指标主要有每秒读写多少兆,磁盘繁忙率,磁盘队列数,平均服务时间,平均等待时间,空间利用率。其中磁盘繁忙率是直接反映磁盘是否有瓶颈的的重要依据,一般情况下,磁盘繁忙率要低于70%

8、网络吞吐量

网络吞吐量是指在无网络故障的情况下单位时间内通过的网络的数据数量。单位为Byte/s。网络吞吐量指标用于衡量系统对于网络设备或链路传输能力的需求。当网络吞吐量指标接近网络设备或链路最大传输能力时,则需要考虑升级网络设备。10M/s

网络吞吐量指标主要有每秒有多少兆流量进出,一般情况下不能超过设备或链路最大传输能力的70%。

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

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

相关文章

金融计量学第2课堂-金融时间序列线性模型

量化策略开发,高质量社群,交易思路分享等相关内容 一、相关性和平稳性 1、相关性 (1)皮尔森相关系数 皮尔森相关系数是最常见、最常用的一个相关系数计算方法。作为衡量两个随机变量x和y线性相关程度的重要指标,在这…

赋能智能智造-RK3568智能主板助力机器人产业高速发展

机器人作为现代制造业的重要一环,正在以惊人的速度推动着生产效率和智能化水平的提升,它们在生产线上的准确操作和高效工作,为企业带来了巨大的竞争优势。关于工业机器人的编程和控制技术,在过去几年中已经有了很多发展和新的应用…

十.Redis持久化

十.Redis持久化 一:RDB持久化二:AOF持久化三:扩展 redis持久化 Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么服务进程退出,服务器中的数据库状态也会消失,所以Redis提供了持久…

《Spring系列》第18章 监听器Listener

前言 陆续阅读了Spring Boot源码中,有不少地方都用到了监听器。每次看到监听器的代码都一头雾水,不懂其中的设计理念,这次决定肝一篇监听器的博文。 一、监听器 1.概述 何为监听器?就是用来监听程序执行的。监听器可以做什么事…

青岛大学_王卓老师【数据结构与算法】Week05_03_队列的定义和特点_学习笔记

本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享, 另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权,请留言作删文处理。 课程视频链接: 数据结构与算法基础…

Vue3通透教程【十七】Vite构建TS版本Vue项目

文章目录 🌟 写在前面🌟 创建TS版本的Vue3项目🌟 插件安装🌟 写在最后 🌟 写在前面 专栏介绍: 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章,应粉丝要求开始更新 Vue3 的相关技术文章&#…

DocFastSearchTool(文档快速搜索工具)开发日志

目录 项目介绍 项目调研背景 项目需求分析 开发环境 项目涉及基础知识点 项目设计 设计基础 项目框架or架构 项目框架的搭建 系统工具模块--遍历目录 SQLite数据库 在Windows上安装SQLite SQLite命令 SQLite-C/C的API 安装SQLite源码 数据库操作的重要接口 连接…

PB从入坑到放弃(三)数据窗口

PB从入坑到放弃(三)数据窗口 写在前面一、 数据窗口画板1.1 Design 视窗1.1.1 General tab页设置1.1.2 Generation tab页设置1.1.3 Prefixes tab页设置 1.2 Preview 视窗1.2.1 查找数据1.2.2 翻页1.2.3 增加、删除数据 1.3 Control List 视窗1.4 Data 视…

学生成绩分析项目

数据采集 导入必要的库 import pandas as pd import matplotlib.pyplot as plt import seaborn as sns加载数据集 df pd.read_csv(D:\\桌面\\数据\\student_marks.csv)显示数据框的前几行 # 显示数据框的形状 print("Shape of the dataframe:", df.shape)#显示…

pycharm最新版默认菜单栏等工具不见了

原因 pycharm2022.3新版本,默认使用新UI(如下图),这让很多小伙伴来说不太适应,我还是习惯旧版本的界面。在网上搜了许多恢复旧版本界面的教程,说的解决方案都是由于“手贱把菜单栏给隐藏了”,这…

C语言“教父“

在中国,"C语言教父"一般指的是C语言网的创始人黄老师。他通过C语言网为广大学习者提供了丰富的学习资源和知识分享平台,包括大量的C语言教程、C语言题目以及相应的文档、资源等等,为C语言的推广、教学做出了巨大的贡献和推动作用

Go自带库的使用说明

Go 中的时间操作 Golang中与时间有关的操作,主要涉及到 time 包,核心数据结构是 time.Time,如下: type Time struct {wall uint64ext int64loc *Location }1、获取时间相关函数 1.1 获取当前时间 // 返回当前时间&#xff0c…

腾讯云TRTC服务实现小程序语音/视屏会议

腾讯云TRTC服务的入门 TRTC 是腾讯云主打全平台互通的多人音视频通话和低延时互动直播解决方案。TRTC服务有多种客户端的支持,对于IOS、Android、React native等都支持的比较好,我们主要在于 IOS、Android、Web三端进行处理,其中 TRTC Web S…

HarmonyOS学习路之开发篇—流转

流转概述 介绍 随着全场景多设备生活方式的不断深入,用户拥有的设备越来越多,每个设备都能在适合的场景下提供良好的体验,例如:手表可以提供及时的信息查看能力,电视可以带来沉浸的观影体验。但是,每个设备…

网络变压器常见封装

1、单口千兆(Single Port) 封装类型常见型号Dimension SMD24_1 PIN Pitch:1.00 Length:15.1 Width:7.1/10.0 Height:6.00 JWD: SG24002G Group-tek: HST-24015SR SMD24_2 PIN…

pyspark

连接命令: pyspark --master spark://node1:7077 一个application 大任务可以分解成 多个小任务 jobs, 一个job又可以分解成多个 stages 阶段, 一个stage又可以分解成 多个tasks(可以认为是两个线程) standalone Zo…

使用Gradio库创建交互式滑块组件

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

QT DAY3

完善文本编辑器 1.mainwindow.h文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QDebug> #include <QIcon> #include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QMessageBo…

如何用Stable Diffusion模型生成个人专属创意名片?

目录 1 什么是二维码&#xff1f;2 什么是扩散模型&#xff1f;3 Stable Diffusion环境搭建4 开始制作创意名片结语 1 什么是二维码&#xff1f; 二维码是一种用于存储和传输信息的方便而广泛使用的图像编码技术。它是由黑色方块和白色空白区域组成的二维图形&#xff0c;可以…

光镊背后的电磁理论 | 涡旋电磁波在无线通信系统中的应用

2018年诺贝尔物理学奖于北京时间10月2日17点50分正式揭晓&#xff0c;发明光镊技术的美国物理学家&#xff0c;阿瑟阿什金&#xff08;Arthur Ashkin&#xff09;&#xff0c;以及开创了啁啾脉冲放大技术的唐娜斯特里克兰&#xff08;Donna Strickland&#xff09;、 热拉尔穆鲁…