把握性能测试重点,5步解决问题!

news2025/7/13 9:03:56

一、引言

很多做性能测试的同学都问过我这样一个问题:鱼哥(Carl_奕然),你说性能测试的重点是什么?

我的回答很简单:瓶颈分析与问题定位。

在性能项目的整个周期,不管是脚本设计,脚本编写还是脚本执行,都还算简单。

难点在于如何定位瓶颈,分析瓶颈,解决瓶颈。

如果你不会性能分析,脚本设计的再好,脚本编写的再完美,分析不出问题所在,那都是白白浪费时间。

所以,这一讲,我们来学习:如何进行性能分析,学会了性能分析的思路,才能定位问题,分析问题,从而解决问题。

在性能项目中,我总结的性能分析思路,分5个模块,即性能分析5部曲,如下:

1、判断性能瓶颈;

2、线程递增策略;

3、性能衰减过程;

4、拆分响应时间;

5、构建分析决策tree;

接下来,我就对这5部曲进行一一解释。

二、判断性能瓶颈

在整个性能测试阶段,让性能测试工程师最艰难的,就是如何定位性能瓶颈。

如果无法定位到性能瓶颈,那么对开发同学的支持也就有了限制,这无疑即增加了解决问题的时间,又增加了开发工程师的工作量。

这时候,你会说,开发工程师的职责不就是解决性能瓶颈吗,

那要是这样说, 测试工程师的职责,可不仅仅是发现性能瓶颈,还需要定位性能瓶颈,换句话说,也就是协助开发工程师快速定位并解决性能问题。

为什么说在整个性能项目中,最难得就是分析性能瓶颈。

这里,我先上一张图,为了更形象的表现接下来要描述的内容,我把图片做了一点处理:

通过这张图,我们很直观的知道:这是一个阶梯式增加的压测场景。

但是,根据这个图,你能判断出拐点在哪里吗?

如果无法判断哪里是拐点,那我再上一张ResponseTime(后面简称为RT)图:

同样,为了让你更直观的查看RT图,, 我同样也对RT图做了优化处理。

结合RT图与TSP图,我们能不能判断拐点在哪里呢?

如果你觉得在3.3s的位置是拐点。我不能否认你说的完全错误,但是,我也不会认同你的观点, 为什么呢?

因为,根据多年的经验,判断的标准是:随着TPS的不断增加,找到那个清晰可见的弧度。

这一点很重要,需要你记住。

我举个例子:如果按照你刚刚的说法,只根据一个拐点来进行判断,想象一下,

假如网络出现突然的抖动,按照你刚刚的判断依据(只根据一个拐点),是不是就不准确了。。

所以,一定是找到那个 清晰可见的 弧度。

我们在回来说上面的TPS图与RT图,根据这两个图,你能得出哪些结论呢?

是不是可以得出这个系统有瓶颈,系统的瓶颈与压力有关系,并且随着压力的增加,涨幅在逐渐减少。

到这里, 需要请你在思考一个问题:瓶颈点是否跟压力的大小有关?

答案:肯定不是跟压力大小有关。

既然不是跟压力大小有关,那么,根据什么有关呢?

其实结合上面的图, 我们可以知道:

①引起系统瓶颈的问题是有规律的;

②TPS是周期性的降低,并且最大的TPS也都差不多是一致的;

所以,即使压力降低,最多只是降低最大的TPS水位,这种情况只是让问题出现的更晚一点,但不会不出现的。

……

由于作者版权要求,仅展示文章的一部分,如需阅读完整版文章,可以找小编。

最后:

可以到我的个人号:atstudy-js,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!其中包括了有基础知识、Linux必备、Mysql数据库、抓包工具、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试等。

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

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

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

相关文章

什么时候可以用到强化学习?强化学习怎么用?

我相信很多像我一样的初学者在学习强化学习的的过程会有一种困惑:强化学习内容搞懂了,算法流程也明白了,但是怎么用在自己的研究领域或者应用上呢?换句话说,什么样的情况可以用强化学习解决呢? 什么是强化…

基于MxNet实现目标检测-CenterNet【附部分源码及模型】

文章目录前言目标检测发展史及意义一、数据集的准备1.标注工具的安装2.数据集的准备3.标注数据4.解释xml文件的内容二、网络结构的介绍三、代码实现0.工程目录结构如下1.导入库2.配置GPU/CPU环境3.数据加载器4.模型构建5.模型训练1.学习率设置2.优化器设置3.损失设置4.循环训练…

24.java- File类的常用方法:遍历目录里的文件

遍历目录 通过遍历目录可以在指定的目录中查找文件,或者显示所有的文件列表。 1.File 类的 list() File 类的 list() 方法提供了遍历目录功能,该方法有如下两种重载形式。 String[] list() 该方法表示返回由 File 对象表示目录中所有文件和子目录名称…

Hive之内部表外部表和分区表分桶表

Hive系列 第七章 内部表外部表和分区表分桶表 7.1 内部表和外部表 7.1.1 内部表和外部表的区别 1、创建的时候外部表加上external 2、删除表的时候,内部表会删除元数据信息和真实数据信息,外部表只会删除描述信息7.1.2 内部表和外部表的应用场景 1、…

【JAVA高级】——Druid连接池和Apache的DBUtils使用

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:JAVA开发者…

HBase查询一张表的数据条数的方法

HBase查询一张表的数据条数的方法 文章目录HBase查询一张表的数据条数的方法0、写在前面1、HBase-Shell的count命令2、Scan操作获取数据条数3、执行Mapreduce任务4、Hive与HBase整合5、协处理器Coprocessor实现6、参考资料0、写在前面 Linux版本:Ubuntu Kylin 16.0…

国网云(华为组件)使用

一、国网云(华为组件)介绍 一、项目各项环境 各项环境的介绍 MRS-Hive:MRS支持在大数据存储量大,计算资源需要弹性扩展的场景下,用户将数据存储在OBS服务中。使用MRS集群仅做数据计算处理的存算分离模式。DWS(高斯200):云原生数据库Gauss DB(DWS)1:融合分析能力是云原…

分布式计算模型Mapreduce实践与原理剖析(二)

第二章 MapReduce核心组件实战 2.1 MapReduce中分区组件 需求:根据单词的长度给单词出现的次数的结果存储到不同文件中,以便于在快速查询 思路: 1、定义Mapper逻辑 2、定义Reducer逻辑 3、自定义分区Partitioner这个案例主要的逻辑在这个…

【kafka】一、kafka介绍

kafka概述 定义 kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。 消息队列 1)解耦 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。 2)可恢复性 系统的一部分组件…

java EE初阶 —进程与线程的区别

文章目录1.为什么会引入进程和线程的概念2.进程和线程的关系2.1 坤坤吃鸡演示进程和线程区别2.1.1 线程的安全问题2.1.2 线程的异常问题1.为什么会引入进程和线程的概念 引入进程这个概念,最主要的目的是为了解决并发编程这样的问题。 CPU 已经进入了多核心的时代&…

【Keil】编译选项设置 Warning 为 error

死亡是一座永恒的灯塔,不管你驶向何方,最终都会朝它转。一切都将逝去,只有死神永生。 – 刘慈欣-《三体》 前言 众所周知,一般而言,编译程序过程中的 warning 警告并不会影响可执行文件的生成,只有 error …

JVM 垃圾回收器分类

目录 Serial收集器 Parnew收集器 Parallel Scavenge CMS收集器 G1收集器 Serial收集器 基本概念:Serial收集器是最基本、发展历史最久的收集器,这个收集器是采用复制算法的单线程的收集器。 重点:其采用复制算法和单线程。 单线程的收集…

01_SpringBoot简介及项目搭建

文章目录SpringBoot简介及项目搭建0x01_SpringBoot简介Spring优缺点springboot启动器0x02_Spring boot项目搭建方式1启动类和启动器的区别0x03_Spring boot项目搭建方式20x04_Spring boot项目搭建方式3(最推荐)SpringBoot简介及项目搭建 欢迎关注公众号…

MYSQL 数据库企业级架构演变史

从初级架构到中级架构原来有这么多次的升级,并且每一次的进阶都有其优缺点,文末还有对高级结构的理解,欢迎大家在评论区各抒己见~ MySQL简介 MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB公 司开发,…

【强化学习论文合集】AAAI-2021 强化学习论文

强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现…

九、【React基础】组件的生命周期

文章目录1、旧生命周期1.1、单组件生命周期1.1.1、生命周期1.1.1.1、初始化阶段:由 ReactDOM.render() 触发---初次渲染1.1.1.2、更新阶段:由组件内部 this.setSate() 或父组件重新render触发1.1.1.3、卸载组件:由 ReactDOM.unmountComponent…

流媒体传输 - RTP 荷载 H264

H264 码流结构 H264 码流是由很多 NAL Unit 组成,所有 NAL Unit 均存在一个八位数据的 NAL Unit Header ,这八位数据也充当此 RTP 有效负载格式的有效负载头。一个 NAL Unit Header 的语法如下: ---------------|0|1|2|3|4|5|6|7|--------|F|NRI| Type…

深分页Scroll

ES对from size是有限制的,from和size二者之和不能超过1W 原理: fromsize在ES查询数据的方式: 第一步现将用户指定的关键进行分词。 第二步将词汇去分词库中进行检索,得到多个文档的id。 第三步去各个分片中去拉取指定的数据。耗…

JUC总结-基础篇

juc是什么? JUC是java.util.concurrent包的简称,在Java5.0添加,目的就是为了更好的支持高并发任务。让开发者进行多线程编程时减少竞争条件和死锁的问题! juc脑图 juc总结 juc多数工具都是依赖volatile关键字保持可见性和禁止指…

ovs vxlan 时延和吞吐

设计云时到底要不要用vxlan,如果用vxlan到底要不要购买比较贵的smart nic做offload,采用软件vxlan还是硬件交换机vxlan,很难决策,这儿简单测试一下,给个参考,资源终究是有限的,成本还是有考虑的…