一个完整的项目是怎么做性能测试?资深8年测试总结...

news2024/11/27 3:43:56

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

突然有一天!
领导说:“小刘,今天把996福报系统压一下,下班前把压测报告发我邮箱。”
啥?压测?今天?报告?怎么压?怎么写?
从来没做过啊,心里一万匹草泥马奔跑而过,别说996了,估计明天都下不了班了;
好歹也像功能测试,给个压测需求吧!没法,你遇到了一个不懂性能测试的领导;

一个完整的项目是怎么做性能测试的

1、前期准备

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

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

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

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

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

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

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

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

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

包含具体用到的web服务器、应用服务器、缓存数据库服务器、数据库服务器、文件服务器等;
主流的技术栈:nginx、dubbo、mysql、redis、jvm等等(后续有时间再更新)。

4、制定性能测试方案

项目背景及架构分析;
需要的资源;
技术策略(比如压测、监控、分析工具选择等);
场景设计;
计划什么时候做什么事等等;

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

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

测试数据分为基础环境数据和业务数据;
基础环境数据可以从功能测试的库导过来,改一些配置即可;
业务数据包含:存量数据+容量规划数据,比如一个查询接口,都是并发100用户,对应的表数据量是1万和100万,压测结果是不一样的;
数据量要参考生产环境,如果是新项目,除了空库压,最好也做一下存量数据压。

6、压测脚本开发

主流程稳定后,调试被测接口、开发压测脚本(也可以在功能测试环境进行);
客户端并发工具,推荐用jmeter,主流、开源、轻量、免费、功能强大;

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

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

7、预压测(基准测试)

少量并发(比如1个用户),压测10分钟,
第一:可以看压测环境功能是否通;
第二:估算并发过程中需要多少参数化数据的数据量(具体估算方式后续介绍)。

8、执行压测并监控

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

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

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

经常有测试朋友问我用什么工具监控,我大部分都是用的命令,为了方便,也会写shell脚本来监控;
linux服务器,常用的命令是top、vmstat、free、df、sar、iostat、netstat等,一般是多个命令配合着用;
java应用:jvisualvm、jconsole、jmap、jstat、jstack等,以及自己写的一些shell脚本;
redis、mysql、jvm等等,后续有时间再更新。

9、分析定位

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

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

10、性能优化

开发会结合自己的方案,一起做优化方案评估;如果测试没有优化方案,那就把问题反馈给开发吧,但是也好好学学开发的优化思路,这就是成长的过程。

11、性能回归

优化后,复测。

12、编写性能报告

测试结果是多少?
测试是否通过?
发现了什么性能问题?
原因是什么?
如何优化解决的?
系统性能提升了多少倍?
优化方案务必写详细,以便上线同事知道,把优化同步到其它各个环境。

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

只有拥抱梦想,才能追逐无尽的可能;只有坚持努力,才能创造辉煌的未来;唯有奋斗不息,才能成就人生的壮丽篇章。相信自己,超越极限,你的努力将开启属于你的辉煌之路!

只有坚持不懈的奋斗,才能收获辉煌的成就!无论前路多艰难,不放弃、不言败,相信自己的力量,你一定能够创造出属于自己的辉煌!加油!

不在于拥有多少机会,而在于你愿意为之付出多少努力,唯有持之以恒、坚定信念,才能创造属于自己的辉煌人生。奋斗吧,未来的成功将属于你!

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

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

相关文章

解决问题:解除HUE下载10万行的限制

解决问题:解除HUE下载10万行的限制 这个目录下的 vim /opt/cloudera/parcels/CDH/lib/hue/apps/beeswax/src/beeswax/conf.py可以调整数量 也可以更改为-1(表示不限制)

有测试媛的IT团队,产品质量更高

我们都知道,在绝大部分技术团队中,往往阳盛阴衰。而测试团队,可能情况要好一些,据部分机构调查来看男女比例在3:2左右。 根据过往经验来看,有测试媛的IT团队,往往软件质量能更好的得到保证(强调…

【单片机】MSP430F5529单片机的Flash读写控制,MSP430 flash 读写

文章目录 内存模型程序 内存模型 https://qq742971636.blog.csdn.net/article/details/108892807 单片机的Flash里面的区域不是全都能写的:https://blog.csdn.net/u014470361/article/details/79297601 找一下手册看看MSP430F5529单片机哪些地址区域能写&#xf…

nginx常用命令以及安装

目录 前言: 安装: 常用命令: 前言: Nginx的设计理念是高性能、稳定性、开放性和易用性。它的并发能力优秀,可以处理数万个并发连接,并且占用较少的资源。此外,Nginx支持热部署,即…

如何将企业联系方式API接口应用于你的移动端APP?

在现代商业世界中,企业需要提供一种快速,高效的方式来让用户获取联系方式。因此,企业联系方式API接口应运而生,它是一种提供了企业联系方式的开放接口,在用户调用时,可以实现即时获取企业的联系方式信息。本…

python-计算两个矩阵的相似度。

余弦相似度 在pytorch中,有一个专门的函数用于计算相似度:torch.cosine_similarity() https://pytorch.org/docs/stable/nn.functional.html#cosine-similarity import torch import torch.nn.functional as F input1 torch.randn(100, 128) input2 t…

【2023,学点儿新Java-32】Java基础小练习:根据圆周率与半径求圆的面积 | 温度转换 | 计算矩形面积 | 判断奇偶数 | 年龄分类

前情提要: 【2023,学点儿新Java-31】测试:整型和浮点型变量的使用 | 附:计算机存储单位(转换关系)| 企业真题:为什么0.10.2不等于0.3【2023,学点儿新Java-30】变量的基本使用&#…

回归预测 | MATLAB实现WOA-CNN-BiGRU鲸鱼算法优化卷积双向门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现WOA-CNN-BiGRU鲸鱼算法优化卷积双向门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现WOA-CNN-BiGRU鲸鱼算法优化卷积双向门控循环单元多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 回归预测 | MATLAB实…

安全不“放假”,VR安全教育等你沉浸式体验

暑期开启,孩子们将迎来一段丰富且快乐的时光,暑假虽快乐,但是安全不能“放假”,许多地方开展形式多样的暑假安全宣传活动,想不想沉浸式体验下VR安全教育宣传呢?通过VR演示,身临其境的了解防溺水…

MySQL-概述-数据模型SQL简介

数据库:DataBase(DB),是存储和管理数据的仓库数据库管理系统:DataBase Management System(DBMS),操作和管理数据库的大型软件。SQL:Structured Query Language&#xff0…

「提高你的CSS技能」:15个重要的CSS属性详解

这篇文章介绍了15个重要的CSS属性,旨在提高读者的CSS知识和技能。文章以清晰的方式解释了每个属性的作用和用法,并提供了相应的示例代码。通过这篇文章,读者可以了解到一些有趣且实用的CSS属性。 1:in-range 和:out-of-range 伪类 CSS的:in…

KafKa 3.x(三、Eagle、Kraft、压测调优,源码解析)

6. Kafka-Eagle监控 Kafka-Eagle框架用于监控Kafka集群运行状况。官网https://kafka-eagle.org 6.1 Mysql 前置mysql。 6.2 Kafka环境 关闭集群 kf.sn stop修改vim /bin/kafka-server-start.sh 并同步到其他节点 if [ "x$KAFKA_HEAP_OPTS" "x" ]; t…

vue使用html2canvas实现一键截图并赋值到剪贴板,只截取当前显示器上可视的内容

使用html2canvas 和 clipboard API实现整页截图并填充至剪切板。 访问剪切板的api只支持在https或者本地localhost上使用,如果是http,则无法使用 首先需要从npm安装html2canvas npm install html2canvas然后在代码中导入这个包: import ht…

git安装教程

前言 Git是一个开源的分布式版本控制系统,可以有效、高速地处理从小到大的项目版本管理。下面详细的用图文形式介绍一下git安装过程(记录一下git安装过程供参考) 一、下载git 打开git官网地址:https://git-scm.com/进行下载&am…

适合宝妈和学生党的副业,在家就可以做的兼职,实现高质量躺平

如果工资不够高,那就会让人过得很拮据。因此,很多人都希望可以通过兼职或副业来增加收入。然而,找到可靠的副业却并不容易,还会面临各种困难。 跟大家介绍七种可行的兼职副业,希望能为那些想增加收入的职场人员提供一…

第四章:DeepLabV2——使用深度卷积神经网络、空洞卷积和全连接条件随机场进行语义图像分割

0.摘要 在这项工作中,我们使用深度学习来解决语义图像分割任务,并做出了三个实验证明具有实际价值的主要贡献。 首先,我们强调通过上采样滤波器进行卷积,或者称为“空洞卷积”,在密集预测任务中是一种强大的工具。空洞…

Langchain-ChatGLM配置文件参数测试

1 已知可能影响对话效果的参数(位于configs/model_config.py文件): # 文本分句长度 SENTENCE_SIZE 100# 匹配后单段上下文长度 CHUNK_SIZE 250 # 传入LLM的历史记录长度 LLM_HISTORY_LEN 3 # 知识库检索时返回的匹配内容条数 VECTO…

谈谈你对 binder 的理解?

面试官提了一个问题,我们来看看 😎、😨 和 🤔️ 三位同学的表现如何吧 😎 自认为无所不知,水平已达应用开发天花板,目前月薪 10k 面试官️:谈谈你对 binder 的理解 😎&a…

Unity 限制范围-限制在4分之一圆柱形范围内活动

在我的游戏中,玩家的两只手操控中,不想让他们的手围着自己在一个圆形范围内随便乱跑,左手只想让他在左上角,右手在右上角范围活动。所以我制作这样一个算法来实现。 首先用Dot函数划分出4个区域,然后根据区域计算修正…

C++ | 仿函数与priority_queue

目录 前言 一、初始仿函数 1、仿函数是什么 2、仿函数的使用 二、优先级队列 1、 优先级队列的基本概念 2、堆的储存结构与结点之前关系 3、堆的使用 4、堆的模拟实现 前言 本文主要介绍优先级队列与仿函数,优先级队列实际上是我们在数据结构中学的堆&…