性能测试技术栈

  • 1、引言
  • 2、性能测试基础
    • 2.1 性能测试理论
    • 2.2 测试开发技能
  • 3、性能监听诊断
    • 3.1 前端监听诊断
    • 3.2 服务器监听诊断
      • 3.2.1 Linux
      • 3.2.2 Windows Server
    • 3.3 中间件监听诊断
    • 3.4 持久化产品监听
  • 4、性能优化分析
    • 4.1 代码分析能力
    • 4.2 架构
    • 4.3 中间件性能分析
    • 4.4 操作系统
    • 4.5 数据库分析
  • 5、持续集成及工具
  • 6、总结

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上的耗时,
并针对性的优化对存储的访问(比如减少请求次数等)。
因为存储介质的性能是一定的,我们需要对依赖她的持久化产品做调优,比如:

  • MySQL数据库的慢查询;
  • Redis存储的键值长度等。

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

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

  • 性能测试理论知识
  • 性能监听诊断
  • 性能分析优化
  • 持续集成及工具

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

  1. 黑客零基础入门教程,从入门到精通学习路线规划,看完这篇就够了。

    很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习,最终也只是会无疾而终!黑客是一个大的概念,里面包含了许多方向,不同的方向需要学习的内容也不一样. 想要成为黑客,却苦于没有方向,不知道从何学起 ...

  2. 【ElasticSearch从入门到放弃系列 零】ElasticSearch看这一篇就够了

    大数据时代系统和业务每分每秒都产生成千上万的数据,其存储一定是不能通过关系型数据库了,当然因为数据的持久性也不能存储到内存型Nosql数据库Redis中,我们通常会将这些数据存储在能够不丢失数据的非关 ...

  3. 【算法入门】用Python手写五大经典排序算法,看完这篇终于懂了!

    算法作为程序员的必修课,是每位程序员必须掌握的基础.作为Python忠实爱好者,本篇将通过Python来手撕5大经典排序算法,结合例图剖析内部实现逻辑,对比每种算法各自的优缺点和应用点.相信我,耐心看 ...

  4. 关于做Kaggle比赛入门,看完这篇就够了

    PART 0 : Kaggle 介绍 Kaggle的数据挖掘比赛近年来很火,以至于中国兴起了很多很多类似的比赛 Kaggle 是一个数据科学竞赛的平台,很多公司会发布一些接近真实业务的问题,吸引爱好数 ...

  5. 神仙级Python入门教程(非常详细),从零基础入门到精通,看完这篇就够了

    一.初聊Python 1.为什么要学习Python? 在学习Python之前,你不要担心自己没基础或"脑子笨",我始终认为,只要你想学并为之努力,就能学好,就能用Python去做很 ...

  6. 黑客零基础入门教程及方法,从零开始学习黑客技术,看这一篇就够了

    黑客,对于很多人来说,是一个神秘的代名词,加之影视作品夸张的艺术表现,使得黑客这个本来只专注于技术的群体,散发出亦正亦邪的神秘色彩. 黑客源自英文hacker一词,最初曾指热心于计算机技术.水平高超的 ...

  7. RESTful从入门到熟练,看完这篇就够了

    学习要求 良好的java基础, 熟悉SpringBoot框架,熟悉SpringMVC框架 教学目标 掌握RESTful接口设计 视频教程 5小时带你入门到熟练RESTful接口设计 铺垫 先说明,本篇 ...

  8. 关于uni-app入门看完这篇就够了

    关于uni-app的入门 前言 这是一篇关于uni-app入门的文章,也是我对uni-app的总结与归纳,刚开始的时候在这个平台上面找寻同类型的文章的时候发现讲的都很片面不怎么详细,所以就写了一篇关于 ...

  9. 看完这篇文章,入门hadoop--这么细,你不看看?

    1.什么是hadoop 1.1 hadoop的简介 Hadoop是一个由Apache基金会所开发的分布式系统基础架构,一个能够对大量数据进行分布式处理的软件框架: Hadoop以一种可靠.高效.可伸缩 ...

最新文章

  1. c++ std::priority_queue优先队列
  2. Java RuntimeException异常处理汇总
  3. 视频压缩编码 gop(Group of Pictures)(I帧间隔)的概念、IDR、I帧(关键帧,intra picture)、P帧、B帧、帧内压缩、帧间压缩、pts(显示时间)、dts(解码时间)
  4. python pyqt5 窗体自适应_Pyqt5自适应布局实例
  5. 创建工程师文化的3个步骤 | IDCF
  6. html 垂直线代码,html – Bootstrap 3水平和垂直分隔线
  7. 基于visual Studio2013解决算法导论之019栈实现(基于数组)
  8. github怎么搜索开源的代码_5.2.PYTHON开发利器之使用VS Code+GitHub进行python开源项目开发...
  9. java.lang.VerifyError: Expecting a stack map frame
  10. Vs2012使用strcpy出错之解决方法
  11. java day57【 Spring 概述 、 IoC 的概念和作用、使用 spring 的 IOC 解决程序耦合 】...
  12. HTML 动画(一)
  13. QQ出现Initialization failure:0x0000005
  14. 牛刀小试imageROI
  15. 气传导耳机是什么原理?气传导蓝牙耳机优缺点分析
  16. PCA(主成分分析)
  17. HSV肤色侦测法去除背景
  18. zabbix微信告警(虚拟机脚本测试成功,zabbix上收不到信息)
  19. flexbuilder 开发工具
  20. 混音 文件 生成 linux,linux 混音

热门文章

  1. 互联网变幻莫测,如何在翻涌的浪潮中站稳?
  2. ubuntu 20.04 发送邮件 email smtp 163 ssmtp mailutils
  3. 在QT中采用多线程下载文件
  4. 什么是API测试?4种API自动化测试的好处
  5. 2D时间的陶笛,DIY街机橱柜等
  6. trip数据库学习总结2
  7. 计算机控制及系统仿真知识点,清华大学出版社-图书详情-《计算机控制技术与系统仿真》...
  8. [coreboot]coreboot porting for x86|Aaron Durbin
  9. 学习态度 学习目标 学习方向 思考方法
  10. Android获取物理键盘按键的keycode