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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 深聊性能测试,从入门到放弃之:性能测试技术栈,看完这篇,保证刷新你对性能测试的认知~~

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我,所以就…关键解答完,还有彩蛋…

我们再回顾一下,性能测试的技术栈,也就四部分内容,每个模块,都有专门的博文,

所以,不会的小伙伴,可以直接跳转到对应的博文,详细阅读哦!

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
2月前
|
JavaScript jenkins 测试技术
这10款性能测试工具,收藏起来,测试人的工具箱!
这10款性能测试工具,收藏起来,测试人的工具箱!
|
4月前
|
测试技术
性能测试和负载测试的区别
性能测试和负载测试的区别
|
5月前
|
JSON 测试技术 API
『Postman入门万字长文』| 从工具简介、环境部署、脚本应用、Collections使用到接口自动化测试详细过程
『Postman入门万字长文』| 从工具简介、环境部署、脚本应用、Collections使用到接口自动化测试详细过程
78 3
|
11天前
|
消息中间件 网络协议 物联网
如何入门做物联网系统压测?
【4月更文挑战第18天】物联网系统在架构、网络模式、通信协议等方面与传统的互联网系统有所区别。因此,传统的性能测试方法不能直接套用到物联网系统中。
89 13
如何入门做物联网系统压测?
|
24天前
|
人工智能 分布式计算 Kubernetes
人工智能,应该如何测试?(三)数据构造与性能测试篇
本文探讨了人工智能场景中的性能测试,区别于传统互联网测试,其复杂性更高。主要关注点包括两类AI产品——业务类和平台类,后者涉及AI全生命周期,测试难度更大。测试重点是模型训练的性能,特别是数据模拟。需要构造大量结构化数据,如不同规模、分布、分片和特征规模的数据,以评估算法效率。此外,还涉及模拟设备规模(如视频流)和节点规模(边缘计算),以测试在大规模负载下的系统性能。文中提到了使用工具如Spark、ffmpeg、流媒体服务器和Kubernetes(K8S)的扩展项目,如Kubemark,来模拟大规模环境。最后,文章介绍了使用Golang进行异步IO操作以构建海量小文件,优化IO性能。
48 0
|
2月前
|
存储 Android开发 C++
【Android 从入门到出门】第五章:使用DataStore存储数据和测试
【Android 从入门到出门】第五章:使用DataStore存储数据和测试
41 3
|
2月前
|
存储 SQL 数据库
【Android 从入门到出门】第六章:使用Room数据库并测试
【Android 从入门到出门】第六章:使用Room数据库并测试
31 4
|
3月前
|
弹性计算 测试技术 数据中心
阿里云香港服务器BGP多线精品网络_CN2性能测试_中国香港主机测试
阿里云香港服务器BGP多线精品网络_CN2性能测试_中国香港主机测试,阿里云香港服务器中国香港数据中心网络线路类型BGP多线精品,中国电信CN2高速网络高质量、大规格BGP带宽,运营商精品公网直连中国内地,时延更低,优化海外回中国内地流量的公网线路,可以提高国际业务访问质量
|
4月前
|
Web App开发 前端开发 测试技术
性能测试分层模型以及前端性能测试工具介绍
性能测试分层模型以及前端性能测试工具介绍
|
4月前
|
Java 测试技术 API
【Java技术深入解析】「核心技术提升」最流行的Java模拟框架Mockito入门指南(Java单元测试)
还在使用 Mockito 1.x?看看 Mockito 2 有哪些新功能!Mockito 3 没有引入任何破坏性的 API 变动,但现在需要 Java 8 而不是 Mockito 2 的 Java 6。 Mockito 4 删除了过时的 API。Mockito 5 将默认 mockmaker 改为 mockito-inline,现在需要 Java 11。一次只支持一个主要版本,而且不会向旧版本回传更改内容。
69 0
【Java技术深入解析】「核心技术提升」最流行的Java模拟框架Mockito入门指南(Java单元测试)