性能分析5部曲:瓶颈分析与问题定位,如何快速解决瓶颈?

一、引言

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

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

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

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

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

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

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

1、判断性能瓶颈;

2、线程递增策略;

3、性能衰减过程;

4、拆分响应时间;

5、构建分析决策tree;

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

二、判断性能瓶颈

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

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

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

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

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

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

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

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

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

在这里插入图片描述

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

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

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

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

相关文章

创新设计与技术突破:嵌入式系统在人工智能和机器学习领域的应用前景

嵌入式系统在人工智能和机器学习领域的应用前景非常广阔,创新设计和技术突破将进一步推动这些领域的发展。以下是嵌入式系统在人工智能和机器学习领域的应用前景: 1.实时数据处理 嵌入式系统具有小型化、低功耗和高效率等特点,非常适合用于实…

在cloudcompare中,已知三维坐标可视化坐标点

主要思路是:已知坐标,通过在坐标生成圆球来可视化坐标点。主要操作步骤如下 1.在cloudcompare中找到“创建基础模型” 2.创建球体 输入坐标和球体半径,x,y,z中输入已知坐标,这里以(0,0,0&…

小游戏和GUI编程(6) | 基于 SFML 的井字棋

小游戏和GUI编程(6) | 基于 SFML 的井字棋 0. 简介 使用 SFML 实现井字棋(tic-tac-toe), 规划如下: 了解规则, 使用命令行实现(已经实现了)使用 SFML,提供极简的交互(预计 1 小时)制作 SVG 图像, 美化界面(预计 1 小时) 1. 基于命令行的实…

MySQL安装问题:由于找不到MSVCP120.dll,无法继续执行代码.重新安装程序可能会解决此问题。

出现的问题: 解决:由于没有安装微软常用运行库合集64位导致的问题 下载vcredist_x64 https://www.microsoft.com/zh-CN/download/details.aspx?id40784 下载完成后,点击运行解决问题。

洛谷问题买礼物和Building Roads S题解

目录 1.买礼物 2.Building Roads S 1.买礼物 P1194 买礼物 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 又到了一年一度的明明生日了,明明想要买 B 样东西,巧的是,这 B 样东西价格都是 A 元。 但是,商店老板说最…

HTTP 响应状态代码

HTTP 响应状态代码 HTTP 响应状态代码指示特定 HTTP 请求是否已成功完成。 响应分为五类: 信息性回复 ( 100 – 199​)成功响应 ( 200 – 299​)重定向消息 ( 300 – 399​)客户端错误响应 ( 400 – 499​)服务器错误…

《VulnHub》GoldenEye:1

title: 《VulnHub》GoldenEye:1 date: 2024-02-16 14:53:49 updated: 2024-02-16 15:08:49 categories: WriteUp:Cyber-Range excerpt: 主机发现、目标信息扫描、源码 js 文件泄露敏感信息、hydra 爆破邮件服务(pop3)、邮件泄露敏…

撑住!再好的命,也有坎坷的时候

再好的命,其实都有为难的时候,都有经历磨难的时候。要想真正强大起来,都要度过一段没人帮忙,所有事情都是自己一个人撑,所有情绪和思想,都只有自己知道的日子。但只要咬牙撑过去,一切就都不一样…

try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

首先说明一点,finally{ }里面的code一定会执行 ,至于是在return前执行还是在return后执行(个人认为是{}代码执行完之后并且在return执行之前),具体需要分情况: 1.若try{}中没有异常,则try{}中语…

中科星图GVE——矢量之间的交集,并集和差集等关系

简介 矢量是数学中的一个重要概念,它可以分为有序矢量和无序矢量。在数学中,我们经常需要对矢量之间的关系进行分析,包括求交集、并集和差集等运算。下面将对这些概念进行具体解释。 1. 交集: 矢量的交集是指两个矢量中共同存在的元素所构成的集合。假设有两个矢量A和B,…

【JAVA-Day86】守护线程

守护线程 守护线程摘要引言1. 了解守护线程:它是什么?👻特点和用途示例代码 2. 为何我们需要守护线程?👻辅助性任务处理不阻止程序的正常运行重要的清理工作示例代码📚 3. 如何创建和管理守护线程&#xff…

使用Taro开发鸿蒙原生应用——快速上手,鸿蒙应用开发指南

导读 本指南为开发者提供了使用 Taro 框架开发鸿蒙原生应用的快速入门方法。Taro,作为一个多端统一开发框架,让开发者能够使用一套代码同时适配多个平台,包括鸿蒙系统。文章将详细介绍如何配置开发环境,以及如何利用 Taro 的特性…

真假难辨 - Sora(OpenAI)/世界模拟器的技术报告

目录 引言技术报告汉译版英文原版 引言 Sora是OpenAI在2024年2月15日发布的世界模拟器,功能是通过文本可以生成一分钟的高保真视频。由于较高的视频质量,引起了巨大关注。下面是三个示例,在示例之后给出了其技术报告: tokyo-wal…

树形dp 笔记

树的最长路径 给定一棵树,树中包含 n 个结点(编号1~n)和 n−1 条无向边,每条边都有一个权值。 现在请你找到树中的一条最长路径。 换句话说,要找到一条路径,使得使得路径两端的点的距离最远。 注意&…

Java泛型编译期擦除,为什么反射还能拿到泛型信息?

首先放上运行期反射获取Java泛型类型的相关信息的代码&#xff1a; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type;public class Test2 {public static void main(String[] args) {Example<String> example new Example<String>() …

Base64编码的优点与缺点

title: Base64编码的优点与缺点 date: 2024/2/16 14:06:37 updated: 2024/2/16 14:06:37 tags: Base64编码ASCII转换数据传输文本存储安全性数据膨胀字符串解码 Base64编码是一种将二进制数据转换为可打印ASCII字符的编码方式。它被广泛应用于数据传输和存储&#xff0c;以提升…

Pytest测试技巧之Fixture:模块化管理测试数据

在 Pytest 测试中&#xff0c;有效管理测试数据是提高测试质量和可维护性的关键。本文将深入探讨 Pytest 中的 Fixture&#xff0c;特别是如何利用 Fixture 实现测试数据的模块化管理&#xff0c;以提高测试用例的清晰度和可复用性。 什么是Fixture&#xff1f; 在 Pytest 中&a…

迎新年,送新手福利, 送2篇nhanes文章全套复现代码

美国国家健康与营养调查&#xff08; NHANES, National Health and Nutrition Examination Survey&#xff09;是一项基于人群的横断面调查&#xff0c;旨在收集有关美国家庭人口健康和营养的信息。 地址为&#xff1a;https://wwwn.cdc.gov/nchs/nhanes/Default.aspx 本次赠送…

uniapp实现手机横屏(方法二)

在manifest.json文件中&#xff0c;将"deviceOrientation"属性设置为"auto"&#xff0c;这样整个应用程序将支持横屏显示。 在需要横屏显示的页面的<script>标签中&#xff0c;添加onShow生命周期函数&#xff0c;并在函数中调用uni.setScreenOrien…

2024年【T电梯修理】报名考试及T电梯修理考试报名

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【T电梯修理】报名考试及T电梯修理考试报名&#xff0c;包含T电梯修理报名考试答案和解析及T电梯修理考试报名练习。安全生产模拟考试一点通结合国家T电梯修理考试最新大纲及T电梯修理考试真题汇总&#xff0c;…