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

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

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐