转发自博客园贺满:https://www.cnblogs.com/puresoul/p/5463477.html,有删减。
本文主要介绍下性能测试的基本流程,性能测试从实际执行层面来看,测试的过程一般分为这么几个阶段,如下图:

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

一、性能需求分析:

性能需求分析是整个性能测试工作开展的基础,如果连性能的需求都没弄清楚,后面的性能测试执行其实是没有任何意义的,而且性能需求分析做的好不好直接影响到性能测试的结果。
一些性能测试人员常犯的错误就是测试一开始就直接用工具对系统进行加压,没有弄清楚性能测试的目的,稀里糊涂做完了以后也不知道结果是否满足性能需求。市面上的书籍也大都是直接讲性能测试工具如LR,jmeter如何使用,导致很多新手一提到性能测试就直接拿工具来进行录制回放,使得很多人认为会使用性能测试工具就等于会性能测试了,殊不知工具其实只是性能测试过程中很小的一部分。
在需求分析阶段,测试人员需要与项目相关的人员进行沟通,收集各种项目资料,对系统进行分析,建立性能测试数据模型,并将其转化为可衡量的具体性能指标,确认测试的目标。所以性能测试需求分析过程是繁杂的,需要测试人员有深厚的性能理论知识,除此之外还需要懂一些数学建模的知识来帮助我们建立性能测试模型。
首先,让我们来看看通过性能需求分析我们需要得出哪些结论或目标:

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

其次,需求分析阶段我们可以从以下几个方面入手:
1、系统信息调研:
指对被测试系统进行分析,需要对其有全面的了解和认识,这是我们做好性能测试的前提,而且在后续进行性能分析和调优时将会大有用处,试想如果连系统的架构、协议都不了解,我们如何进行准确的性能测试?如果进行性能分析与调优?
需要分析的系统信息如下(包括但不仅限于如下这些):

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

四、结果分析与调优

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

五、测试报告与总结

性能测试报告是性能测试的里程碑,通过报告能展示出性能测试的最终成果,展示系统性能是否符合需求,是否有性能隐患。性能测试报告中需要阐明性能测试目标、性能测试环境、性能测试数据构造规则、性能测试策略、性能测试结果、性能测试调优说明、性能测试过程中遇到的问题和解决办法等。
性能测试工程师完成该次性能测试后,需要将测试结果进行备案,并做为下次性能测试的基线标准,具体包括性能测试结果数据、性能测试瓶颈和调优方案等。同时需要将测试过程中遇到的问题,包括代码瓶颈、配置项问题、数据问题和沟通问题,以及解决办法或解决方案,进行知识沉淀。

【性能测试】性能测试的基本流程相关推荐

  1. [MySQL 5.6] MySQL 5.6 group commit 性能测试及内部实现流程

    [MySQL 5.6] MySQL 5.6 group commit 性能测试及内部实现流程 http://mysqllover.com/?p=581 尽管Mariadb以及Facebook在long ...

  2. 性能测试—性能测试方案设计思路总结

    一.需求分析 1.测试目的 为什么测?目的在于测试系统相关性能能否满足业务需求.通常分以下两种情况: 1)新项目上线 2)老项目优化 如果是老项目优化,可考虑是否存有历史测试方案,如果有可以参考,或许 ...

  3. 性能测试 性能测试实战(六)Jmeter + prometheus-plugin + Prometheus Jmeter性能测试环境搭建 普罗米修斯插件 性能监控 性能数据可视化平台 性能测试平台搭建

    文章目录 一.前言 二.Jmeter 性能测试持续可视化环境搭建 1.Jmeter

  4. 性能测试 性能测试实战(八)Jmeter性能测试平台开发,性能测试平台架构解析 ,性能测试平台搭建 分布式性能压测平台 Jmeter分布式性能测试管理平台 性能测试平台示例案例 《完结篇》

    文章目录 一.前言 二.Jmeter分布式性能测试平台 介绍 1.Jmter分布式性能测试平台 简介 2.Jmeter分布式性能测试平台 优秀案例1 3.Jmeter分布式性能测试平台 优秀案例2 4 ...

  5. 性能测试——性能测试中的专业术语

    性能测试中的专业术语 1.并发数:LoadRunner中的虚拟用户数指的就是并发数.比如说一个网站能抗多大的并发啊?也就是问你这个网站最多可以模拟多少个虚拟用户数在上面跑啊! 2.系统用户数:简单的说 ...

  6. 服务器交换机等系统性能测试,性能测试方案(示例)

    前面所说的测试分析等准备工作实际上最终目的是制定测试方案,测试方案一般包括: 项目的简要说明.项目系统结构.项目的业务结构.以及项目的性能需求.测试环境数据以及测试策略方法.测试案例.测试人员进度安排 ...

  7. 性能测试~性能测试方案

    1. 背景 1.1. 项目背景 明确该性能测试的项目背景 1.2. 性能目标 性能目标都会影响项目的整个过程,对目标的把握将决定一个性能项目的走向 测试测目标必须明确 取生产峰值流量作为基线(目标一般 ...

  8. Jmeter_性能测试(一):性能测试的概念,性能测试的流程和术语,性能测试脚本的制作和调试

    Jmeter_性能测试(1):性能测试的概念 性能测试的概念 性能测试是指通过特定方式,对被测系统按照一定策略施加压力,获取系统 响应时间.TPS(Transaction Per Second).吞吐 ...

  9. 手机APP软件性能测试工具及流程介绍

    性能测试(上) 性能测试的分类和流程 什么是性能测试? 性能测试概念: 性能测试主要通过自动化的测试工具模拟多种正常.峰值以及异常负载条件来对系统的各项性能指标进行测试 性能测试工具: Jmeter ...

  10. 性能测试理论(一)之性能测试方法与流程

    性能测试方法 一.正确理解性能测试 1.1.性能测试: 1.2.不符合需求的情况下: 1.3.常见误区: 二.什么时候需要做性能测试 2.1.什么时候需要做? 2.2.能力验证 2.3.验收性 2.4 ...

最新文章

  1. 很多初接触乐鑫ESP32/ESP8266 模块时,都不清楚怎么为 ESP32、ESP8266 系列模组烧录固件呢?这里以启明云端WT8266-S5(ESP-12F)和ESP32-WROOM模块为例说明
  2. VTK:Filtering之PerlinNoise
  3. Markdown---图片保存位置设置
  4. 解决移动端视频层级最高的问题,修改video属性
  5. 宜普电源转换公司(EPC)于2018年WiPDA宽能隙功率器件及应用论坛与工程师作技术交流
  6. 在本地计算机无法启动iis admin 服务.错误:1053,Windows无法在本地计算机上启动SQL Server(SQLEXPRESS)服务。错误1053...
  7. 完整的连接器设计手册_连接器退化机理是什么?(一)
  8. 【Java】教学视频资源
  9. 微信账号和系统账号绑定
  10. @NotNull 和 @NotEmpty 和@NotBlank 区别
  11. 光伏板怎么申请ASTM E108阻燃测试?
  12. ofo押金是否可以起诉_是否可以因应用程序中的错误而被起诉?
  13. 给kvm虚机开放对外访问的端口
  14. 什么是MVC设计模式???
  15. 如何高效学习python
  16. ARM中流水线分析——以三级流水线进行分析
  17. php 活动网站,网页游戏的活动管理后台和管理后台
  18. ebs xml开发 html,EBS excel模板xml publisher开发
  19. 【Android】Unable to get provider com.crashlytics.android.CrashlyticsInitProvider: io.fabric.sdk.andro
  20. 信阳师院计算机与信息技术学院,徐丽娟

热门文章

  1. 使用visio如何快速生成一个网格状图案,文档技巧!
  2. linux把u盘只读文件,完美解决linux下U盘文件只读的问题
  3. 一文带你深度探析:软硬科技协同创新正当时
  4. Matlab中矩阵卷积函数convn
  5. python爬虫基础(12:app数据爬取)
  6. 蓝牙协议学习整理(一)蓝牙的概述
  7. strom及DRPC性能测试与改进
  8. 面试总结三 --- 浏览器与网络
  9. java word 题目导入_java使用poi导入word题库
  10. 区分LPCTSTR和LPTSTR和char *