最详细,从0-1性能测试步骤详细,测试老鸟经验总结...

news2025/9/18 14:15:59

目录:导读

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


前言

性能测试流程

性能测试的步骤大概分四个阶段:
1、需求分析阶段
2、准备阶段
3、执行阶段
4、报告整理和总结阶段

性能需求分析阶段

1、熟悉项目相关的资源,如:架构设计,软硬件环境配置,线上业务运营数据(交易量,用户活跃度,请求分布等)

2、根据运营数据或者指标,确定性能测试要达到的目标,如:支持xx并发,tps要达到多少,响应时间要达到多少,CPU,网络,IO的负载情况等等

3、设计性能测试计划:与功能测试差不多
–项目背景;
–项目结构;
–测试功能;
–软硬件资源准备;
–时间/人力安排;
–测试工具和监控工具;
–风险评测;

设计性能测试场景

主要有以下场景:
基准测试:了解系统在静置时的资源消耗,如cpu,io,网络带宽,网络连接的情况。如果有干扰,务必排除。

单次连续请求测试:1次连续请求情况下的tps,响应时间,服务器资源消耗情况,主要用于参考。

负载测试:逐渐增加并发请求数,查看tps,响应时间,错误率,服务器资源消耗情况,主要用于分析最大性能。

压力测试:在最大性能的临界点上保持压力进行测试,查看服务器在高压力情况的处理情况。

稳定性测试:连续xx天内,在一定的并发下进行测试,查看服务器运行情况是否能达到需求设计

准备阶段

搭建测试环境
设计测试用例
准备测试数据
编写测试脚本

执行阶段

运行性能监控工具
按照测试场景,执行测试用例。
分析:分析性能瓶颈,针对不同的业务场景,分析的侧重点也不一样,比如计算密集型,IO密集型的业务,还有线程锁,垃圾回收机制等等。
调优

结果阶段
总结测试结果,输出性能测试报告

性能测试需要用到的技术

性能测试原理介绍:
性能测试,本质就是模拟客户端请求,对服务器进行高并发,高流量的压力测试,从而验证服务器提供服务的能力,并找出瓶颈点,提出或者进行优化。

问题:
怎么模拟高并发,高流量?
怎么进行性能优化?

怎么模拟高并发?
使用多线程技术,模拟高并发。
如果并发太高,如10w并发以上,则需要使用负载均衡和分布式处理技术,jmeter工具支持多台机器作为负载机。

怎么模拟高流量?
在每个请求中塞入大量数据即可

怎么进行性能优化?
那么怎么提升性能呢?
我们首先介绍一个衡量性能标准的一个参数:TPS(Transaction Per Second 每秒事务请求数)。

我们再看一下TPS计算公式:
TPS = 总请求数/ 平均响应时间
总请求数:在一段时间内发送的所有请求数量
平均响应时间:所有请求的平均响应时间

通过这个公式,我们可以知道,当分母越小时,TPS越大。所以要提升性能,我们只需要提高平均响应时间就可以了。那么怎么减少平均响应时间呢?

下面我们先看一个请求从客户端到服务端的流程

111

图中,客户端发送请求经过了互联网到服务器,服务器经过内部处理,从数据库中读取了数据,然后把数据返回给客户端。这过程中,经历的时间大致可以分为:C1+T1+T2+T3+N2+T4+T5。

所以,要把平均响应时间缩小,我们只需要缩小这8个时间就够了,其中主要包括:
网络时间(T1+T2+T3+T4+T5);
服务器内部处理时间(N1);
数据库处理时间(N2);
客户端处理时间(C1);

所以我们可以就可以从这三个方向去优化:提高网络传输速率,服务器内部处理速率,数据库处理速率,客户端处理速率,其中客户端处理速度也和服务端优化策略基本相同。

性能优化

网络传输速率的提高:
1、采用光纤,配置路由表,缩短网络传输距离与路由器跃点数量。
2、如果是实时服务,那么需要配置缓存服务器,尽量避免缓存穿透

服务器内部处理速率的提高:
计算密集型:优化思路是提高CPU利用率,采用多线程的思路进行。但是线程数量不能超过cpu核心数。因为线程数量超过cpu核心数后,cpu会分片执行超过部分的线程,会增加cpu读取线程缓存的压力,使计算能力下降

IO密集型:
优化思路是提高存储的效率,如使用固态硬盘,阵列,分布式等技术。
由于IO密集型中,CPU可能会等待IO操作完成。所以我们可以使用超过CPU核心数的线程来访问IO,从而提高性能(但如果磁盘繁忙,线程数再多也只是在磁盘队列中排队,增加CPU线程数来访问IO的方法,适用于IO读/写操作并不繁忙,但是需要长时间寻址的场景)

注意:因为磁盘内部只有1个线程处理IO操作,所以要真正实现磁盘的并发,需要使用多个磁盘,也就是磁盘阵列

数据库处理速率:
数据库直接和IO进行交互,所以提高IO性能,能提高数据库性能。
数据库有自己的数据结构,所以优化数据存储和查询的相关算法,也能提高数据库性能

索引优化;
缓存优化;
数据库连接优化;
数据库查询语句优化;
分表分库;
分布式处理;

硬件优化:加cpu升级,cpu阵列;使用ssd固态硬盘;主板用最先进的,内存用最高的,网络用专线等等。

操作系统优化

windows操作系统:去掉不需要的服务,根据实际业务场景调整线程,虚拟内存,缓存的大小等相关配置项,需要专业人士操作;
Linux操作系统:与windows基本相同;
中间件优化:根据不同的业务场景,选择不同的中间件,调整配置等等,如nginx中启用的cpu核心数量等等;
架构优化:采用分布式存储架构,分布式服务器架构,负载均衡等;
代码优化:许多问题都是代码的问题,如果代码问题能准确定位,可以考虑优化代码;
数据库优化:优化索引,配置,数据库连接,算法等等;

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

每个人都有自己的梦想和追求,但只有不断努力拼搏,才能变成更好的自己。无论遇到什么挫折和困难,都要坚定信念、勇往直前,相信自己一定能够达成心中所愿!

只有不断地挑战自己,才能让自己变得更加强大。无论遇到多少困难和挫折,都要勇敢面对,不放弃,坚持下去,因为成功就在你坚持的那一刻。

只有在不断努力奋斗的过程中,才能发现自己想要的是什么。不要被困难吓倒,相信自己能够克服一切困难,迎接成功的到来。珍惜时间,坚持不懈,我们一定会取得胜利!

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

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

相关文章

sandfly-entropyscan:一款功能强大的恶意程序熵扫描工具

关于sandfly-entropyscan sandfly-entropyscan是一款功能强大的熵扫描工具,该工具可以用于检测与恶意软件相关的打包文件或加密二进制文件。除此之外,该工具还支持查找恶意文件和Linux进程相关的安全信息,并提供带有加密哈希的输出结果。 s…

cesium学习(下载,官方案例)

下载cesium源码 可以从官网直接下载,官网下载的是编译好的。链接: https://www.cesium.com/downloads/从github下载源码,方便我们本地调试学习(本文采用这种方式)。链接: https://github.com/CesiumGS/cesium 运行项目 安装依赖 npm i运行 npm run …

八股|ThreadLocal的内存泄露

ThreadLocal是个好用的工具类,但是使用不好是会导致内存泄露的。 内存泄露:之前开辟使用的内存空间,在使用完毕后未释放,结果导致一直占据该内存单元,无法被gc回收,导致该内存单元后续无法被使用&#xff0…

优思学院|质量管理六大思维陷阱【四】:抽样检查是最经济又能保证质量的方法吗?

在质量控制的过程中,一个常见的误解是认为抽样检查是最经济又能保证质量的方法。许多人认为进行百分之百的全数检查既浪费人力又时间不够。因此,他们倾向于采用抽样检查的方法,认为这样既符合经济成本,又能确保产品质量的水准。 …

Java中的死锁和Lock锁

6.死锁 1.死锁的理解: 不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成了线程的死锁 2.说明: 1出现死锁后,不会出现异常,不会出现提示,只是锁的线程…

【小白入门】Verilog实现异步FIFO

之前也在CSDN上面写过两个FIFO相关的文章,不过代码看起来比较复杂,且注释也比较少,不利于新手入门。很多时候都没有耐心继续看下去。 http://t.csdn.cn/0dPX6 http://t.csdn.cn/lYvoY 因为自己本身是一个初学者,就从初学者的视…

交换排序——冒泡排序和快速排序

一、交换排序的基本思想 1、两两比较&#xff0c;如果发生逆序则交换&#xff0c;直到所有记录都排好序为止。 2、常见的交换排序方法&#xff1a;冒泡排序和快速排序 3、最简单的交换排序——简单选择排序算法描述 void SelectSort(SqList &K) {for (i1; i<L.lengt…

浅谈C++和Java中对象的等号赋值

随着对C学习的深入&#xff0c;发现了一些和Java在设计思想上有所不同的地方。其一就是对象的拷贝赋值。 在Java中&#xff0c;如果定义了两个对象s1和s2&#xff0c;在堆内存中将会创建两个对象实体。那么s1 s2;表示s1指向的对象发生改变&#xff0c;即指向了s2所指向的对象…

8分钟让你完全掌握代理IP基础知识和实际应用

概念 代理IP可以理解为一个中转服务器&#xff0c;将用户和目标服务器之间的请求和响应进行转发和代理。使用代理IP的主要目的是隐藏用户的真实IP地址、访问被限制的内容、提高网络连接速度和保护用户隐私。 目录 概念 一、代理IP的工作原理 二、代理IP的类型 三、为什么…

总结的太到位:python 多线程系列详解

前言&#xff1a; 上vip课的时候每次讲到框架的执行&#xff0c;就会有好学的同学问用多线程怎么执行&#xff0c;然后我每次都会说在测开课程会详细讲解&#xff0c;这并不是套路&#xff0c;因为如果你不理解多线程&#xff0c;不清楚什么时候该用什么时候不该用&#xff0c;…

Clean架构与MVVM:助你打造优质Android应用

Android应用程序开发可能具有挑战性&#xff0c;特别是在创建可扩展和可维护的代码以适应不断变化的需求和用户需求方面。为了解决这个挑战&#xff0c;开发者通常依赖于软件架构模式&#xff0c;为代码组织和关注点分离提供了坚实的基础。在Android开发中&#xff0c;两种流行…

7-基于51单片机的金属探测器检测金属报警器设计(源程序+原理图+PCB+论文)全套资料

编号: 0007 本系统采用单片机1602液晶按键比较器蜂鸣器发光二极管组合而成。 按键说明: 加键、减键。单独一个按键为复位按键 1.单片机型号: STC89C52/51、AT89C52/51、AT89S52/51 可任选&#xff0c;程序通用2.产品自带单片机上电复位电路、手动复位电路(复位按键)、晶振电路(…

Unity入门8——音效系统

一、音频文件参数面板 Force To Mono&#xff1a;多声道转单声道 Normalize&#xff1a;强制为单声道时&#xff0c;混合过程中被标准化 Load In Background&#xff1a;后台加载&#xff0c;不阻塞主线程&#xff0c;适合大音效 Ambisonic&#xff1a;立体混响声 非常适合 36…

Java数据结构之第十六章、并查集

一、并查集原理 在一些应用问题中&#xff0c;需要将n个不同的元素划分成一些不相交的集合。开始时&#xff0c;每个元素自成一个单元素集合&#xff0c;然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。适合于描述这类…

【CSDN铁粉】(获取铁粉的终极秘诀)

目录 铁粉和普通粉丝有什么区别什么是CSDN中的铁粉CSDN铁粉的用处如何获得更多的铁粉如何吸引更多的铁粉总结 目录) 铁粉和普通粉丝有什么区别 在CSDN社区中&#xff0c;铁粉和普通粉丝是两个不同的等级。铁粉是指对某个特定领域或某个专业人士非常崇拜和追随的用户&#xff0…

leetcode:1822. 数组元素积的符号(python3解法)

难度&#xff1a;简单 已知函数 signFunc(x) 将会根据 x 的正负返回特定值&#xff1a; 如果 x 是正数&#xff0c;返回 1 。如果 x 是负数&#xff0c;返回 -1 。如果 x 是等于 0 &#xff0c;返回 0 。 给你一个整数数组 nums 。令 product 为数组 nums 中所有元素值的乘积。…

Compose Desktop 实战 宝可梦图鉴

Compose Desktop 实战 宝可梦图鉴 前言 阅读本文需要一定compose基础&#xff0c;如果没有请移步Jetpack Compose入门详解&#xff08;实时更新&#xff09; 接口数据来源于pokeapi 项目源代码 如果你觉得不错&#xff0c;请给我一个star&#xff0c;THKS 实现效果 闲话不…

unity制作捕鱼达人

文章目录 介绍制作水波特效制作多种ui制作不同种类鱼的动画鱼的多种移动效果制作鱼的生成点多种炮台多种子弹多种网游戏控制器声音控制器游戏存档游戏开始 介绍 水波荡漾的特效 鱼有多种运动轨迹 每隔一段时间自动收集金币 可以切换不同的炮台 升级后有不同的特效 捕捉到普通鱼…

Salesforce开发人员如何利用生成式AI?

AI浪潮来袭&#xff0c;技术和产品的新消息奔涌而来&#xff0c;开发者们的工作模式正在经历巨变。ChatGPT的出现&#xff0c;让问题的解法更有想象力&#xff0c;也让敲下一行代码、发布一款产品变得更容易。 AI可以帮助指导开发过程中的错误&#xff0c;并改进解决方案&…

ChatGPT/InstructGPT详解

前言 GPT系列是OpenAI的一系列预训练文章&#xff0c;GPT的全称是Generative Pre-Trained Transformer&#xff0c;顾名思义&#xff0c;GPT的目的就是通过Transformer为基础模型&#xff0c;使用预训练技术得到通用的文本模型。目前已经公布论文的有文本预训练GPT-1&#xff…