性能测试流程? 怎么做性能测试?

一、前期准备

性能测试虽然是核心功能稳定后才开始压测,但是在需求阶段就应该参与,这样可以深入了解系统业务、重要功能的业务逻辑,为后续做准备。

二、性能需求分析(评审)

评审时,要明确性能测试范围、目标;

由于非专业性能测试人员不知道怎么定目标,如果你让他们定,可能定的目标会很离谱,比如,要求单机tps10万、支持1万的并发等等,显然是不合理的,你压测也达不到这个目标;

所以,这个时候,就要体现性能测试人员的专业性了,最好是引导产品、需求或者开发出压测目标(分别是单场景、混合场景、稳定性场景的),自己给建议,大家一起定一个当前合理的目标,达成一致后,让产品或者需求把最终评审的结果以邮件方式发送给领导及项目组成员;

这样,如果最后上线后出问题,还可以避免只有测试背锅,总之目标也不是你一个人定的,是大家一起定的,要背锅一起背锅;

定性能指标,又分为迭代项目和新项目,迭代项目就根据生产监控、日志分析来评估指标,这里需要做容量规划,新项目单独评估(后续详细介绍);

这里说下性能指标,一般是tps(每秒处理事务数,这里都是通过的事务)、art(平均响应时间)及并发数,加上服务器资料利用率的要求(cpu、内存、IO、网络等)、各个服务的资源情况。 

jmeter性能测试:2023最新的大厂jmeter性能测试全过程项目实战详解,悄悄收藏,后面就看不到了_哔哩哔哩_bilibiliicon-default.png?t=N6B9https://www.bilibili.com/video/BV1Vu411L77o/?spm_id_from=333.999.0.0

 

 

三、熟悉系统架构,申请性能测试环境

做性能测试,必须要熟悉项目的架构,这样你才知道监控哪些服务器,以及准备监控方案(监控方式及监控的性能指标点);

包含具体用到的web服务器、应用服务器、缓存数据库服务器、数据库服务器、文件服务器等;

主流的技术栈:nginx、dubbo、mysql、redis、jvm等等(后续专项介绍)。 

四、制定性能测试方案

项目背景及架构分析,

需要的资源,

技术策略(比如压测、监控、分析工具选择等),

场景设计,

计划什么时候做什么事等等。

(模板请联系作者获取) 

五、搭建测试环境,准备测试数据

搭建测试环境是测试必备的技能,当然,如有困难,你也可以找运维、开发一起配合;

测试数据分为基础环境数据和业务数据;

基础环境数据可以从功能测试的库导过来,改一些配置即可;

业务数据包含:存量数据+容量规划数据,比如一个查询接口,都是并发100用户,对应的表数据量是1万和100万,压测结果是不一样的;

数据量要参考生产环境,如果是新项目,除了空库压,最好也做一下存量数据压。 

六、压测脚本开发

主流程稳定后,调试被测接口、开发压测脚本(也可以在功能测试环境进行);

客户端并发工具,推荐用jmeter,主流、开源、轻量、免费、功能强大;

根据实际情况,对脚本调整,比如:参数化、关联、事务、检查点、思考时间、信息头管理器等;

这些是基础,可以访问博客:

www.cnblogs.com/uncleyong/p/10530261.html

这里再强调一下,jmeter只是客户端并发工具,jmeter≠性能测试。

七、预压测(基准测试)

少量并发(比如1个用户),压测10分钟,

第一:可以看压测环境功能是否通;

第二:估算并发过程中需要多少参数化数据的数据量(具体估算方式后续介绍)。

 jmeter性能测试:2023最新的大厂jmeter性能测试全过程项目实战详解,悄悄收藏,后面就看不到了_哔哩哔哩_bilibiliicon-default.png?t=N6B9https://www.bilibili.com/video/BV1Vu411L77o/?spm_id_from=333.999.0.0

 

八、执行压测并监控

场景设计好后,就可以执行压测了,然后监控查看测试各项指标是否满足需求;

如果不满足,可以结合表象及根据自己的经验直接去看预估的瓶颈点;

否则,从请求开始,一步一步排查请求流经的节点,包括服务器资源(cpu、内存、磁盘io、网络)是否存在性能瓶颈、是否存在队列、线程池、连接池、线程死锁、数据库死锁、慢sql、长事务等性能问题;

经常有测试朋友问我用什么工具监控,我大部分都是用的命令,为了方便,也会写shell脚本来监控;

linux服务器,常用的命令是top、vmstat、free、df、sar、iostat、netstat等,一般是多个命令配合着用;

java应用:jvisualvm、jconsole、jmap、jstat、jstack等,以及自己写的一些shell脚本;

redis、mysql、jvm等等,后续文章会专项介绍。

九、分析定位

基于上一步的监控数据,对瓶颈进行分析、定位,模块隔离分析、日志分析、内存分析、线程栈分析、代码跟踪等等;

这个真需要实战积累,没有捷径,遇到好几个去参加过性能培训的朋友,他们反馈说还是不会性能,操作起来同样一脸懵逼、无从下手。

十、性能优化

定位到问题了,大部分情况下,优化方案也就有了,测试可以把自己建议的优化方案告诉开发,开发会结合自己的方案,一起做优化方案评估;如果测试没有优化方案,那就把问题反馈给开发吧,但是也好好学学开发的优化思路,这就是成长的过程。

十一、性能回归

优化后,复测。

十二、编写性能报告

测试结果是多少?

测试是否通过?

发现了什么性能问题?

原因是什么?

如何优化解决的?

系统性能提升了多少倍?

优化方案务必写详细,以便上线同事知道,把优化同步到其它各个环境。

 jmeter性能测试:2023最新的大厂jmeter性能测试全过程项目实战详解,悄悄收藏,后面就看不到了_哔哩哔哩_bilibiliicon-default.png?t=N6B9https://www.bilibili.com/video/BV1Vu411L77o/?spm_id_from=333.999.0.0

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

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

相关文章

R语言01-数据类型

概念 数值型&#xff08;Numeric&#xff09;&#xff1a;用于存储数值数据&#xff0c;包括整数和浮点数。例如&#xff1a;x <- 5。 字符型&#xff08;Character&#xff09;&#xff1a;用于存储文本数据&#xff0c;以单引号或双引号括起来。例如&#xff1a;name &l…

[足式机器人]Part3机构运动微分几何学分析与综合Ch03-1 空间约束曲线与约束曲面微分几何学——【读书笔记】

本文仅供学习使用 本文参考&#xff1a; 《机构运动微分几何学分析与综合》-王德伦、汪伟 《微分几何》吴大任 Ch01-4 平面运动微分几何学 3.1 空间曲线微分几何学概述3.1.1 矢量表示3.1.2 Frenet标架 连杆机构中的连杆与连架杆构成运动副&#xff0c;该运动副元素的特征点或特…

Linux基础(二)

这里写目录标题 一、网络管理1- 网络状态查看1.1 net-tools1.2 iproute2 2- 网络故障排除 &#xff01;step1:检测当前主机和目标主机是否畅通 [ping]step2:检测网络质量,追踪路由 [traceroute]step3:检测网络质量,检查是否有数据包丢失 [mrt]step4: 检查端口是否畅通 [telnet]…

HTML和CSS

HTML HTML(Hyper Text Markup Language):超文本语言 超文本&#xff1a;超越了文本的限制&#xff0c;比普通文本更强大。除了文字信息&#xff0c;还可以定义图片、音频、视频等内容。 标记语言&#xff1a;由标签构成的语言 HTML标签都是预定义好的。例如&#xff1a;使用&l…

Linux下查找和删除7天以前的文件

在工作做&#xff0c;项目里runtime目录下产生很多日志文件&#xff0c;需要定期去删除 记一次linux下清理过期日志的过程&#xff1b; 环境说明&#xff1a;删除/var/log/下7天以前的.log文件&#xff1b; 用到的命令&#xff1a;find、rm&#xff1b; 命令示例 find /data/w…

JS的二进制家族:Blob、ArrayBuffer和Buffer

1.Blob实现下载文件 我们可以通过window.URL.createObjectURL&#xff0c;接收一个Blob&#xff08;File&#xff09;对象&#xff0c;将其转化为Blob URL,然后赋给 a.download属性&#xff0c;然后在页面上点击这个链接就可以实现下载了 <!-- html部分 --> <a id&qu…

一文搞懂深度信念网络!DBN概念介绍与Pytorch实战

目录 一、概述1.1 深度信念网络的概述1.2 深度信念网络与其他深度学习模型的比较结构层次学习方式训练和优化应用领域 1.3 应用领域图像识别与处理自然语言处理推荐系统语音识别无监督学习与异常检测药物发现与生物信息学 二、结构2.1 受限玻尔兹曼机&#xff08;RBM&#xff0…

正确进行自动化测试

前言&#xff1a; &#x1f4d5;作者简介&#xff1a;热爱编程的小七&#xff0c;致力于C、Java、Python等多编程语言&#xff0c;热爱编程和长板的运动少年&#xff01; &#x1f4d8;相关专栏Java基础语法&#xff0c;JavaEE初阶&#xff0c;数据库&#xff0c;数据结构和算法…

10-案例: 注册登录

项目思路: 1. 首页展示 将数据传递给前端模板渲染 2. 注册用户 接收前端传递的数据,保存后,重定向到首页 3. 删除用户 接收前端传递的用户名,进行删除 4. 修改用户 接收前端传递的数据,老名字进行判断,新数据修改数据 项目结构: 构建蓝图: (1). apps / user / model.py 增…

STM32中BOOT的作用 (芯片死锁解决方法)

BOOT stm32中具有BOOT1和BOOT0 作用 BOOT是stm32单片机的启动模式&#xff0c; 通过不同组合模式&#xff0c;共有三种启动方式。 一般来说就是指我们下好程序后&#xff0c;重启芯片时&#xff0c;SYSCLK的第4个上升沿&#xff0c;BOOT引脚的值将被锁存。用户可以通过设置B…

边写代码边学习之Bidirectional LSTM

1. 什么是Bidirectional LSTM 双向 LSTM (BiLSTM) 是一种主要用于自然语言处理的循环神经网络。 与标准 LSTM 不同&#xff0c;输入是双向流动的&#xff0c;并且它能够利用双方的信息。 它也是一个强大的工具&#xff0c;可以在序列的两个方向上对单词和短语之间的顺序依赖…

react通过ref获取函数子组件实例方法

在react16之后带来了hooks之后&#xff0c;确实方便了很多组件开发&#xff0c;也加快了函数式编程的速度&#xff0c;但是当你通过useRef获取子组件的时候&#xff0c;又恰好子组件是一个函数组件&#xff0c;那么将会报一个错误&#xff1a;报这个错误的主要原因是函数组件没…

Java:移位运算符左移运算符<<、右移运算符>>、无符号右移运算符>>>

目录 符号位左移运算符<<右移运算符>>无符号右移运算符>>>其他 符号位 二进制形式最左边的第一位是符号位 0表示正数1表示负数 例如 十进制&#xff1a;1 二进制原码&#xff1a;00000000 00000000 00000000 00000001十进制&#xff1a;-1 二进制原码…

数据通信——传输层(UDP)

引言 我们上网观看比赛的时候&#xff0c;一旦网络信号出现问题&#xff0c;那可就太难受了&#xff0c;这意味着卡顿的时间内&#xff0c;你会错过这段时间内的内容。这种特性要归功于UDP&#xff08;User Datagram Protocol&#xff09;用户数据报协议。 无连接性 一般的&am…

第十七课:利用 Setup Factory 制作 Qt 软件安装包

功能描述&#xff1a;详细介绍如何利用 Setup Factory 制作 Qt 软件安装包&#xff0c;从 Setup Factory 软件下载、安装&#xff0c;到如何利用 Setup Factory 制作软件安装包&#xff0c;手把手教你将 Qt 应用程序制作成具有安装向导的安装包。 一、Setup Factory 简介 Setu…

qt信号槽同步问题

目录 信号槽&#xff1a; 注意事项&#xff1a; 具体例子&#xff1a; 线程安全问题的例子&#xff1a; 信号槽&#xff1a; 在Qt编程中&#xff0c;信号&#xff08;Signal&#xff09;和槽&#xff08;Slot&#xff09;是一种用于在对象之间进行通信的机制。信号用于发出…

宇凡微Y51T合封射频芯片,集成433M芯片和MCU

宇凡微推出的Y51T芯片的设计理念很有趣&#xff0c;将MCU和射频芯片集成在一颗芯片内&#xff0c;从而实现高度的集成度和功能优势。这样的设计在某些应用中确实能够带来诸多优点&#xff1a; Y51T将51H MCU和Y4455 433MHz射频芯片融合在一颗芯片内&#xff0c;实现了高度集成的…

Python基础 - 构造函数

目录 基础构造函数 重写 钻石继承 super函数 基础构造函数 命名为_init_&#xff0c;在实例化对象之前会自动执行该函数 构造函数方便我们在实例化对象的时候实现个性化定制 class A():def __init__(self,x,y):self.x xself.y ydef add(self):return self.xself.yclass…

(纯c)数据结构之------>链表(详解)

目录 一. 链表的定义 1.链表的结构. 2.为啥要存在链表及链表的优势. 二. 无头单向链表的常用接口 1.头插\尾插 2.头删\尾删 3.销毁链表/打印链表 4.在pos位置后插入一个值 5.消除pos位置后的值 6.查找链表中的值并且返回它的地址 7.创建一个动态开辟的结点 三.顺序表与链表…

【深度学习】Pytorch训练过程中损失值出现NaN

项目场景 利用Pytorch框架&#xff0c;结合FEDformer开源代码&#xff08;https://github.com/MAZiqing/FEDformer&#xff09;&#xff0c;将自己的数据集作为输入训练模型。 问题描述 训练过程中&#xff0c;发现打印出来的Train loss, Test loss, Test loss中&#xff0c…