8年经验之谈!一文看懂性能测试的流程!

每天做着点点点测试有没有危机感?

突然有一天,领导说:“小王,今天把996福报系统压一下,下班前把压测报告发我邮箱。”

啥?压测?今天?报告?怎么压?怎么写?从来没做过啊,心里一万匹草泥马奔跑而过,别说996了,估计明天都下不了班了;

好歹也像功能测试,给个压测需求吧!没法,你遇到了一个不懂性能测试的领导;

下面大概介绍下一个完整的项目是怎么做性能测试的,看完,你也知道怎么和领导沟通性能测试、以及该怎么做性能测试了,至于欠缺的性能知识,自己努力挤时间补吧

一、前期准备

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

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

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

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

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

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

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

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

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

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

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

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

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

四、制定性能测试方案

项目背景及架构分析,

需要的资源,

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

场景设计,

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

(模板请联系作者获取)

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

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

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

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

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

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

六、压测脚本开发

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

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

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

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

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

七、预压测(基准测试)

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

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

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

八、执行压测并监控

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

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

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

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

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

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

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

九、分析定位

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

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

十、性能优化

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

十一、性能回归

优化后,复测。

十二、编写性能报告

测试结果是多少?

测试是否通过?

发现了什么性能问题?

原因是什么?

如何优化解决的?

系统性能提升了多少倍?

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java多线程面试集合(1)

1.并行和并发的区别 操作系统角度,线程是最小的执行单位 并行同一时刻两个线程都在执行,这就要求要有两个cpu。并发就是 同一时刻,只有一个执行但是在一个时间段内,两个线程都执行了,并发依赖于CPU切换线程&#xff…

20240112-【UNITY 学习】实现第一人称移动教程

1、创建一个空物体,挂载Rigidbody组件,并设置相应参数 2、在上述空物体下创建一个胶囊体,两个空物体,一个用来控制朝向,另一个用来控制摄像机 3、给摄像机创建一个父物体,并挂载脚本MoveCamera_01.cs using…

YOLOv8改进 更换层次化视觉变换器的网络结构

一、SwinTransformer论文 论文地址:arxiv.org/pdf/2103.14030.pdf 二、 SwinTransformer网络结构 SwinTransformer是一种基于transformer的图像分类网络结构。SwinTransformer是由微软亚洲研究院提出的,其特点是具有高效的计算和参数效率。 SwinTransformer的网络结构主要…

java每日一题——打印100以内个位和十位相同,尾数为1,3,5,7的数字

前言: 打好基础,daydayup! 题目:打印100以内个位和十位相同,尾数为1,3,5,7的数字 思路:1,个位通过对10求余数可求出1,3,5,7; 2,十位可通过先除10…

主流浏览器设置代理IP之Firefox浏览器

给浏览器设置代理IP是目前代理IP的主流使用场景之一,接下来小编就手把手教你如何对Firefox浏览器进行代理IP设置 注:本次使用IP来源于携趣代理平台https://www.xiequ.cn/index.html?4c51b56bhttps://www.xiequ.cn/index.html?4c51b56bFirefox浏览器内…

Java多线程并发篇----第九篇

系列文章目录 文章目录 系列文章目录前言一、阻塞状态(BLOCKED)二、线程死亡(DEAD)三、终止线程 4 种方式前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一、…

ERROR in Plugin “react“ was conflicted .... 天坑留念-turborepo、eslint plugin

前两天项目代码拉下来,装完依赖启动的时候直接报错: [eslint] Plugin "react" was conflicted between ".eslintrc.js eslint-config-custom eslint-config-alloy/react" and "BaseConfig D:\pan\erp\test\business-servic…

矿泉水除硝酸盐的关键技术

在全球工业化和城市化的加速推进下,饮用水安全问题已经成为公众关注的焦点。在众多的水质污染物中,硝酸盐因其对健康的潜在危害而备受关注。为了确保饮用水的安全,去除水中的硝酸盐至关重要。本文将重点介绍离子交换树脂工艺在饮用水硝酸盐去…

学习C指针

指针基本介绍 计算机中的每个内存都有地址 整型分配4字节,字符分配1字节 ,浮点数分配4字节 指针是一个变量,它存放着另外一个变量的地址 int a; int *p; p &a;// a 5; printf(p) //get a address print &a //get a address …

黑马苍穹外卖学习Day5

文章目录 Redis学习Redis简介准备工作Redis常用数据类型介绍各数据类型的特点Redis常用命令字符串操作命令哈希操作命令列表操作命令集合操作命令有序集合操作命令通用操作命令 在Java中操作Redis导入Spring Data Redis坐标配置Redis数据源编写配置类,创建RedisTemp…

Golang基础入门及Gin入门教程(2024完整版)

Golang是Google公司2009年11月正式对外公开的一门编程语言,它不仅拥有静态编译语言的安全和高性能,而 且又达到了动态语言开发速度和易维护性。有人形容Go语言:Go C Python , 说明Go语言既有C语言程序的运行速度,又能达到Python…

【贪心】一手顺子

/** 贪心:将一个数当成一个组中最小的数,在根据该最小数找其它数。* 思路:将hand进行分组,假设hand长度为 n,必须n % groupSize 0才可以分组,否则返回false,* 使用哈希表记录每个数出现…

ffmpeg命令增加headers参数解决http请求ts返回404 not found问题的解决方法:-headers、-an

最近项目上遇到一个问题,用ffmpeg请求录制一个m3u8的实时流成为mp4文件的时候,命令返回404错误: 但是有一个很奇怪的现象,就是ffmpeg请求不到的,VLC却能正常播放,对比一下抓包: 那么既然就差别…

用机器学习方法来预测设备故障

最近做了一个项目,根据设备的状态,来判断设备是否有故障,这里总结一下所用到的数据探索,特征工程以及机器学习模型等方法。考虑到项目数据的敏感性,这里我以网上找到的一个公开数据集UCI Machine Learning Repository作…

基于STM32的温室大棚环境检测及自动浇灌系统设计

需要全部资料请私信我! 基于STM32的温室大棚环境检测及自动浇灌系统设计 一、绪论1.1 研究背景及意义1.2 研究内容1.3 功能设计 二、系统方案设计2.1 总体方案设计 三、系统硬件设计3.1 STM32单片机最小系统3.2 环境温度检测电路设计3.3 土壤湿度检测电路设计3.4 光…

FineBI实战项目一(23):订单商品分类词云图分析开发

点击新建组件,创建订单商品分类词云图组件。 选择词云,拖拽catName到颜色和文本,拖拽cat到大小。 将组件拖拽到仪表板。 结果如下:

企业微信forMAC,如何左右翻动预览图片

1、control commandshifd 进入企业微信的debug调试模式 2、按照如下步骤选择 3、重启企业微信

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -我参与的投票列表实现

锋哥原创的uniapp微信小程序投票系统实战: uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

欧洲高性能计算联合企业豪掷2000万欧元采购量子计算机

内容来源:量子前哨(ID:Qforepost) 编辑丨慕一 编译/排版丨琳梦 深度好文:945字丨8分钟阅读 近日,欧洲高性能计算联合企业(EuroHPC JU)启动了一项重要计划,旨在显著提…

MOOSE相关滤波跟踪算法(个人学习笔记)

MOOSE 论文标题 “Visual Object Tracking using Adaptive Correlation Filters” 原文地址 用滤波器对目标外观进行建模,并通过卷积操作来执行跟踪。 参考阅读: 目标跟踪经典算法——MOSSE(Minimum Output Sum Square Error&#xff09…