性能测试总结 —— 测试流程篇!

news2025/1/14 19:34:59

本文主要介绍下性能测试的基本流程,性能测试从实际执行层面来看,测试的过程一般分为这么几个阶段,如下图:      

下面分别介绍下每个阶段具体需要做什么

一、性能需求分析:

  性能需求分析是整个性能测试工作开展的基础,如果连性能的需求都没弄清楚,后面的性能测试执行其实是没有任何意义的,而且性能需求分析做的好不好直接影响到性能测试的结果。

  一些性能测试人员常犯的错误就是测试一开始就直接用工具对系统进行加压,没有弄清楚性能测试的目的,稀里糊涂做完了以后也不知道结果是否满足性能需求。市面上的书籍也大都是直接讲性能测试工具如LR,jmeter如何使用,导致很多新手一提到性能测试就直接拿工具来进行录制回放,使得很多人认为会使用性能测试工具就等于会性能测试了,殊不知工具其实只是性能测试过程中很小的一部分。

 在需求分析阶段,测试人员需要与项目相关的人员进行沟通,收集各种项目资料,对系统进行分析,建立性能测试数据模型,并将其转化为可衡量的具体性能指标,确认测试的目标。所以性能测试需求分析过程是繁杂的,需要测试人员有深厚的性能理论知识,除此之外还需要懂一些数学建模的知识来帮助我们建立性能测试模型。

首先,让我们来看看通过性能需求分析我们需要得出哪些结论或目标:

  • 明确倒底要不要做性能测试?性能测试的目的是什么?
  • 明确被测系统是什么?被测试系统的相关技术信息如:架构、平台、协议等
  • 明确被测系统的基本业务、关键业务,用户行为
  • 明确性能测试点是什么?哪些需要测,为什么?哪些不需要测,又是为什么?
  • 明确被测系统未来的业务拓展规划以及性能需求?
  • 明确性能测试策略,即应该怎么测试?
  • 明确性能测试的指标,知道测试出来的结果怎么算通过?

其次,需求分析阶段我们可以从以下几个方面入手:

1、系统信息调研:

  指对被测试系统进行分析,需要对其有全面的了解和认识,这是我们做好性能测试的前提,而且在后续进行性能分析和调优时将会大有用处,试想如果连系统的架构、协议都不了解,我们如何进行准确的性能测试?如果进行性能分析与调优?

  需要分析的系统信息如下(包括但不仅限于如下这些):

 

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

2、业务信息调研:

  指对被测试的业务进行分析,通过对业务的分析和了解,方便我们后续进行性能测试场景的确定以及性能测试指标的确定。

  需要分析的业务信息如下(包括但不仅限于如下这些):

  

3、性能需求评估:

  在实施性能测试之前,我们需要对被测系统做相应的评估,主要目的是明确是否需要做性能测试。如果确定需要做性能测试,需要进一步确立性能测试点和指标,明确该测什么、性能指标是多少,测试通过or不通过的标准?性能指标也会根据情况评估,要求被测系统能满足将来一定时间段的业务压力。

  判断是否进行性能测试主要从下面两个方面进行思考:

  • 业务角度:

   系统是公司内部 or 对外?系统使用的人数的多少?如果一个系统上线后基本没几个人使用,无论系统多大,设计多么复杂,并发性的性能测试都是没必要的,前期可以否决。当然,除非在功能测试阶段发现非常明显的性能问题,使得用户体验较差的,此时可进行性能测试来排查问题。

  • 系统角度:系统又可以从以下3个方面进行分析

  a)系统架构:

     如果一个系统采用的框架是老的系统框架(通常大公司都有自己的统一框架),只是在此框架上增加一些应用,其实是没有必要做性能测试,因为老框架的使用肯定是经过了验证的。如果一个系统采用的是一种新的框架,可以考虑做性能测试。

  b)数据库要求:

     很多情况下,性能测试是大数据量的并发访问、修改数据库,而瓶颈在于连接数据库池的数量,而非数据库本身的负载、吞吐能力。这时,可以结合DBA的建议,来决定是否来做性能测试。

  c)系统特殊要求:

     从实时性角度来分析,某些系统对响应时间要求比较,比如证券系统,系统的快慢直接影响客户的收益,这种情况就有作并发测试的必要,在大并发量的场景下,查看这个功能的响应时间。

     从大数据量上传下载角度分析,某些系统经常需要进行较大数据量的上传和下载操作,虽然此种操作使用的人数不会太多,但是也有必要进行性能测试,确定系统能处理的最大容量,如果超过这个容量时系统需要进行相关控制,避免由于不人工误操作导致系统内存溢出或崩溃。

4、确定性能测试点: 

  在上面第3点中,我们简单分析了如何确定一个系统是否需要做性能测试。下面简单总结下如果一个系统确定要做性能测试,我们如何确定被测系统的性能测试点?

  我们可以从下面几个方面进行分析:

  • 关键业务:

      确定被测项目是否属于关键业务,有哪些主要的业务逻辑点,特别是跟交易相关的功能点。例如转账,扣款等接口。如果项目(或功能点)不属于关键业务(或关键业务点),则可转入下面。

  • 日请求量:

      确定被测项目各功能点的日请求量(可以统计不同时间粒度下的请求量如:小时,日,周,月)。如果日请求量很高,系统压力很大,而且又是关键业务,该项目需要做性能测试,而且关键业务点,可以被确定为性能点。

  • 逻辑复杂度:

      判定被测项目各功能点的逻辑复杂度。如果一个主要业务的日请求量不高,但是逻辑很复杂,则也需要通过性能测试。原因是,在分布式方式的调用中,当某一个环节响应较慢,就会影响到其它环节,造成雪崩效应。

  • 运营推广活动:

      根据运营的推广计划来判定待测系统未来的压力。未雨绸缪、防患于未然、降低运营风险是性能测试的主要目标。被测系统的性能不仅能满足当前压力,更需要满足未来一定时间段内的压力。因此,事先了解运营推广计划,对性能点的制定有很大的作用。例如,运营计划做活动,要求系统每天能支撑多少 PV、多少 UV,或者一个季度后,需要能支撑多大的访问量等等数据。当新项目(或功能点)属于运营重点推广计划范畴之内,则该项目(或功能点)也需要做性能测试。

  以上 4 点,是相辅相成、环环相扣的。在实际工作中应该具体问题具体分析。例如,当一个功能点不满足以上 4 点,但又属于资源高消耗(内存、CPU),也可列入性能测试点行列。

5、确定性能指标: 

  性能需求分析一个很重要的目标就是需要确定后期性能分析用的性能指标,性能指标有很多,可以根据具体项目选取和设定,而具体的指标值则需要根据业务特点进行设定,本文不详细进行阐述,后续可考虑就此单独写一篇。

二、性能测试准备

1、测试环境准备:

  a)系统运行环境:这个通常就是我们的测试环境,有些时候需求比较多,做性能测试担心把环境搞跨了影响其它的功能测试,可能需要重新搭建一套专门用来做性能测试的环境。

  b)执行机环境:这个就是用来生成负载的执行机,通常需要在物理机上运行,而物理机又是稀缺资源,所以我们每次做性能测试都需要提前准备好执行机环境。

2、测试场景设计:根据性能需求分析来设计符合用户使用习惯的场景,场景设计的好不好直接影响到性能测试的效果。

3、性能工具准备:

  a)负载工具:根据需求分析和系统特点选择合适的负载工具,比如LR、Jmeter或galting等

  b)监控工具:准备性能测试时的服务器资源、JVM、数据库监控工具,以便进行后续的性能测试分析与调优。

4、测试脚本准备:如果性能测试工具不能满足被测系统的要求或只能满足部分要求时,需要我们自己开发脚本配合工具进行性能测试。

5、测试数据准备:

  a)负载测试数据:并发测试时需要多少数据?比如登录场景?

  b)DB数据量大小:为了尽量符合生产场景,需要模拟线上大量数据情况,那么要往数据库里提前插入一定的数据量。这可能需要花费一些时间,特点是关联系统较多,逻辑复杂的业务可能同时涉及多张表。

6、其它:如果需要其它其它关联系统或专业人士如DBA配合的,也需要提前进行沟通。

三、性能测试执行

 1、人工边执行边分析

  通常我们做性能测试都是人工执行并随时观察系统运行的情况、资源的使用率等指标。性能测试的吸引力之一就在于它的不可预知性。当我们在做性能测试的时候遇到跟预期不符的情况很正常,这个时候需要冷静的分析。但这个过程可能会很慢长,需要不断的调整系统配置或程序代码来定位问题,耗时耗人力。特别是在当前敏捷开发模式比较流行的大环境下,版本发布非常频繁且版本周期短(通常1~2周一个版本),没有那么长的时间来做性能测试。

2、无人值守执行性能测试

  无人值守是最理想化的目标,目前我们也朝着这个方向努力。无人值守不是说没有人力介入,而是把人为的分析和执行过程分离,执行过程只是机器服从指令的运行而已。通常测试环境在白天比较繁忙,出现性能问题及定位难度较大且会影响功能测试。所以一般性能测试最好在晚上或周末进行,在相对较安静的条件有利于测试结果的稳定性。这种方法也相对比较适合敏捷的模式,不需要人工一直守着。只需要在拿到结果后进行分析就好了。同进,这种方式对测试人员能力的要求比较高,需要我们能进行自动化的收集各种监控数据、生成报表便于后续分析。

四、结果分析与调优

关于性能分析与调优这是一个比较大的话题,后续会单独进行总结和分析。

五、测试报告与总结

   性能测试报告是性能测试的里程碑,通过报告能展示出性能测试的最终成果,展示系统性能是否符合需求,是否有性能隐患。性能测试报告中需要阐明性能测试目标、性能测试环境、性能测试数据构造规则、性能测试策略、性能测试结果、性能测试调优说明、性能测试过程中遇到的问题和解决办法等。

  性能测试工程师完成该次性能测试后,需要将测试结果进行备案,并做为下次性能测试的基线标准,具体包括性能测试结果数据、性能测试瓶颈和调优方案等。同时需要将测试过程中遇到的问题,包括代码瓶颈、配置项问题、数据问题和沟通问题,以及解决办法或解决方案,进行知识沉淀。

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:自动化测试老司机 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

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

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

相关文章

【PLC】现场总线和工业以太网汇总

1、 现场总线 1.1 什么是现场总线 1)非专业描述: 如下图:“人机界面”一般通过以太网连接“控制器(PLC)”,“控制器(PLC)”通过 “现场总线”和现场设备连接。 2)专业描述(维基百科) 现场总线…

MTK安卓开发板_联发科开发板评估套件_安卓主板硬件开发

在介绍开发板之前,让我们先来区分一下核心板和开发板的区别。核心板是一种集成度高、功能完整的计算模块,搭载系统,简化了外围接口,体积尺寸相对较小,主要适用于嵌入式系统。而开发板由核心板底板组成,提供…

探索直播美颜SDK的未来发展方向:虚拟现实、增强现实与混合

如今,随着虚拟现实(VR)、增强现实(AR)和混合现实(MR)等技术的不断发展,直播美颜SDK的未来发展方向也将面临着更多的可能性和挑战。今天我将与大家共同探讨直播美颜SDK在虚拟现实、增…

国科大网络行为学导论代码作业--更新中

一、Xray安装 参考自:Xray的安装与使用(超详细)_xray使用教程-CSDN博客 下载网址:Releases chaitin/xray GitHub 解压 双击安装 生成证书 cd到xray目录,生成证书 复制链接 然后cd到xray目录 .\xray_windows_amd6…

Ubuntu 14.04:PaddleOCR基于PaddleHub Serving的服务部署(失败)

目录 一、为什么使用一键服务部署 二、安装 paddlehub 1.8 2.1 安装前的环境准备 2.2 安装paddlehub 1.8 2.2.1 安装paddlehub 2.2.2 检测安装是否成功 2.2.3 检查本地与远端PaddleHub-Server的连接状态 2.2.4 测试使用 2.3 其他 2.3.1 如何卸载、pip常用命令、常见…

WRF模型运行教程(ububtu系统)--II.ARWpost安装

一、ARWpost简介 ARWpost 是一个把 WRF 结果转为 GrADS 或 Vis5D 可以辨识的数据格式的软件,就是WRF运行结束以后,把WRF的结果变成咱们平时比较常用的数据格式。 二、下载和安装ARWpos_V3 1.ARWpos_V3安装前准备 # 进入Build_WRF文件夹 cd Build_WRF …

代码随想录刷题笔记-Day33

1. 跳跃游戏 55. 跳跃游戏https://leetcode.cn/problems/jump-game/ 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 tru…

【海贼王的数据航海】排序——概念|直接插入排序|希尔排序

目录 1 -> 排序的概念及其运用 1.1 -> 排序的概念 1.2 -> 常见的排序算法 2 -> 插入排序 2.1 -> 基本思想 2.2 -> 直接插入排序 2.2.1 -> 代码实现 2.3 -> 希尔排序(缩小增量排序) 2.3.1 -> 代码实现 1 -> 排序的概念及其运用 1.1 -&g…

【数字调制】OQPSK调制与解调【附MATLAB代码】

文章来源:微信公众号:EW Frontier 关注可了解更多的雷达、通信、人工智能相关代码。 QPSK信号 QPSK信号与BPSK信号的调制方法相同,仅调制阶数不同,其表达式为: 上式中分别表示I、Q两路的基带信息序列,取值…

Xcode remove the package dependency

Xcode Version 15.2 (15C500b) 🤔️ 想知道直接右键,这个 Delete 为什么是禁用状态 推荐一下刚上线的 App 熊猫小账本,里面有用到这篇博客讲的内容 熊猫小账本 一个简洁的记账 App,用于记录日常消费开支收入,使用 iCl…

Pulsar消息路由深入剖析

一、概述 大数据背景下,分区应该是所有组件必备的基本条件,否则面对海量数据时无论是计算还是存储都容易遇到瓶颈。跟其他消息系统一样,Pulsar通过Topic将消息数据进行业务层面划分管理,同时也支持Topic分区,通过将多…

挑战杯 多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉

文章目录 0 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习多目标跟踪 …

WRF模型安装教程(ububtu系统)-- III.WRF和WPS模型的安装

六、WRF模型的安装 # 进入Build_WRF文件夹 cd Build_WRF # 下载WRFV3.9.1 wget https://www2.mmm.ucar.edu/wrf/src/WRFV4.0.TAR.gz # 解压WRF安装包并进入 tar -zxvf WRFV4.0.TAR.gz cd WRF # 安装WRF ./configure 出现如下选项: 选择34, 这里是让你选…

React进阶(Redux,RTK,dispatch,devtools)

1、初识Redux 是React最常用的集中状态管理工具,类似于Vue中的Pinia(Vuex),可以独立于框架运行 作用:通过集中管理的方式管理应用的状态 案例-实现一个计数器 实现步骤: Redux管理数据的流程: state:一个对象&…

nRF52832——唯一 ID 与加密解密

nRF52832——唯一 ID 与加密解密 唯一 ID 概念唯一 ID 作用读取唯一 ID 唯一 ID 用于加密TEA 加密算法唯一 ID 的加密和解密 唯一 ID 概念 唯一 ID 作用 nRF52xx 微控制器提供一组 64 位的唯一 ID 号,这个唯一身份标识所提供的 ID 值对任意一个 nRF52xx 微控制器&…

Java项目:51 springboot基于springboot的社区团购系统设计012

作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本基于Spring Boot的社区团购系统主要满足两种用户的需求,这两种用户分别为管理员和用户,下面将对这两种用户分别实现的…

电磁兼容EMC:一文读懂电气放电管选型设计

目录 1 GDT外观结构 2 GDT 常见品牌 3 GDT命名规则 4 GDT工作原理 5 GDT基本特点 6 GDT典型应用 7 GDT电气参数说明 7.1 DC Spark-over Voltage 直流火花放电电压(直流击穿电压) 7.2 Maximum Impulse Spark-over Voltage 最大冲击火花放电电压&…

Ribbon简单使用

Ribbon是Netflix发布的云中间层服务开源项目,其主要功能是提供客户端实现负载均衡算法。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,Ribbon是一个客户端负载均衡器,我们可以在配置文件中Load Balancer后…

【DataWhale学习】用免费GPU线上跑StableDiffusion项目实践

用免费GPU线上跑SD项目实践 ​ DataWhale组织了一个线上白嫖GPU跑chatGLM与SD的项目活动,我很感兴趣就参加啦。之前就对chatGLM有所耳闻,是去年清华联合发布的开源大语言模型,可以用来打造个人知识库什么的,一直没有尝试。而SD我…

【数据结构】顺序表的实现

文章目录 **线性表(linear):****顺序表****下列是需要实现的接口(Seqlist.h)****顺序表的初始化****顺序表的插入数据****顺序表的扩容(为插入数据提供保障)****顺序表的尾插****顺序表的头插****顺序表的删除数据****顺序表的尾删****顺序表的头删****查找指定位置…