当前位置: 首页 > news >正文

小白怎么学习性能测试?一文7个知识点带你成功入门!

1.什么是性能测试

性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。——来自百度百科

总结:性能测试是一个非常广泛的概念,包括很多方面的测试,可以将性能测试称之为非功能性测试

2.性能测试的目的

目的是验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,优化软件,最后起到优化系统的目的。

包括以下几个方面

1.评估系统的能力,测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的能力,并帮助作出决策。

2.识别体系中的弱点:受控的负荷可以被增加到一个极端的水平,并突破它,从而修复体系的瓶颈或薄弱的地方。

3.系统调优:重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能。检测软件中的问题:长时间的测试执行可导致程序发生由于内存泄露引起的失败,揭示程序中的隐含的问题或冲突。

4.验证稳定性(resilience)可靠性(reliability):在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法。

总结:通俗来说就是发现软件的性能瓶颈

3.性能测试的类型

性能测试类型包括负载测试、压力测试、并发测试、容量测试、可靠性测试、异常测试。

负载测试:通过逐步加压的方法,达到既定的性能阈值的目标;阈值的设定应该是小于等于某个值,如CPU使用率小于等于80%。

压力测试:通过逐步加压的方法,使系统的某些资源达到饱甚至失效的状态,通俗来说就是在什么条件下能将系统压到崩溃。

并发测试:在同一时间内,多个虚拟用户同时访问同一模块、同一功能,通常的测试方法是设置集合点。

容量测试:通常是指数据库层面,目标是获取数控的最佳容量的能力,又称之为容量预估;具体的测试方法为在一定的并发用户,不同的基础数据量下观察数据库的处理能力,即获取数据库的各项性能指标。

可靠性测试:又称之为稳定性测试或疲劳测试。指系统在高压的情况下,长时间的运行系统是否稳定;比如当CPU使用率在80%以上,持续一周7*24小时,查看系统是否稳定。

异常测试:又称之为失败测试。指系统架构方面的测试,比如在负载均衡的情况下,测试down机或节点挂掉的情况下系统的反映情况。比如nginx下挂了三个tomcat,挂掉其中一个tomcat后,即nginx下只有两个tomcat,此时系统正常的反映是挂掉的tomcat不会影响我系统的正常运行,也就是说nginx会检测到挂掉的tomcat而不会将用户请求转发到down掉的这台tomcat上

4.需要掌握的技能

开发语言:推荐Java编程语言,因为该语言在互联网领域使用非常广泛,很多公司的软件都是使用Java语言开发的,所以当你对Java语言深入了解后和开发进行交流沟通无障碍以及做性能测试的时候比其他人做的更深入

操作系统:现在大多数公司都使用Linux做为服务器,版本包括centos和ubuntu,绝大多数都是用centos系统;目前来说还是有少部分公司在使用windows server IIS来做服务器,基于市场的需求所以必须首先要会使用linux操作系统,然后要会使用linux的监控命令(通过监控命令获取服务器的数据信息和状态,那么在做性能测试瓶颈时就知道服务器处于什么状态时异常的

数据库:现在使用比较多的是SQL关系型数据库SQLServer、Mysql、对于金融行业如银行使用Oracle、DB2的比较多;NoSQL非关系型数据库用的则是Redis和MongoDB,做读写分离或者数据缓存以及ES数据库;那么作为性能测试肯定要会增删改查的操作,并且对数据库进行监控,同样根据数据库返回的状态信息,定位瓶颈后就可以进行调优了。

测试工具:第一种嘛就是自己通过Go、Java等语言进行开发一个性能测试工具( 前提你是大牛 ‾ \overline{\text{前提你是大牛}} 前提你是大牛 );第二种则是市场应用比较多的工具则如Jmeter和LoadRunner,这里推荐使用Jmeter,原因是开源免费简单轻巧并且是纯Java语言开发的,而LoadRunner是收费且因功能强大所以比较笨重;因为是工具都不存在难度,用的多的熟练度就深了。

网络知识:网络对性能测试的影响非常大,如客户端向服务器发送请求数据,这个请求数据或者叫报文数据它是有一个大小的,当对后端接口调用传输的数据很大,而网络带宽不咋地这样就会导致该接口性能非常低,比如说网络带宽为10M,一次调用接口传输的数据大小为1M(举例),秒内并发最多能承受10个请求,所以在做性能测试时一定要对网络知识有一定的了解,不然连请求都没有发送到服务器怎么进行并发测试;其次对网络协议分层还是要进行了解,如OSI的七层模型以及TCP/IP四层模型。

业务知识:对于业务知识这一块是很重要的,当你进入一个公司或者企业,首选要对公司开发的产品进行熟悉,如该产品属于什么行业的,软件是干啥的,了解整个软件的业务流程,这样才能知道软件哪一块或者时候哪一个接口适用于做性能测试,那肯定是用户进行访问的接口了,最简单的例子就是注册和登录这两个接口,你肯定要清楚哪个接口是用户经常使用的,很明显就是登录接口,所以说了解公司产品业务是相当重要的。

5.性能测试的流程

  • 需求分析

熟悉项目,了解项目的业务流程以及重点功能

  • 性能指标制定

设定服务器到达的性能指标,如Response time、Throughput、Resource utilization、Hits per second、Concurrent users等,也就是说什么样的指标标准能够满足现阶段的业务需求

  • 脚本开发

使用一些性能测试工具,如jmter、loadrunner等;也可以自己开发一个性能测试工具

  • 场景设计

设计性能测试场景必须符合用户在软件上的使用流程,用户经常使用的功能模块所对应的接口就需要做多并发的测试

  • 监控部署

一个软件的构成除了应用程序还需要将其部署到的服务器上以及数据存储的数据库,这些组成的东西都需要将它们进行监控,只有这样才能看到各个部分实际的运行状态以便我们进行更好的数据分析从而发现性能瓶颈才能进行调优

  • 测试执行

当以上的步骤流程都完成了开始进行测试跑脚本

  • 性能分析

性能分析基于监控部署,只有当监控部署进行到无死角的监控,得到的监控数据越全面,那么性能分析得到结果才最准确

  • 性能调优

只有将监控部署以及性能分析做到位最全面做准确后,才能进行性能调优,可以发现以上关键几步都是相互关联的;如果没有监控部署而是通过工具自带的测试报告数据也就是工具去收集了服务器或应用程序的一些状态数据,而这些数据是不全面的,并不能完全胜任监控部署的角色,所以需要单独去进行监控部署;当性能调优后遇到一些问题后,再去进行测试执行;实际上测试执行—性能分析—性能调优这关键的三步是一个迭代的过程

  • 生成测试报告

当性能测试指标达到性能指标制定的标准后,也就是达标后,这时候生成就可以生成测试报告给上级领导看,程序满足制定的性能指标,可以进行上线了

6.性能测试的指标

1、事务

从客户端发起的一个或多个请求(这些请求组成一个完整的操作),到客户端接收到从服务器返回的响应;如客户在web端点击登录按钮调用api接口方法,在api中去检验请求传递的登录数据是否合法然后去数据库中验证数据是否存在且准确,最后再通过api接口方法返回响应数据到web客户端提示用户登录成功或登录失败,这就是一个完整的事务;登录属于一个请求,多个请求比如银行转账等

2、TPS(Transactions Per Second)

每秒钟系统能够处理的事务数

注意:事务数并不等于请求数,如服务器一秒钟处理5个事务,并不等于服务器一秒钟处理5个请求也可能是10个请求,TPS和事务的关联关系就在此。

举例:事务靠虚拟用户产生,假如1个虚拟用户在1秒内完成1笔事务,那么TPS就是1,要想达到1000TPS至少需要1000个用户;如果某笔业务响应时间为1ms,那么1个用户在1秒内能完成1000笔事务,TPS就是1000.因此1个用户可以产生1000TPS,1000个用户也可以产生1000TPS,主要看响应时间的快慢。

3、请求响应时间

从客户端发起的一个请求开始,到客户端接收到从服务器返回的响应。整个过程所消耗的时间。

4、事务响应时间

事务可能是由一个或多个请求组成的,事务响应时间主要是针对于用户的角度而言,如转账。

5、并发的定义

没有严格意义上的并发。并发总有先后,无论差距是1ms或者是μs(微秒),总有一个时间差。所以并发讲的是一个时间范围内,比如1秒内的并发。

举例:多用户在系统上进行同一操作,比如双11的时候,大家都针对同一种商品进行秒杀

多用户在系统上进行不同操作,比如双11的时候,大家针对不同的商品进行秒杀,或者说是大家有进行其他不同的操作,比如浏览其他商品。

6、并发用户数

同一单位时间内对系统发起请求的用户数量

举例:现在服务器都是多核CPU,这样做的目的是提高服务器处理多线程能力,也就是处理用户数的能力;一般情况下都是1秒内,如1秒内服务器能够承担多少并发用户数,一定要对时间敏感。

7、吞吐量(Throughput)

一次性能测试过程中网络上传输的数据量总和

说明:以上传输数据量的总和是可以自己手工计算的,如一个http请求(get、post等),你知道它的请求参数,请求头的大小是多少,就可以进行一个粗略的计算;之所以要使用监控软件进行监控是防止有些请求中携带的参数是我们不知道的(也占了网络流量)。

举例:如公司带宽下载速度是10M/S(抛开其他的网络消耗),当下载的文件大小为1M,最大的下载用户并发为10个,再多就会排队等待了,就好比百度网盘一样,实际是将每个用户进行网络带宽限制了,也就是成本控制,毕竟网络开销费用不便宜,所以用户要想提高下载速度就需要花钱了;实际在工作的时候,一般人往往会忽略网络带宽带来的性能瓶颈,如代码、服务器、数据库都没有问题,并发数上不来,那么就需要监控一下网络资源消耗情况

8、吞吐率

单位时间内网络上传输的数据量;吞吐率 = 吞吐量 / 传输时间

压力10分钟总的吞吐量为10M,一分钟的吞吐量 = 10 / 10 = 1M = 1024KB,一秒中的吞吐率为 = 1/60 M

9、点击率

每秒钟用户向服务器提交的请求数。这个指标是web应用程序特有的一个指标,可以想象为每秒钟用户总共在页面上进行多少次点击动作,但是需要注意的是一次鼠标单击的操作后,客户端有可能向服务器发送了多次请求。(现在在手机在也是可以通过手指不断点击的)

10、资源使用率

对不同的系统资源的使用情况,如CPU、内存、IO等

7.性能测试需求分析

说明:这是性能测试的第一步,也是至关重要的一步;需求分析以及需求评审环节是非常重要的;开发之所以写代码写出了BUG,那是因为开发在写代码过程中存在想不到的地方,测试之所以没有测出所有的BUG,那也是因为在测试过程中,有些情况或者是场景没有想到;所以说需求分析、评审很重要,同样测试人员写的用例也是需要进行评审的,大家一起研究探讨分析就会让用例覆盖率更全面,多个人多个思想多个想法嘛

  • 目的

⇒ 明确测试指标

  • √ 有哪些指标需要进行重点关注,如TPS等
  • √ 测试人员必须清楚指标的含义

⇒ 明确测试场景

  • √ 如对某个业务进行性能测试,但是这个业务模块需要准备大量的测试数据,即会产生时间成本,那么就需要考虑该模块是否需要测试出性能瓶颈,所以需要明确哪些场景(业务模块)是需要着重测试的。
  • √ 如之前并发的例子,多用户对同一系统下的同一功能模块进行操作以及多用户对同一系统下的不同功能模块进行操作,这也是一种业务测试场景(1、用户登录——浏览不同商品——对同一商品进行秒杀;2、用户登录——浏览不同商品——对不同商品进行秒杀;除了这两种还有很多很多的场景,如登录后浏览购买或登录后结算掉上次添加到购物车的商品等等等等’)。
  • 新系统

⇒ 同行业对比

  • √ 公司以前就没有做过此类软件,没有任何经验,首先是想市场上有么有该类软件,如果有就去收集一下该软件的业务场景之类的,可以去成为该软件的用户去体验一下软件。

⇒ 业务预期

  • √ 预期在产品发布后的多少天内有多少用户,如果是大公司的产品,那么用户数会呈现阶梯式的增长,根据在这个期间系统用户的增长,那么性能就需要扛住用户并发数,通过市场部门反馈用户的未来三个月的增长数来制定性能测试指标。
  • 老系统

⇒ 对比以往用户使用行为以及用户量

  • √ 根据之前老系统在过去一段时间的用户增长,如过去半年内用户增长是属于平稳期还是上升期,如果是平稳期就直接来制定指标,如果是上升趋势,那么就预估之后系统的用户增长,根据预估的系统用户增长来制定性能测试指标。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

相关文章:

小白怎么学习性能测试?一文7个知识点带你成功入门!

1.什么是性能测试 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负…...

Orcad属性过滤器的使用技巧

Orcad内置的属性过滤器可以完美的解决由于属性太多导致的不好整理的问题。下面简单介绍一下方法和过程。 1、打开过滤器 2、新建属于自己的过滤器 3、进行器件属性过滤及调整的顺序(注这时一定关闭ORCAD,来操作) 3.1 安装目录下找到\Cadenc…...

腾讯云向量数据库正式对外全量开放公测

11月1日,腾讯云对外宣布向量数据库正式全量开放公测,同时性能层面带来巨大提升。腾讯云数据库副总经理罗云表示,除了公测之外,腾讯云向量数据库单索引已经支持百亿级向量规模,支持百万级QPS毫秒级查询延迟,…...

Linux新建普通用户无法使用退格键与tab键

创建普通用户 useradd mulan passwd mulan 切换用户 su mulan 发现普通用户无法使用退格键与tab键,一直显示如图 如图,按退格键(Backspace)、删除键出现 ‘^H’ 符号,tab键也不能自动拼写 这是新用户下的普通bash配置都没有,从…...

【湘粤鄂车牌】

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

华大-HC32L130F8UA 内存使用注意事项

1,概念 本系统包含一块 64K 字节( Byte )容量的 FLASH 存储器,共划分为 128 个页( Sector ),每个页( Sector ) 的容量为 512 字节( Byte )。 FLASH …...

怎样才知道一个单片机的性能到极限了?

怎样才知道一个单片机的性能到极限了? 就题主的问题,应该是想问CPU利用率的问题。可以看看Rt-thread中关于统计CPU利用率函数,其主要实现方式是在idle线程先关闭中断计数后,正常计数(可被其他线程打断),最近很多小伙伴…...

Android Studio的笔记--SerialPort串口通讯学习和使用

SerialPort串口通讯学习和使用 SerialPortandroid-serialport-api源码下载 Android-SerialPort-API源码下载readme版本 Android-SerialPort-Tool源码下载 Android-Serialport源码下载使用方法readme android中使用串口通信使用android-serialport-api方式第1种 链接第2种 导入S…...

MySQL 启动选项和字符集

1. 客户端和服务器 1.1 服务器程序 数据库实例:代表 MySQL 服务器程序的进程( mysqld 可执行文件) mysqld_safe:启动脚本,会间接调用 mysqld 并监控服务器运行状态。出现错误时可以帮助重启服务器程序,输…...

社区投稿|解码Big Vector,开启Sui超扩展性的新篇章

* 本文是来自Sui生态项目Typus团队的投稿,文中「我们」均指代该项目团队,转载时修改部分不准确的用词。 本研究报告介绍了Big Vector的概念,这是一种我们用于 Typus V2 的新数据结构,以缓解 Sui 上数组和动态字段(dynamic field)…...

Linux根目录下的目录结构及其作用详解

Linux根目录是文件系统的最顶层,它包含了一些子目录,每个子目录都有特定的功能和存储的文件。只有了解了各个文件的使用功能,才能更好的去使用Linux系统。希望通过下面这张图能够让你更加了解根目录下的各个目录的功能。...

源码和SaaS账号:租房与自建房的区别

在当今数字化时代,软件已成为企业运营的重要支撑。然而,对于许多中小企业来说,获取和运营软件的方式有两种:源码和SaaS账号。这两者有何区别呢?让我们用租房和自建房的比喻来解释。 价格比较 源码:购买源码…...

Docker容器设置为自动重启

有时Docker服务出现异常,或者服务器出现异常,需要重启Docker服务或者服务器; 如果希望有一部分基础的或者常用的容器,在服务或者服务器重启的时候,可以实现自动启动,仅需使用命令进行简单配置即可实现。 D…...

速卖通卖家如何通过自己搭建测评补单系统,提高产品权重和排名?

速卖通卖家如何给店铺增加权重和排名? 在竞争激烈的速卖通平台上,为自己的店铺增加权重是吸引更多买家和提升销售的关键。店铺的权重决定着在搜索排名、推荐位和广告展示方面的优先级。今天珑哥为您介绍一些有效的策略,帮助您提升速卖通店铺…...

香港金融科技周2023:AIGC重塑金融形态

10月31日,由香港财经事务及库务局与投资推广署主办的“香港金融科技周2023大湾区专场”盛大启幕。中国AI决策领先企业萨摩耶云科技集团创始人、董事长兼 CEO林建明受邀参加圆桌会议,与中国内地、香港以及全球金融科技行业顶尖人才、创新企业、监管机构和…...

6G关键新兴技术-智能超表面(RIS)技术演进

一、产品定义及范围 根据欧盟5G公私联盟协会(5G Infrastructure Public-Private Partnership, 5GPP)定义,可重构智慧表面(Reconfigurable Intelligent Surface, RIS)技术是由能够任意塑造电磁波面的材料组成,几乎是被动(Passice)设备,可以适…...

怎么让小程序排名靠前?小程序搜索排名问题

小程序的排名是十分重要的,因为这会直接影响到用户的点击率,用户在搜索小程序时,会看到搜索引擎的前几条搜索结果,如果您的小程序不在这些位置上,很可能就会被忽略,所以,想要让用户能够看到您的…...

使用Postman快速复现浏览器的请求(包括生成调用代码)

前言 大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。 好久没有写开发类的工具使用文了,这…...

四则运算的正则校验

文章目录 四则运算的正则校验带有变量的四则运算的正则校验带有括号的四则运算的正则校验变量使用${}包裹的四则运算正则表达式变量使用${}包裹的可以有括号的四则运算正则表达式变量使用#{}包裹的可以有括号的四则运算正则表达式变量使用${}或者 #{}包裹的可以有括号的四则运算…...

【备忘录】SpringBoot+ dynamic-datasource配置自定义多数据源

一、 业务场景解释 由于公司业务需要开发设计一款文件读取导入工具,导入的配置和目标数据库并不一定在同一个数据库地址,故需要使用到自定义数据源,并且支持数据源切换 大致场景如下: 二、工具选择 鉴于市面上有很多工具&#…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

C++ 基础特性深度解析

目录 引言 一、命名空间(namespace) C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用(reference)​ C 中的引用​ 与 C 语言的对比​ 四、inline(内联函数…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

归并排序:分治思想的高效排序

目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法&#xff0c;由约翰冯诺伊曼在1945年提出。其核心思想包括&#xff1a; 分割(Divide)&#xff1a;将待排序数组递归地分成两个子…...