性能测试入门实践路线图

news2024/11/15 9:15:42

我转行做软件测试工作已有六年多了, 从功能到自动化测试,然后负责性能测试团队和质量团队的技术专项治理,再到测试专家角色,负责整个技术项目的产品/运营和质量保障工作。

其中性能测试和线上稳定性保障,算是我最擅长的技术领域。很多同学咨询过我,性能测试如何入门,如何快速提升压测和性能优化相关的技能。

我写了很多文章分享性能测试相关的干货文章,但发现还是有很多同学迟迟无法入门,对性能测试的认知依然停留在使用工具压测然后统计数据出报告就完事的层次。

这篇文章,我想结合自己的实践和技术成长经历,聊聊性能测试如何从入门到落地实践的路线图。

导图

性能测试从入门到落地实践的路线图,我会以下面这张图为示例来分开描述。

方法论

有句话叫做“工欲善其事,必先利其器”,我想在后面补充一句:“欲利其器,必晓其理”!

我觉得无论任何一种知识或者技术领域,想要很好的在这个领域有所收获,一定要先掌握这个领域的理论知识,并且对相关的底层通用知识有所了解,否则在深入实践时会遇到很多认知上的偏差导致的结果南辕北辙。

基础理论知识不难学习,网上一搜很多基础理论知识的介绍,或者某些专业书籍上面都有很多关于理论知识的介绍。

学习理论知识不需要死记硬背,理论知识的作用在于让我们对性能测试有一个足够和全面的了解,知晓其脉络骨骼,然后按照方法论的指导,在具体的实践中灵活运用。

而通用的底层知识,对IT行业相关的技术从业者来说,无非就是网络协议、编码语言、数据库存储和操作系统相关知识。

这些知识基本是几十年前就有的,到现在没怎么变化,预计未来也不会有大的改变。

业务场景

我在前面的文章多次提到了我对技术和业务的认知,就是技术本身没有直接的价值,它一定要通过业务目标的达成或者商业活动的变现,才能体现自己的价值。

我们所有的测试活动开展,也是基于具体业务场景,因此在掌握基础理论知识后,开展性能测试的前提一定是要对业务场景有足够深的理解。

工具组件

技术不断发展带来的最大的优势就是出现了多种类型的工具,而工具的作用就是辅助人提高做事情的效率,性能测试也不例外。在实际的压测实施前后,借助工具可以事半功倍的完成性能测试工作。

上图的几种工具组件,下面列举几种供参考:

  • 压测工具:jmeter、gatling、locust、ghz、perfdog、airlab、sysbench;
  • 监控工具:zabbix、cat、skywalking、jaeger、prometheus、grafana;
  • 分析工具:arthas、SystemTap、jconsole、visualvm、操作系统自带工具;
  • 服务组件:常见的如redis、kafka、tomcat、feign、apollo、nacos、mybatis;
  • 系统架构:性能测试的对象是各应用服务及技术组件,需要了解整个系统的调用关系,因此熟悉被测系统的系统架构和数据流是做好性能测试工作的必须项;

技术实践

其实性能测试只是一个统称,现在大家更习惯称之为容量测试或者容量保障。

性能测试本质是一个特别吃经验的活儿,需要大量的项目实践和踩坑排查问题,定位分析优化问题,才能累积丰富的技术经验和案例。

上面我列举了几个具有代表性的技术实践类型,其实本质都是为了保障线上服务的稳定性。

体系建设

性能测试或者说任何的技术实践,做到最后都是建立体系,体系是基于理论指导的适合自己的支撑业务目标达成的最佳技术实践。我个人认为体系建设最重要的五点要素如下:

组织结构:技术团队的人员构成、新人落地、人员培养、知识库建立以及团队目标和分工;

流程规范:好的流程规范是保证团队大部分人可以遵循同一个目标和方向前进,降低内耗;

技术体系:技术团队一定要做自己的技术体系搭建,从技术选型、demo验证到技术落地以及持续优化;

沟通协作:现在很多工作单靠自己是无法完成的,需要多人协作甚至跨团队合作,因此高效的沟通协作机制很重要;

性能文化:其实不仅仅是性能文化,每种技术实践都有自己提倡的文化,比如测试的文化就是质量+效率。文化的本质就是团队所认可并且践行的一种理念,一种有益于业务、团队和个人利益的追求。

其实无论哪一门技术领域,都需要先了解理论,才能更好的实践。所有的技术都是服务于业务,一切以业务目标为导向的开展技术实践。

技术的最大价值就在于,支撑业务更好的发展而体现自身的价值。 技术实践到最后,构建最适合自己团队和业务目标达成的体系,并且需要持续改进。

加油吧,测试人!如果你需要提升规划,那就行动吧,在路上总比在起点观望的要好。未来的你肯定会感谢现在拼命的自己!

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

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

相关文章

物联网|IAR集成开发环境简介|cc254核心板硬件资源|物联网之蓝牙4.0 BLE基础-学习笔记(3)

文章目录 4、IAR集成开发环境简介5、 cc254核心板硬件资源 4、IAR集成开发环境简介 完整稳定的专业嵌入式开发环境,对不同的处理器有统一的用户界面,支持35种以上的MCU,包括8,16,32位, 完全兼容C语言的 高…

女孩子转数据分析难吗?难在哪里?

对于数据分析,很多人乍一听会觉得没啥技术难度,是个适合女孩子的专业。我们面对很多零基础小白也是用通俗的语言来形容这个专业:一般是通过Excel或者power BI工具对数据进行分析,制作成可视化的报表给领导层,为公司业务…

VS2022编译libiconv-1.17

需求概述 获得最新版本的windows下可用的libiconv静态库。 解决方案 概述 使用VS2022编译libiconv-1.17。需要对源码手动进行配置。 本文所述的方法同样适用于动态库,并且理论上适用于VS2010~2022所有版本。 如果你不在乎libiconv的版本,可以参考 …

DevOps死了吗?平台工程能否取代DevOps?

最近, Scott Carey 发表了一篇调查文章,喊出了一些开发者的心声:“扯淡的DevOps,我们开发者根本不想做运维!”除此之外,软件工程师兼DevOps评论员Sid Palas也在推特上写道,“DevOps已死&#xf…

C++知识点 -- 特殊类设计

C知识点 – 特殊类设计 文章目录 C知识点 -- 特殊类设计一、不能被拷贝的类二、 只能在堆上创建对象的类三、 只能在栈上创建对象的类四、 不能被继承的类五、 只能创建一个对象的类(单例模式)1.饿汉模式2.懒汉模式3. 单例对象释放问题: 一、…

【Python入门篇】——Python中判断语句(布尔类型,比较运算符,if语句)

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: Python入门,本专栏主要内容为Python的基础语法,Python中的选择循环语句…

Verilog 编程——奇偶分频(50%占空)

引言 最近准备一些笔试面试,想再把时钟奇偶分频的再整理一下。 我之前写过一个PWM产生的模块,里面有任意频率/占空比的时钟生成。可以参考: 基于FPGA的PWM发生器设计https://blog.csdn.net/qq_43045275/article/details/128365705?ops_re…

Scala学习(一)

1.什么是Scala Scala将面向对象和函数式编程结合成一种简洁的高级语言。Scala的静态类型有助于避免复杂应用程序中的错误。 1.1 为什么要学习Scala? Spark基于内存的大数据计算框架,而Spark就是Scala开发的。所以为了学习好Spark需要掌握Scala语言。 …

learn C++ NO.3 ——类和对象(1)

1.初步理解面向过程和面向对象 C语言是面向过程的高级编程语言,而C是面向对象的高级编程语言。那么两者有什么区别呢?且看下图分析。 面向过程语言就是逐步拆分并解决问题。其特点是过程化和模块化,数据和对数据的操作是分离的。 由于面向过…

《LeetCode》—— 哈希

今天刷题讲解的主要讲的是关于——哈希这个知识点的题目讲解。 目录 (一)缺失的第一个正整数 (二)数组中只出现一次的两个数字 1、直接法 2、哈希 (三)直线上最多的点数 (一)缺…

力扣题库刷题笔记735-行星碰撞

1、题目如下: 2、个人Python代码实现 个人代码思路,主要是新建一个列表stack,将原列表asteroids中的元素依次加入到stack中。以上代码可能会有两部分比较冗余的部分,一是两个标志位可以不用单独声明,二是当stack列表中…

解析内存中的高性能图结构

在进行各种图处理、图计算、图查询的时候,内存或是硬盘中如何存储图结构是一个影响性能的关键因素。本文主要分析了几种常见的内存图结构,及其时间、空间复杂度,希望对你有所启发。 通常来说,对于图结构的几种常见的基础操作&…

通过SSH隧道安全消费Kafka数据

一.背景 由于我们有个业务在阿里云部署了Kafka,但是想直接在本地IDC机房服务器直接通过公网消费Kafka进行业务处理。这个本来也不是什么难事,阿里云把9092默认端口打开运行访问即可,也不不值得再写这篇博客了。 这个事情让人特别关注的一个主…

【记录】ChatGPT|图片预览魔法咒语魔改,使用 ChatGPT 返回大量可以跳转的链接

很早的时候,我已经留意到 ChatGPT 会以返回图片的 markdown 格式来显示图片,很可能拥有一定的图片上传功能,但是它往往会显示得有些问题。一些代码图片之类的或者风景图什么的都不是很会。 但其实 ChatGPT 是可以直接返回图片类型的回复的&a…

C++初始化列表

1.初始化列表概述 初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。 2.为什么使用初始化列表 在创建对象时,编译器通过调用构造函数&#xff0c…

个人电脑操作系统

UEFI(Unified Extensible Firmware Interface,全称统一的可扩展固件接口)是一种个人电脑系统规格,用来定义操作系统与系统固件之间的软件界面,作为BIOS的替代方案。其前身是Intel在1998年开始开发的Intel Boot Initiat…

【static_cast、reinterpret_cast、const_cast、dynamic_cast】C++类型转换

C类型转换 引入C语言中的类型转换 C的强制类型转换static_castreinterpret_catconst_castdynamic_cast向下转型的安全问题 explicit4种类型转换的应用场景 RTTI 引入 C语言中的类型转换 C语言和C都是强类型语言,如果赋值运算符左右两侧变量的类型不同,…

ChatGPT一键私有部署,全网可用,让访问、问答不再受限,且安全稳定!

前言 ChatGPT由于在访问上有一些限制,使用并不便利。目前国内可以直接访问的大部分是调用API返回结果,我们去使用时总会有次数限制,而且它们可能随便崩掉。 其实,目前我们访问过的大部分国内的网页包括UI,其实是套用了…

过滤器对前端请求参数进行解码URLDecoder,接口接收参数类型为map,解码无效问题

文章目录 一、前言二、设计思路三、代码实现四、启动测试五、过滤器解码无效六、源码跟踪七、解决方案八、再次重启测试九、总结 一、前言 最近做的一个公司项目,因为客户需要对特殊字符做搜索,但是前端的请求参数无法传递到后端,所以前端对…

VS2017中Qt项目数据库连接——包含报错比如QMYSQL driver not loaded(细心看到最后,一定能解决你想解决的问题)

我把爆的错误QMYSQL driver not loaded写在文章末尾了,大家看一看!前面是配置数据库 一、测试 VS2017 中 Qt 项目数据库连接 打开 VS2017,文件——新建项目,右侧输入框输入 Qt 确定后点击下一步,勾选模块 基类也是默…