目录:导读

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


前言

1、准备工作

准备工作在性能测试中,是最为耗时以及麻烦的,不仅需要各个团队协同配合,还需要不断验证,以确保相关的准备事项不会对性能测试结果造成较大影响。

以我司的性能测试流程来说,准备阶段的各事项以及对应责任人,如下图:

在这里插入图片描述

在准备阶段,性能测试童鞋,要尽可能承担起PM这一角色的职责,跨部门沟通,协调资源以及推动准备工作的快速落地,这样才能在有限时间内完成准备事项,为压测预留足够的时间。

2、压测监控

完成了前面的几项工作,就可以进入压测阶段了,这一阶段,可以分为两部分,压测+监控。

1)压测

压测工作主要有如下几种情景,按照预先制定的测试策略执行即可(不排除临时特殊情况,这里需灵活调整)。

①单机单接口测试:该策略主要是为了验证单接口的性能基准,避免整个调用链路过程中某个服务/接口成为瓶颈;

②单机多接口测试:相较于微服务架构的服务解耦,有时候某些服务间互相调用依赖的强关系可能会造成资源竞争等情况,需要通过这种方式来排查验证;

③单机混合场景测试:这种测试方式的主要作用是得到一个单机混合场景下的最优性能表现,为服务扩容和线上容量规划提供参考数据;

④多节点测试:现在大多数的互联网企业都采用的集群/分布式/微服务架构,在多节点部署时候,考虑到SLB的边际递减效应,需要进行多节点测试;

通过该种方式,来验证负载均衡递减比率,为生产扩容提供精确的参考依据;

⑤高可用测试:高可用主要验证2点:服务异常/宕机是否可以恢复以及恢复到正常水*所耗费的时间(越短越好)。

⑥稳定性测试:前面提到了核心业务流程必须保证稳定性,稳定性测试一般根据系统特点和业务类型,分为两类:5d*12h、7d*24h

一般来说,稳定性测试的执行时间,12h即可(当然,24h或者更长也可以,根据具体情况灵活调整)。

2)监控

性能测试过程中,监控是很重要的一环,它可以帮助我们验证测试的结果是否满足预期指标,以及协助我们发现系统存在的问题。常见的监控指标如下:

在这里插入图片描述

那么如何监控这些指标呢?

如果采用的云服务器(比如阿里云),现在国内的云厂商都提供了监控大盘以及各种监控服务(比如阿里云的APM、ARMS、AHAS)。

如果是自建服务机房,可以借助运维搭建的监控体系,比如全链路追踪(pinpoint、cat、zipkin、skywalking),专业的监控工具比如Nmon、Zabbix等。

测试指标的监控,可以搭建基于开源组件的Grafana+InfluxDB+Jmeter+Nmon2influxdb,或者ELK等监控体系。

3、分析调优

1)性能分析

性能分析是一个复杂的话题,不同的系统架构设计、应用场景、业务逻辑、编程语言及采用的框架,都有一定的差异。抽象来说,有如下三种分析思路:

①自上而下:即通过生成负载来观察被测系统的性能表现,比如通过对TPS、RT等指标的监控,从请求发起端到OS端层层剖析,从而找到系统性能瓶颈。

②自下而上:通过监控各硬件及操作系统相关指标(CPU、Memory、磁盘I/O、网络)来分析性能瓶颈。

③从局部到整体:即通过性能表象结合工作经验做快速排除,确定可能存在瓶颈的局部所在,快速修改验证,避免大而全的全面分析带来的耗时,提高效率。

2)性能调优

性能调优主要关注三个方面:降低响应时间、提高系统吞吐量、提高服务的可用性。

性能优化的目的是:在保持和降低系统99%RT的前提下,不断提高系统吞吐量以及流量高峰时期的服务可用性。

性能调优建议遵循如下几点原则:

①Gustafson定律:系统优化某组件所获得的系统性能的改善程度,取决于该部件被使用的频率,或所占总执行时间的比例。

②Amdahl定律:S=1/(1-a+a/n)

其中,a为并行计算部分所占比例,n为并行处理结点个数。这样,当1-a=0时,(没有串行,只有并行)最大加速比s=n;

当a=0时(只有串行,没有并行),最小加速比s=1;当n→∞时,极限加速比s→ 1/(1-a),这也就是加速比的上限。

③最小可用原则:一般情况下,系统的代码量会随着功能的增加而变多,健壮性有时候也需要通过编写异常处理代码来实现,异常考虑越全面,异常处理的代码量就越大。

随着代码量的增大,引入BUG的概率也越大,系统也就越不健壮。从另一个方面来说,异常流程处理代码也要考虑健壮性的问题,这就形成了无限循环。

因此在系统设计和代码编写过程中,要求:一个功能模块如非必要,就不要;一段代码如非必写,则不写。

4、容量规划

性能测试的最终目的是保证线上服务的可用性,及时响应并满足业务需求。而容量规划,是对线上服务在峰值流量冲击下稳定运行的最佳保障。

1)单机混合容量

这里的容量指的是在单台服务器下,混合场景压测的最优性能表现(而不是最高)。比如一台4C8G的服务器,对核心业务场景进行按业务配比混合压测,示例如下图:

在这里插入图片描述

得到单机最优容量数值,然后可以通过增加被测系统的服务节点,来验证容量是否随着服务节点的增加而线性增长。

2)多节点SLB容量

以上面的示例图来说,单机最优TPS≈450,然后通过增加服务节点数量,再次压测,通过扩容后的压测数值除以服务节点数量,然后和单机混合容量对比,就可以得到多节点SLB的递减比率。

举例:扩容后的压测数值为R,服务节点数量为N,单机混合容量为D,那么多节点SLB的递减比率计算公式为:SLB%=(R/N)/D。

以前面的例子来说,单机混合容量为450,服务节点扩展到2台,得到测试结果为750,那么SLB%=(750/2)/450≈83.33%。

以此类推,如果预期线上性能指标要求TPS≥5000,那么通过计算,我们可以得到线上服务节点最少需要扩容到14台,才能满足需要。

PS:服务节点数量越多,那么递减效应越明显,建议通过测试多个服务节点的递减比率,来得到一个区间数。

3)告警阈值

这里的告警阈值,指的是运维同事对各个服务状态及相关资源指标进行监控时,设定的提醒和告警阈值。

前面所说的单机混合容量的最优值,建议结合运维设定的阈值来综合评估(比如运维告警设定的阈值是CPU使用率达到80%,那么就以单机CPU80%耗用下的容量数值作为计算基准)。

4)Buffer机

文章的开头已经说过,系统不仅要具有高可用和稳定性,还要具有容灾机制。比如某个或某部分服务不可用,服务器宕机,需要预留的机器来随时补上来。

本文所说的Buffer机,即作为预留容灾的机器。按照我个人的实践经验来说,以线上扩容机器数量的30%来作为预留Buffer机,已经能满足绝大部分情况(适合中小型团队)。

当然,有些特殊场景(比如2019年春节联欢晚会,百度承包的口令红包场景),就需要综合考虑更多的影响因素。

除了容量规划,我们还可以通过服务降级、网关限流甚至熔断等机制,来保证系统在峰值流量的冲击下保持服务可用。

完整版!企业级性能测试实战,速通Jmeter性能测试到分布式集群压测教程

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

人生最动人的风景,往往藏在最险峻的山巅。当你觉得力竭时,请记住:每一次坚持都在重塑更强大的自己。别问路有多远,只管迈步向前;别怕山有多高,向上攀登就是答案!

你体内沉睡着改变世界的力量!每个清晨都是改写命运的新机会,每次挫折都是精心包装的礼物。当全世界都在说"不可能"时,正是你证明"可能"的最好时机!

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

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

相关文章

StreamCap(直播录制) v1.0.2 绿色版

StreamCap 是一个基于FFmpeg和StreamGet的多平台直播流录制客户端,覆盖 40 国内外主流直播平台,支持批量录制、循环监控、定时监控和自动转码等功能。软件特色 多端支持:支持Windows/MacOS/Web运行。循环监控:实时监控直播间状态&…

OpenCV:图像拼接(SIFT 特征匹配 + 透视变换)

目录 一、核心技术原理与对应 API 解析 1.1 SIFT 特征检测与描述(尺度不变特征提取) 1.1.1 灰度图转换:cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 1.1.2 SIFT 检测器初始化:cv2.SIFT_create() 1.1.3 特征点检测与描述符计算&…

日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(10):91-100语法+考え方13

日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(10):91-100语法1、前言(1)情况说明(2)工程师的信仰(3)高级语法N1语法和难点2、知识点-语法&…

继承与组合:C++面向对象的核心

C 继承:从基础到实战,彻底搞懂面向对象的 “代码复用术” 在面向对象编程(OOP)的世界里,“继承” 是实现代码复用的核心机制 —— 就像现实中孩子会继承父母的特征,C 的子类也能 “继承” 父类的成员&#…

Matplotlib定制:精解颜色、字体、线型与标记

Matplotlib定制:精解颜色、字体、线型与标记导语 Matplotlib 是 Python 数据可视化领域的基石。虽然它的默认样式足以满足快速分析的需求,但要创作出具有专业水准、信息清晰、视觉美观的图表,就必须掌握其强大的定制功能。本文将深入探讨 Mat…

Qt开发经验 --- Qt监听文件/文件夹改变(17)

文章目录[toc]1 概述2 演示效果3 简单使用示例4 带界面的使用示例5 源代码地址更多精彩内容👉内容导航 👈👉Qt开发经验 👈1 概述 QT实现实时监控文件的创建、修改、删除操作 跟踪文件夹内容的增删改变化 可用于文件发生变化时自…

数据分析:合并一

🔷 DA37:统计运动会项目报名人数(仅输出有人报名的项目)✅ 题目描述给定两个 CSV 文件:items.csv:包含项目信息(item_id, item_name, location)signup.csv:包含员工报名信…

WWW‘25一通读 |图Anomaly/OOD检测相关文章(1)

写在前面:进入新一轮学习阶段,从阅读开始。 本文分享的是WWW2025收录的与作者研究相近的graph-based xx相关paper的阅读笔记,含个人理解,仅供参考😄 0x01 HEI:利用不变性原理实现异配图结构分布偏移学习 J…

static_cast:C++类型系统的“正经翻译官”

1. 背景与核心概念 1.1 C的“类型安全”哲学 想象一下,你所在的世界突然失去了所有规则:文字可以随意变成数字,人可以瞬间变成椅子,汽车能飞上天变成飞机… 这听起来像是疯狂的梦境,但对于早期C语言来说,这…

【嵌入式原理系列-第八篇】USART从原理到配置全解析

目录 一.通信领域基础知识介绍 1.1 串行和并行通信 1.2 同步和异步传输 1.3 串口和COM口 1.4 通信协议标准以及物理层定义 1.5 物理层协议之TTL / RS-232 / RS-485 二.USART介绍 2.1 USART特点介绍 2.2 UART和TTL / RS-232 / RS-485 2.3 USART硬线流控介绍 2.4 USAR…

MariaDB介绍和MariaDB包安装

文章目录MariaDB介绍和安装1.MariaDB介绍1.1 起源与背景1.2 核心特性1.2.1 高度兼容 MySQL1.2.2 优化的存储引擎1.2.3 企业级功能增强1.2.4 性能优化1.2.5 安全增强1.3 社区与生态1.4 应用场景1.5 总结2.MariaDB安装2.1 主机初始化2.1.1 设置网卡名2.1.2 设置ip地址2.1.3 配置镜…

双指针与滑动窗口算法精讲:从原理到高频面试题实战

引言:算法选择的十字路口 在算法面试中,双指针和滑动窗口如同两把瑞士军刀,能高效解决80%以上的数组和字符串问题。本文将深入解析这两种技术的核心差异,结合力扣高频题目,提供可直接复用的代码。 一、算法核心思想解析…

苹果MAC、MacBook air和pro安装windows双系统与iOS分发

文章目录1. main1.1 准备工作1.2 启动转换助理1.3 Windows安装1.4 苹果电脑安装Windows双系统切换2. 苹果(iOS)分发/上架2.1 上架App Store2.2 上架TestFlight2.3 webClip免签上架2.4 超级签名2.5 企业证书2.6 app分发系统Reference1. main 苹果电脑安装windows双系统 https:…

ArcGIS定向影像(1)——非传统影像轻量级解决方案

常常听到这样的需求,ArcGIS能让用户自己低成本的做出谷歌街景吗?现在 _ArcGIS Pro 3.2 和 ArcGIS Enterprise 11.2 _能够让用户不使用任何插件和扩展的情况下完成街景数据集的构建,数据管理,发布服务和调用的完整解决方案。非常体…

uni-app 网络之封装实战HTTP请求框架

前言在uniapp开发中,网络请求是每个应用都必不可少的功能模块。一个优秀的网络请求封装不仅能提高开发效率,还能增强代码的可维护性和可扩展性。本文将基于实际项目经验,详细介绍如何封装一个高效、可维护的Uniapp网络请求框架,并…

架构师成长之路-架构方法论

文章目录前言一、先搞懂:架构师不仅仅是“技术大佬”,更是“问题解决者”1.1 架构师的分类:不止“开发架构师”一种1.2 架构师要关注什么?别只盯着技术1.3 架构师解决问题的4步心法:从定义到落地1.4 架构师的成长攻略&…

uniapp在微信小程序中实现 SSE 流式响应

前言 最近需要使用uniapp开发一个智能对话页面,其中就需要使用SSE进行通信。 本文介绍下在uniapp中如何基于uni.request实现SSE流式处理。 在线体验 #小程序:yinuosnowball SSE传输格式 返回输出的流式块: Content-Type为text/event-stream 每个流式块均为 d…

STM32N6AI资料汇总

文章目录前言一、STM32N6硬件资源1.1 NUCLEO-N657X0-Q1.2 STM32N6570-DK1.3 正点原子STM32N647二、STM32N6软件资源2.1 STM32CubeN6例程资源包2.2 STM32图像信号处理器(ISP)调优软件2.3 正点原子N6开发板配套软件三、AI软件资源3.1 STM32N6 AI软件包总结…

Flask学习笔记(一)

1、环境准备pip install Flask使用Flask开发第1个入门程序:from flask import Flask app Flask(__name__) app.route(/) def hello_world():return Hello, World!if __name__ __main__:app.run()Flask构造函数将当前模块的名称(__name__)作为参数。2、route函数ap…

CSP认证练习题目推荐(4)

思维、贪心、综合 排队打水 这道题目不算难,但是不注意还是会出现很多错误,比如结构体的书写。以及自定义结构体排序。还有这里做的优化,使用前缀和记录打水的等待时间,但是这里很容易出错的点在于等待时间是应该是记录的前一个…