深聊性能测试,从入门到放弃之:性能测试技术栈,看完这篇,保证刷新你对性能测试的认知~~

2023-10-30

1、引言

关于性能测试的理论知识、监控分析、调优及集成,小鱼也是写了不少博文,
而今天写的这个目的,很简单,
就是为了能更快更直接的让小伙伴知道性能测试的技术栈。
要想成为性能测试大佬,需要掌握那些姿势
话不多说,先展示一下性能测试技术栈的脑图。
在这里插入图片描述

2、性能测试基础

这部分内容,小鱼有专门整理过一篇博文,
深聊性能测试,从入门到放弃之:初识性能测试》,在这里,原有的就不再这里面重复写了,
但是,在这里,小鱼会根据上篇博文进行扩展,主要体现在:

  • 性能测试理论
  • 测试开发技能

2.1 性能测试理论

性能测试理论,是用来指导我们开展性能测试,指导我们要得到什么结果,让我们了解测试过程是否可靠,测试结果是否具备可参考性。
而对于性能测试理论,我们主要关注以下几点:

  • 测试需求分析要能够准确挖掘出性能需求,圈定测试范围,并明确性能指标
  • 测试模型要能够尽量真是的反应系统的实际使用情况
  • 测试环境尽量对标实际(避免云主机,虚拟机)
  • 测试数据在量与结构上尽量与实际对标
  • 测试场景要考虑业务关联,尽量还原实际情况
  • 测试监控尽可能少的影响系统性能
  • 测试执行时测试结果要趋于稳定

在这里,如果还是有些不理解的话,
别着急,别灰心,
按照小鱼的套路,这些内容会在接下来的实战篇,会详细的讲解。

2.2 测试开发技能

系统(产品)的多样性决定了测试程序的多样性,不是所有的系统都可以有工具可以帮助进行测试的,这个时候我们就需要自己动手开发测试程序;

如果了解Locust的话,可以参照小鱼的python+Locust系列实战博文:
深聊性能测试,从入门到放弃之:Locust性能自动化(二)代码实战
深聊性能测试,从入门到放弃之:Locust性能自动化(三)如何提高Locust性能
深聊性能测试,从入门到放弃之:Locust性能自动化(四)自定义客户端测试

如果不懂Python流派,那也可以用java直接写Jmeter脚本进行测试,也都是很简单。

当当当然,如果不会开发语言,不会编写脚本,也不是没有版本,那就利用工具,遵循理论,不懂就问,长期积累,也可以具备这种能力的哦。

至于使用的工具,同样,请参照《深聊性能测试,从入门到放弃之:初识性能测试第四章节:性能工具

不懂的话,可以私信或者留言,小鱼看到也会回复的。

太简单的问题,就…,有颜值的妹子除外…

3、性能监听诊断

性能监听与调优,是性能测试的一个难点
当然,小鱼也是在《MySQL性能监控(sql命令语句 & MONyog工具)全掌握,这一篇足以!》写过,MySQL的性能监控诊断,
当然呢,这里,我们不仅仅说的是MySQL,还有别的呢。
接着往下看。

3.1 前端监听诊断

目前的开发形式多采用前后端分离的方式,一套后端系统处理多套前端请求;
用户通过APP(H5、Native、Hybrid应用)和PC中的浏览器访问系统。

  • JavaScript的运用让前端技术发展飞速;
  • APP的运用让前端可以存储、处理更多业务;
    随着功能的增多就带来性能问题,前端的性能问题也越来越成为广泛关注的重点。
    但是幸运的是,前端应用性能的监控工具也有不少。

3.2 服务器监听诊断

不管我们的程序多么牛X,架构多么牛叉,
但是运行程序最后还是依靠服务器硬件,服务器硬件是性能之本,所有的性能都会反映到硬件指标上,我们想要分析性能,就需要知道服务器知识,主要体现在:

  • CPU
  • 存储
  • 内存
  • 网络

了解操作系统及其内核对于系统分析至关重要。所以小鱼说过:性能测试是一门综合学科,也是一个团队的活

对于系统分析,我们要掌握:

  • 系统调用如何执行;
  • CPU是如何调度线程;
  • 优先大小的内存是如何影响性能;
  • 文件系统是如何处理IO;

对于操作系统,我们要掌握:

  • Linux
  • Windows Server

3.2.1 Linux

Linux是开源的类UNIX操作系统,Linux继承了UNIX以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
因为越来越多的大厂用Linux作为服务器操作系统,所以针对性能测试大佬,了解掌握Linux操作时必须的。
但是,针对当前Linux/UNIX的分支也很多,比较普及的有:

  • CentOS
  • Ubuntu
  • RedHat
  • AIX
  • Solaris

3.2.2 Windows Server

Windows Server 是Microsoft Windows Server System (WSS)的核心,是服务器操作系统。
目前都是比较小型的公司在使用。
Windows Server 优点:

  • 资源监视器功能完善
  • 图形界面画
  • 使用方便

3.3 中间件监听诊断

主流的中间件必须是Tomcat
Tomcat作为一个载体,帮助我们实现通信及作业功能,提供了一套规范,而我们只需要遵循规范,开发出实现业务逻辑代码,既可以发不成系统。
它为我们省掉了基础通信功能和多线程的开发,让我么可以专注业务逻辑的实现。
Tomcat有一些性能指标用来反映服务的"健康情况",如:

  • 活动线程数
  • JVM内存分类
  • 垃圾回收情况
  • 数据库连接池使用情况

3.4 持久化产品监听

数据的持久化有结构数据、非结构数据、块数据、对象数据,存储时对应不同类型的存储产品。比如:

  • 关系型数据库:MySQL、Oracle
  • 非关系型数据库:Redis、HBase
  • 分布式存储:hdfs、ceph

以上这些都属于IO操作。

IO操作一直都是性能的"重灾区",因为不管什么类型的存储,终究是把数据存储的介质上。存储介质广泛使用的是固态硬盘(SSD)和机械硬盘。
机械硬盘是物理读写(IO),其读写速度相对固态硬盘相差很大,比如:

  • 我们启动计算机,如果操作系统不在固态硬盘,启动至少30多秒;
  • 而操作系统在固态硬盘上,启动也就是几秒。

所以,我们可以通过监听存储介质的性能指标来诊断程序在IO上的耗时,
并针对性的优化对存储的访问(比如减少请求次数等)。
因为存储介质的性能是一定的,我们需要对依赖她的持久化产品做调优,比如:

4、性能优化分析

性能调优,有过站门的博文介绍,
性能调优怎么做,看过这一篇,菜鸟变大佬!
深聊性能测试,从入门到放弃之:如何对IO进行性能调优
关于MySQL性能优化方式,这一篇就够!
所以,在这里,也是总结概括性的说一点,因为在后面的实战篇,小鱼同样会展开来说的哦。

4.1 代码分析能力

代码分析,在很多大佬眼里,这不就是开发小哥哥的工作,我一个测试,搞什么代码分析。
这个想法,很危险,必须黄牌警告一次
作为测试开发的大佬,难道你的自动化测试,单元测试,性能测试,安全测试,都不看代码???
只有多提高自己的代码阅读能力,才能跟开发的小姐姐聊到一起呢~
所以我们要多掌握代码阅读分析能力,多掌握开发语言,多掌握撩妹技能 哎~~ 跑偏了…
最主要的如:Java,Python ,别的就不说了。

4.2 架构

高性能的系统架构与普通系统架构必须不一样。
所以性能优化或者性能规划要依照系统的用户规模来设计,了解架构有助于快速判断系统性能风险,有针对性的进行性能压测,提出合理的解决方案。

每个人都可以都成为码农,但是不是每个人都能成为架构师。

4.3 中间件性能分析

中间件的性能指标反应了系统的运行状况,我们要能够通过这些指标推导出系统的问题所在。
有些可以通过调整中间件的配置来改善系统性能,

  • 用户请求过多,可以适当增加线程池;
  • 当JVM内容回收,特别是FullGC太频繁,我们就要分析到底那些程序了大连的Heap内存申请;
  • 当CPU过于繁忙时,我们就去看那个线层占用大量的CPU资源;
    不是说80%的问题,都是可以用常见的方法解决,所以
    用上述的方法,就可以解决80%的问题。

4.4 操作系统

操作系统统筹管理计算机硬件资源,针对不同业务,不同场景也会有一些可以优化的参数。
我们首先要知道操作系统的限制,还需要从监控的指标中推导。
而常见的调优方法如下:

  • 文件句柄数设置
  • 网络参数化设置
  • 亲和性设置
  • 缓存设置

同样的,掌握了这些,也就能解决80%的。
剩下的20%,可能就是别的问题喽,例如架构问题…

架构师表示:不背这锅

4.5 数据库分析

系统中流转的数据离不开持久化,而持久化需要数据库。
数据在数据库中的存储结构和搜索方式直接影响性能,大多数的性能调优都集中在数据库的存储及查询上。
所以,学好数据库是多么的重要。

如果还不会,就看小鱼MySQL专栏《MySQL(用法及性能优化)
这里不仅有基本操作,还有性能调优方法哦~

同样要举例子,如:
Key-Value存储时Value过长,性能就会急剧下降,因为网络传输时数据包的MTU(最大数据包大小,Maximum Transmission Unit )通常是1500字节,大的数据包需要网络中多次传输,所以效率就低了,
那问题来了,如何优化数据库,最直接的就是减少Value的长度,文本的限制500,输入框的255/128,还有就是特殊规定限制10。

5、持续集成及工具

性能测试是一个反反复复的过程,发布后执行压测,分析问题、找到问题、修改问题,在发布,在执行压测。
所以这时候,持续集成工具就凸显重要性和方便性。
一般都是用svn/Git做管理,Jenkins做持续集成。
如果不会的话,可以参照小鱼的这两篇:
测试开发之:Jenkins持续集成(上),安装与配置
测试开发之:Jenkins持续集成(下),构建与运行

6、总结

看到这里,是不是觉得自己对性能测试的又有了更深的了解呢。
但是,有的小伙伴也可能觉得,这技术栈的内容太多了,我一下子怎么学得完呢?
嗯,最开始小鱼在学习性能测试的时候,也是有这样的犹豫,甚至想过,不想做这块,
但是,架不住太多的妹子call我,所以就…关键解答完,还有彩蛋…

我们再回顾一下,性能测试的技术栈,也就四部分内容,每个模块,都有专门的博文,
所以,不会的小伙伴,可以直接跳转到对应的博文,详细阅读哦!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深聊性能测试,从入门到放弃之:性能测试技术栈,看完这篇,保证刷新你对性能测试的认知~~ 的相关文章

  • 2024几个测试接口的好工具,效率加倍~

    作为一名后端程序员 一定要对自己写的接口负责 保证接口的正确和稳定性 因此 接口测试也是后端开发中的关键环节 但我相信 很多朋友是懒得测试接口的 觉得这很麻烦 一般自己写的接口自己都不调用 而是直接甩给前端或者其他调用方去验证 出了问题再改
  • 思腾合力赞助CCF YOCSEF太原第十一届学术委员会第三次全体会议

    2024年1月6日 由思腾合力赞助的 CCF YOCSEF太原第十一届学术委员会第三次全体会议暨AC换届选举活动 在山西大学举办 华北区教育行业负责人宋肖敏出席本次会议 会议汇聚了众多学术界和企业界的精英 共同探讨人工智能和计算机科学的未来
  • 车载测试相关理论知识

    学到了一些专用英文 BMS 电池管理系统 MCU 电机控制单元 GCU 增程器发电机控制器 OBC 车载充电机 DC DC 直流转换器 汽车上面涉及的控制器有 VCU 核心电子控制单元 BMS 电池管理系统 ECU 发动机 TCU MCU
  • 网工我劝你,这11种协议报文格式要烂熟于心!

    你们好 我的网工朋友 你最熟悉的报文是啥 TCP UDP 在网络世界里 就如同道路系统让车辆畅通无阻一样 网络协议是确保信息顺畅传输的关键 作为网络工程师 理解网络协议的种类与结构至关重要 今天就和你一起探索一下11种关键协议报文格式啊 包
  • AIDL通信过程中设置死亡代理

    概述 在进行进程间通信的过程中 如何服务端进程由于某种原因异常终止 我们的远程调用就会失败 影响我们的功能 那么怎么样能够知道服务端进程是否终止了呢 那就是给Binder设置死亡代理 下面看看如何设置 Override public voi
  • 服务器OS是什么意思?

    一 什么是服务器操作系统 服务器不仅仅是由高性能硬件组成 并且是要求客户端操作系统 如Windows和Mac OS 服务器还需要一个称为服务器操作系统的操作系统 二 与客户端OS的区别 无论是Windows还是Mac OS 家庭或办公室使用
  • IT圈大实话!卷运维不如卷网络安全

    前言 在刚刚过去的金九银十 我进行了多场网络安全的技术面试 我发现最近很多从事运维的选择了辞职 转行到了网络安全这个发展路线 说实话 运维工程师这个岗位在IT行业里面确实是处于最底层的 不管什么环节出现问题 基本都是运维背锅 薪资水平也比不
  • TeslaMate特斯拉神器本地Docker部署实现无公网远程访问

    文章目录 1 Docker部署TeslaMate 2 本地访问TeslaMate 3 Linux安装Cpolar 4 配置TeslaMate公网地址 5 远程访问TeslaMate 6 固定TeslaMate公网地址
  • 【性能测试入门】:压力测试概念!

    压力测试可以验证软件应用程序的稳定性和可靠性 压力测试的目标是评估软件在极端负载条件下的鲁棒性和错误处理能力 并确保软件在紧急情况下不会崩溃 它甚至可以进行超出软件正常工作条件的测试 并评估软件在极端条件下的工作方式 在软件工程中 压力测试
  • 数据采集才是MES系统的核心内容

    一 数据采集在MES管理系统中的应用 1 设备数据采集 MES管理系统通过与生产设备的连接 可以实时采集设备运行状态 产量 质量等相关数据 这有助于企业及时掌握设备运行状况 优化设备资源配置 提高设备利用率 2 工艺数据采集 MES管理系统
  • Linux 软件安装以及管理

    本篇主要记录常用的软件安装和管理方式 主要是 yum rpm dnf apt pip 大致都是一样的 主要是部分软件提供了解决依赖的功能 内容不包括源码安装 源码安装情况相对比较复杂 后续有时间再补充 约定 案例所用模板软件均为 pytho
  • nohup - 后台执行

    nohup no hang up 语法 nohup Command Arg 使用示例 nohup python a py 日志将被保留在 当前文件夹下的 nohup out 将日志放到文件 不输出到终端 echo hello gt 1 tx
  • 最佳利用Mock提升测试效率的7个技巧!

    再聊这个问题之前 我们先了解一下公司技术架构的演变过程 这样我们才能真正体会到我们为什么要使用 Mock功能 单体应用 在早期 大部分公司的应用技术栈主要可以分为两大类 LAMP Linux Apache MySQL PHP 和 MVC S
  • #私密朋友圈被吐槽有bug?官方致歉!网友:尴尬了......

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 2k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • VMware 最新版 - 虚拟机安装、激活、Centos安装、XShell 连接虚拟机、网络配置(全流程)

    目录 一 VMware 从安装到使用全流程 1 1 安装和激活 1 2 下载 Centos 镜像 以 7 为例 1 3 创建虚拟机 1 4 网络配置 1 5 验证网络是否可用 一 VMware 从安装到使用全流程 1 1 安装和激活 a 从
  • SRC漏洞挖掘经验+技巧篇

    一 漏洞挖掘的前期 信息收集 虽然是前期 但是却是我认为最重要的一部分 很多人挖洞的时候说不知道如何入手 其实挖洞就是信息收集 常规owasp top 10 逻辑漏洞 重要的可能就是思路猥琐一点 这些漏洞的测试方法本身不是特别复杂 一般混迹
  • RF自动化环境安装+自动化实例解析

    RF定义 通用型的 自动测试框架 绝大部分的软件的的自动化系统都可以采用它 特点 测试数据文件 Test Data 对应一个个的测试用例 测试数据文件里面使用的功能小模块叫关键字 由测试库 Test Library Robot Framew
  • 探索自动化测试断言:提升测试效率与质量的关键!

    前言 断言在自动化测试中起着关键的作用 它是验证测试结果是否符合预期的重要手段 如果在自动化测试过程中忽视了断言 那么这个测试就失去了其本质的意义 因为我们无法得知测试结果是否达到了预期的效果 因此 断言在自动化测试中的重要性不言而喻 那么
  • 短信系统搭建主要因素|网页短信平台开发源码

    短信系统搭建主要因素 网页短信平台开发源码 随着移动互联网的快速发展 短信系统已成为企业和个人进行信息传递的重要工具 建立一个高效可靠的短信系统对于企业来说非常重要 下面我们将介绍一些影响短信系统搭建的主要因素 1 平台选择 在搭建短信系统
  • 外包干了3个月,技术退步明显。。。。。

    先说一下自己的情况 本科生 20年通过校招进入广州某软件公司 干了接近3年的 功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了3年的功能测试 已经让我变得不思进取 谈了2年的女朋

随机推荐

  • IDEA 【基础】 javaweb项目中 将maven的jar包,复制到web项目的 lib 文件夹

    自己在做小型javweb项目的时候经常遇到这种问题 java lang NoClassDefFoundError 明明maven已经添加依赖了 而且项目里面可以正常运行 但是启动tomcat运行的时候 却运行不了 博主琢磨半天 了解到 第三
  • 深度学习实战项目(三)-行人检测重识别yolov5+reid(跑通+界面设计)

    行人检测重识别yolov5 reid 跑通 界面设计 参考源代码 github 权重文件 根据github上面的网盘进行权重下载 检测 将 ReID resnet50 ibn a pth放在person search weights文件下
  • One-Stage Visual Grounding(单阶段语言指示的视觉定位)论文略读_2019-2020

    One Stage Visual Grounding 2019 2020年论文略读 1 Zero Shot Grounding of Objects from Natural Language Queries 2019 ICCV 改进工作
  • Linux 查看显卡型号

    输入以下命令 lspci grep i vga 可以查看显卡型号 但是是一串数字代码 可通过PCI devices网站进行查询 结果如下所示 GeForce RTX 3060 Lite Hash Rate 即为显卡信息
  • 浏览器刷新、关闭页面与统计在线人数

    项目中可能需要统计在线人数 也可能需要在用户在退出时进行用户注销登录 既为统计实时在线人数 也为及时清理暂时不再使用的session 节约资源提高性能 对于以上的情况 若用户使用页面的注销按钮退出登录 那一定万事大吉了 当实际中这种可能性很
  • Java面试题(1)-J2SE基础

    最近在为自己实习准备 看了网上各种面试经验贴 也和身边的小伙伴一起参加了不少牛逼IT企业的面试 这篇文章就将面试遇到的一些比较常见的问题整理一下 给大家一些参考 也为自己整理整理 J2SE基础 1 九种基本数据类型的大小 以及他们的封装类
  • 猿创征文

    猿创征文 国产数据库实战 使用docker部署PolarDB X云原生分布式开源数据库 一 PolarDB X介绍 1 PolarDB X简介 2 PolarDB X特点 二 检查docker版本 三 检查docker配置信息 四 下载Po
  • redis集群原理

    redis是单线程 但是一般的作为缓存使用的话 redis足够了 因为它的读写速度太快了 官方的一个简单测试 测试完成了50个并发执行100000个请求 设置和获取的值是一个256字节字符串 结果 读的速度是110000次 s 写的速度是8
  • MySQL高频面试题

    文章目录 1 什么是MySQL 2 关系型数据库和非关系型数据库 3 数据库三大范式是什么 4 一条 SQL 查询语句是如何执行的 5 引擎 MySQL存储引擎MyISAM与InnoDB区别 MyISAM索引与InnoDB索引的区别 Inn
  • 哈夫曼树带权路径长度

    一 长什么样 左边是普通树 右边是哈夫曼树 图a WPL 5 2 7 2 2 2 13 2 54 图b WPL 5 3 2 3 7 2 13 1 48 可见 图b的带权路径长度较小 我们可以证明图b就是哈夫曼树 也称为最优二叉树 二 怎么生
  • Vue实现swiper轮播组件

    目前市面上有很多轮播组件 但是有的不满足业务需求 因此也需要自己首先轮播组件 以下是一个用vue实现的轮播组件 带动画效果 可以自行设置轮播速度 选择是否需要分页器等 效果如下 思路 结构 一个轮播组件应该由三部分组成 一是轮播的元素 如图
  • 如何在内存中执行二进制代码之win平台

    大家可能会很好奇 我们的任意exe程序 不就是在内存中执行的二进制机器码吗 不 今天我要说的是 我们如何把实现指定功能的一段二进制机器码 放到我们的程序中 然后在需要的时候 直接调用它 当然 这段代码也有其他用途 故而有了shell cod
  • 公众号分享

    配置 gt 登录公众号 gt 设置与开发 gt 公众号设置 gt 功能设置 gt js安全域名域名 gt 网页授权域名 1 先拿集成微信 js 路径写自己的 import wxshare from common js wxShareModu
  • 【树莓派之旅】第01期:一根网线搞定树莓派可视化界面

    一次偶然的机会接触到了树莓派 于是就购了一个板子 入手快两个月了 由于一直忙于工作的事情 所以也就没折腾 今天拿出来的时候发现要想把树莓派运行起来还需要一些其他外接设备 一时也没去某宝或某东上采购 就利用手头现有的资源玩一下 于是就有了此文
  • Sentinel实现动态配置的集群流控的方法

    这篇文章主要介绍了Sentinel实现动态配置的集群流控 本文给大家介绍的非常详细 对大家的学习或工作具有一定的参考借鉴价值 需要的朋友可以参考下 介绍 为什么要使用集群流控呢 相对于单机流控而言 我们给每台机器设置单机限流阈值 在理想情况
  • 部署 - 前端部署https服务,并配置安全证书

    项目中要实现跨tab复制 剪切 粘贴 所以涉及到操作剪切板的操作 选用了navigator clipboard 但是该api有必须在https的服务下才能用 所以就需要把项目部署城https服务 vue cli中可以配置webpack达到启
  • Android OkHttp源码阅读详解一

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到教程 前言 源码阅读基于okhttp 3 10 0 Android中OkHttp源码阅读二 责任链模式 implementation com
  • 注解实现CRUD

    CRUD 我们可以在工具类创建的时候实现自动提交事务 这个是在MybatisUtils工具类里面的弄的 public static SqlSession getSqlSession return sqlSessionFactory open
  • react 加粗_React入门的家庭作业(1-2)

    作业前准备 React在他的官网上挂了一个入门教程 是做一个xxoo棋的小游戏 在教程的最后留下了6个作业题 现在就来完成一下 准备材料 作业是在已完成教程的基础上做的 所以这里预设已经做好了环境部署 写好了游戏代码 如果没有 可以把这个复
  • 深聊性能测试,从入门到放弃之:性能测试技术栈,看完这篇,保证刷新你对性能测试的认知~~

    性能测试技术栈 1 引言 2 性能测试基础 2 1 性能测试理论 2 2 测试开发技能 3 性能监听诊断 3 1 前端监听诊断 3 2 服务器监听诊断 3 2 1 Linux 3 2 2 Windows Server 3 3 中间件监听诊断