8年资深测试总结,性能测试基础知识(大全)你的进阶之路...

news2024/11/24 16:49:04

目录:导读

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


前言

性能测试,大家经常聊的是高并发、高可用、性能优化、全链路压测等Topic,听起来都挺高大上,但这些概念追本溯源,还是要落到性能测试基础的东西上。

知识体系(基础指标)

简单来说,性能测试实际上主要关注如下三点:

速度:TPS、RT ;
容量:吞吐量、PV、Hit;
资源:CPU、Memory、DiskIO、Network、文件句柄数;

性能分层
性能测试领域,要在评估调研阶段就考虑性能分层的影响。在性能分析和优化阶段,也要考虑不同层级对整体性能的影响。

将它们分为如下六层:
网络层:主要指带宽、网段、防火墙等设施,当然,CND之类的资源,也可以划分在这一领域;
网关层:网关是请求入口和业务接入层,一般登录验签调用、加解密鉴权、限流等操作,都是在网关进行;
应用层:无论是前端的渲染展示还是后端的逻辑处理,都可以理解为应用层;
中间件:中间件包含缓存、MQ、JOB、DTS/DRC/DAL、配置中心等一系列组件;
存储层:一般指数据存储和文件存储层级,典型的组件有MySQL、HDFS;
物理层: 无论是云服务还是自建机房,物理硬件层面都可以归纳到这一层;

需求调研
项目背景:版本迭代&独立项目&新建服务&系统重构&性能优化;

测试目的
超卖&高并发&扩容性&配置验证&资源耗用;

系统架构
技术架构:服务间的依赖关系,包含缓存,MQ等信息;
网络拓扑:请求-域名-SLB/HA/Nginx-web-app-DB以及外部依赖;

场景模型
业务场景:业务场景的多样性和特殊性以及对脚本开发联调&数据预埋的影响;
业务模型:只读、读写、批处理、定时Job;
业务配比:被测场景占总体场景的业务量占比(公式:被测场景/总业务量*100%)
选取业务峰值的数据,单独统计;如果各业务占比类似,则按照比例转化;如果比例差距大,则按照区间单独统计分析;

环境配置
PRE&PERF、app&Redis&MQ&DB&网络&网段&&带宽&防火墙,是否独享资源隔离等;

性能指标
业务指标:DAU、GMV、注册用户数、在线用户数、活跃用户数、增长趋势等;
系统指标:协议类型、长短链接、同步策略、加解密、JVM内存分配、容器线程数&连接数&Timeout、MQ-Cousumer数量;
压测指标:QPS、TPS、ART、99%RT、Success%;

数据类型
数据铺底量;
是否有敏感数据需脱敏;
限制条件(时间&次数&权限);
自增、唯一、UUID、加解密、幂等;

关键时间
提测时间、验收时间、上线时间;

模型场景
业务模型:业务场景、流量转化漏斗;
测试模型:关注核心场景,过滤无关及非核心业务;
场景模型:从系统架构设计层面出发,关注不同层面,提升性能!
基准:单机单服务单接口;
并发:设定阈值,观察水位;
容量:阶梯式加压、性能拐点、资源瓶颈;
异常:容错处理、监控告警、容灾恢复演练;
稳定性:长期稳定正确提供服务的能力,可用性SLA;

测试方案
项目背景:说明项目开展的背景及目的;
测试方案:针对项目涉及的场景,测试实施的大体方案;
实施准则:任何项目,都要有准入准出和暂停中止准则;
性能模型:针对具体的场景,设计的性能模型最好经过评估验证;
测试策略:针对测试模型所采用的不同的测试策略,同步的测试策略要达成什么样的目的;
性能指标:业务指标是多少?转化的技术指标是多少?冗余范围有多大?
准备工作:其中包含环境、数据、脚本、监控等准备事项;
组织结构:整个项目中涉及哪些事项?不同事项的负责人是谁?交付时间是什么时候?

结果评估
在性能测试实施过程中,准确定义和描述性能测试结果,及针对不同结果进行模型分析,是很重要的一项能力。

性能实施方法论
基于指标构建;
建模是分析的过程和结果;
基于真实环境的系统模拟;
压测实施过程是整体的核心;
需要设定统一的目标、流程、分析方法、组织结构;

正确描述性能结果和过程的术语
瓶颈描述:什么场景执行了什么策略/操作,因为什么原因导致了什么结果;
解决方案:优化了哪里?验证的方式及结果?是否满足预期&是否解决了发现的问题?

性能分析层级
业务分级:业务-场景-数据-架构-参数;
技术分级:引擎-网络-应用-中间件-数据库;
工具:关注指标,从结果反推过程;
配置:线程、连接数、Timeout、长短链接、同步异步、路由转发;
应用:日志、硬件配置、资源使用率;
中间件:Job、缓存命中、消息堆积、Consumer配置;
数据库:资源耗用、库表结构、表锁行锁、活跃连接数、最大连接数;

性能拐点
TPS增长放缓,RT快速上升;

性能交叉点
模型上的TPS和RT交叉节点;

性能平衡点
重点关注业务可接受的最大RT;

性能衰减点
timeout参数&TPS急剧恶化抖降&RT快速飙升;

脚本设计
1、什么时候需要做脚本关联?
服务端结果动态返回,非幂等;
response body的参数需要向下透传;
2、如何理解并发和事务的区别?
并发指的是同一时刻服务端接收到的请求数,而非压测引擎的并发线程/RPS;
3、thinktime怎么用?
它有什么效果?
是否存在真实的业务场景?
是否影响整体的压测场景和服务资源?
4、主要关注哪些指标?
并发数、TPS、ART、99%RT、CPU%、Memory%、systemLoad%;

典型特例
文件存储优化
原理:文件/图片存储在源节点,利用CDN缓存各种变更和路径。CDN未命中,回源节点处理并返回,同时同步最新的变更和路径到CDN。
优点:节省存储成本,提高查询展示渲染性能,灵活满足业务。
注意事项:大文件分块存储,避免局部过热导致单机磁盘IO过载,分块有助于整体系统资源调度。

秒杀超卖场景
适用场景:秒杀、限时抢购、限量抢购等。
单用户单端多次抢购;
单用户单端限量抢购;
单用户多端抢购→低并发;
单用户多端抢购→高并发;

当我们开始做性能测试的时候,一定要得出结论,并且能给出优化方案和具体实施才可以,否则都是空谈。

如何判断已经达到系统瓶颈?

做性能压测的时候,把并发线程数按照阶梯式不断累加上去,观察cpu是否有达到80%以上。

如果有,即已经达到系统瓶颈,此时也不用再压下去,压下去只会把系统打爆掉,应该去查看此时的TPS是否满足预期,如果满足预期设定的值,则可以不用考虑隐患(前提是预期值要设置的合理),如果不满足预期的TPS,就需要根据具体性能瓶颈,提出优化改进建议。

而优化改进建议就通过观察是哪个地方的瓶颈最明显,最值得修改,就对该地方作出优化,比如RDS、连接池、Redis、代码逻辑、系统配置、JVM服务等等。

粗略几个影响点:
系统内存容量太小–影响系统性能;
算法过于繁琐–影响系统性能;
慢sql–影响RDS性能;
数据库连接过多,超出容量–影响系统的连接池性能;
redis请求过多–影响Redis性能;

如何分析瓶颈所在?

首先遇到TPS低于20,RT大于2000ms的压测结果,那么肯定不是一个正常的结果,此时要观察各个服务的指标情况。

根据时间区间,在pinpoint上面看接口请求分布,拉到具体的接口分布列表,查看当前测试接口的详情,查看调用链路是有哪些。

根据调用链路,可以看到有做了数据库的连接(涉及到连接池),有查询redis,或者还有系统算法的内容。

根据每个环节的耗时,有没有耗时特别长的,比如大于100ms的那种,比如连接数据库时间特别长,那么就可能是在连接池连接的时候较慢,原因是并发数太多,容量不够,排队等待的时间太久了。

给出建议:需要增加连接池的容量。

也可以查看系统cpu的情况,根据cpu占比中的系统或者JVM的占比是否异常高,如果是系统的占比异常高,则可能是代码中算法复杂,比如if循环较多。除了cpu,还有可能是其他指数会有异常飙高。

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

每个人都有属于自己的舞台,只要肯努力拼搏,就一定会赢得成功。面对生活中的挑战和困难,我们不能畏惧,更不能放弃。要坚定信念,迎难而上,不断挑战自我!

每个人都有自己的梦想,只不过追逐的道路不同而已。奋斗的意义在于,让我们的生命更加精彩,让我们的未来更加光明。所以,不论遇到什么困难和挫折,我们都必须坚定地走下去!

生命里总有一些事情需要我们去拼搏奋斗,让自己变得更加强大。无论你现在身处何方,无论你遇到多少挫折和困难,永远不要放弃追求自己的目标。坚定地走下去,成功就在不远处!

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

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

相关文章

力扣sql中等篇练习(十七)

力扣sql中等篇练习(十七) 1 计算布尔表达式的值 1.1 题目内容 1.1.1 基本题目信息1 1.1.2 基本题目信息2 1.1.3 示例输入输出 a 示例输入 b 示例输出 1.2 示例sql语句 # 使用SELECT子句中的子查询查询到对应的值 SELECT t1.left_operand,t1.operator,t1.right_operand,cas…

Obsidian templater日记模板添加一个随机问题

Obsidian templater日记模板添加一个随机问题 简介 每天日记里写同样的东西,感觉有点无聊,想问自己一些问题,每天不同。 查到有插件random structural diary,我想要的功能就是这样,但是没懂这个插件怎么放进templat…

【Android入门到项目实战-- 9.3】—— 加速度传感器的详细使用教程

基础知识 加速度传感器可以返回x、y、z三轴的加速度数值,该数值受地心引力的影响。 将手机平放桌面上,x、y、z轴默认为9.81;手机向下z轴为-9.81。 将手机向左倾斜,x轴为正,向右倾斜,x为负; 将手…

Windows11安装hadoop-3.3.0

一、安装Java 1. 下载Java 进入下载页面Java Archive Downloads - Java SE 8 Java SE Development Kit 8u191中 选择适合操作系统的下载文件 在安装好的路径下,将Java目录复制到C:\根目录下,形成C:\Java\jdk1.8.0_191目录结构 2. 设置环境变量 二、…

Docker虚拟化概念

Docker虚拟化概念 1、虚拟化技术的概念 虚拟化技术主要是将物理资源转变为逻辑上可以管理的资源;用以打破物理资源结构之间的壁垒;让计算的原件运行在虚拟的基础之上;而不是直接运行在硬件设备资源上; 说白了就是硬件资源转变成…

大数据开会记录【NiFi数据集成、AllData数据中台管理系统、RuoYi】

今天上午和下午开了个小会,上午说了一下Nifi,下午具体说了一下nifi和ruoyi。 目录 上午 下午 上午 三个人开会。 上次说的挖掘平台,您这边是否有技术人员对nifi比较熟悉,并且能够将相关功能集成到数据中台系统中。 现在结构化的…

不收费的电脑数据恢复软件EasyRecovery16

EasyRecovery是一款操作安全、恢复性比较高的数据恢复工具,小伙伴们可以使用EasyRecovery恢复各种各样被删除的文件、视频、图片等。EasyRecovery还可以支持恢复被格式化的媒体文件,只是使用EasyRecovery恢复时时间较久。如果小伙伴们有误删除的文件需要…

【Qt 从入门到入土】上篇

【Qt 从入门到入土】下篇 一个非常好的学习 Qt 的视频 本文目录 1. Qt 概述1.1 什么是 Qt1.2 Qt 的发展史1.3 支持的平台1.4 Qt 的版本1.5 Qt 的优点1.6 成功案例 2. 创建 Qt 项目2.1 使用向导创建2.2 手动创建2.3 .pro文件2.4 一个最简单的 Qt 应用程序2.5 Qt 命名规范和常用…

【Java入门合集】第三章面向对象编程(下)

【Java入门合集】第三章面向对象编程(下) 博主:命运之光 专栏:JAVA入门 学习目标 理解面向对象三大主要特征; 掌握类与对象的区别与使用; 掌握类中构造方法以及构造方法重载的概念及使用; 掌握包…

已做过算法题总结

217、存在重复元素(easy) 输入:nums [1,2,3,1] 输出:true 输入:nums [1,2,3,4] 输出:false 输入:nums [1,1,1,3,3,4,3,2,4,2] 输出:true 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 &…

【2106. 摘水果】

来源:力扣(LeetCode) 描述: 在一个无限的 x 坐标轴上,有许多水果分布在其中某些位置。给你一个二维整数数组 fruits ,其中 fruits[i] [positioni, amounti] 表示共有 amounti 个水果放置在 positioni 上…

Android平台播放透明视频

Android平台播放透明视频 思路 设计一种特殊的视频,它的一半内容存储alpha信息,另一半内容存储rgb信息,接着通过OpenGL获取每个像素点的alpha值和rgb值进行混合,最后出来的画面就是带有透明效果的视频了。 可以上下的分&#xf…

【疯狂造轮子-iOS】JSON转Model系列之二

1. 前言 上一篇《【疯狂造轮子-iOS】JSON转Model系列之一》实现了一个简陋的JSON转Model的库,不过还存在很多问题。下面我会尝试一个个去解决。 2. 存在问题及解决思路 2.1 没有考虑JSON数据并不一定是NSDictionary类型 有时候JSON并不一定是NSDictionary类型&…

【医学影像数据处理】2D/3D patch的crop和merge操作汇总

在做3D分割任务中,多数的方法多采用整体缩放,或裁剪成一个个小的patch操作,这样做的一个主要原因是内存问题。 相较于整体缩放,采用裁剪成patch的方法,对于小目标会更加的鲁棒,这也是大多数3D分割任务中常…

Leetcode448. 找到所有数组中消失的数字

Every day a leetcode 题目来源:448. 找到所有数组中消失的数字 解法1:STL set set 是一个集合类型的容器,里面的元素具有唯一性,并且所有元素都会根据元素的键值自动被排序,以红黑树为底层数据结构。 我们使用集合…

git上传大大大文件项目好折磨人

本来想把unity项目的源码上传上gitee啊,但是那个项目有1个多G,还是个半成品,要是写完,都不知道行不行 正常的上传 所用到的命令: 1、 git init 初始化,创建本地仓库 2、 git add . 添加到本地仓库 3、 git…

【C++】打开C++大门,踏入C++世界

文章目录 ☑️前言一. 浅看【C】关键字二. 命名空间1. 命名空间的定义👌2. 命名空间的使用👌 三. 【C】输入输出(IO)四. 缺省参数1. 缺省参数的概念🏆2. 缺省参数的分类🏆 五. 函数重载1. 函数重载的概念✌️2. 【C】支持函数重载…

【计算机专业漫谈】【计算机系统基础学习笔记】W2-2-2 模运算系统和补码表示

利用空档期时间学习一下计算机系统基础,以前对这些知识只停留在应试层面,今天终于能详细理解一下了。参考课程为南京大学袁春风老师的计算机系统基础MOOC,参考书籍也是袁老师的教材,这是我的听课自查资料整理后的笔记 补码表示法…

实验9 分类问题

1. 实验目的 ①掌握逻辑回归的基本原理,实现分类器,完成多分类任务; ②掌握逻辑回归中的平方损失函数、交叉熵损失函数以及平均交叉熵损失函数。 2. 实验内容 ①能够使用TensorFlow计算Sigmoid函数、准确率、交叉熵损失函数等,…

GEE:基于变异系数法的遥感环境风险评估指数(RSEI)计算

作者:CSDN @ _养乐多_ 本文记录了基于变异系数法计算 Risk-Screening Environmental Indicators (RSEI) 的方法和代码。使用 变异系数法计算权重来代替PCA方法计算权重,根据权重计算综合指标。本文也记录了使用landsat-8数据计算LST、NDVI、NDBSI、WET四个指标的代码。 结果…