zoukankan      html  css  js  c++  java
  • Jmeter接口测试+Jmeter性能测试项目实战+Jmeter性能监控分析调优01

    Jmeter

    P1 性能测试关键指标

    1,这些指标大家看到后有什么感觉呢?对于功能测试,一般结果就两种,成功的或者是不通过的,有问题的和没问题的,有毛病的和没毛病的,比如打开网页,能打开就打开,打不开就打不开

    2,性能测试要更复杂一点,不能直接说行还是不行,要有一个参数,一个多维度的指标,来衡量他,比如说,快不快,强不强,好不好,对不对,所以说给大家总结一句话,就是,多快好省,

    3,多:能够支持最大的用户访问量,快,响应时间,好,持久运行,好,就是资源要省,然后再加一个思考时间

    4,对于指标的理解

    响应时间

    1.从用户的角度看软件的性能,第一个指标就是响应时间,下图中网络处理时间是N1,N2,N3,服务器处理时间A1,A2

    如果数据服务器和数据库服务器放在一台电脑上,那么N2和N3就可以基本上认为是没有了,就是程序之间的进程通讯了,本台电脑之内的交互了,就不通过网络了

    2,所以我们这儿说的响应时间,指的是端到端的(重点)

    3,测试工程师要关注所有的时间,那网络时间怎么计算,ping一下就知道了

    4,这个时间不是绝对的,但是通常一个WEB系统都是这样的,经验之谈,别人的测试结果

    并发用户数

    1,注册用户数也会有影响,不会更大,就好比一个大的麻袋,里面放了很多东西,从里面去捞出来一个东西会更慢

    2,会影响到磁盘空间上面,存储上面,还有内存,CPU也会

    3,系统注册用户量,第一个影响是磁盘,磁盘的空间满和空,对系统查询影响是很大的,所以系统性能测试之前,要初始化环境,没有做初始化系统的性能环境等于没有作用的环境

    4,一转身就牵手,后者要打电话发短信,哈哈

    5,初始化还要考虑网络

    6,那么问题来了,我不可能测试的时候,这个电脑在美国,另外一个电脑背到加拿大部署环境,那要怎么办呢?找运维,Linux系统内防火墙注入延时的方法,或者windows,网上很多方法,可以用命令,也可以用工具,

    7,关键是不知道,知道后有一万种解决方案

    8,数据库就是dump进去,不需要知道信息,知道是敏感数据,那就知道数据结构,知道量就好了,实在不行找开发写个脚本了,这个一定要知道,不用也可以用来吹牛

    9,以上两个是最实用的,最常见的

    10,在线用户数,和哪个指标关系最大?内存,在线的数据放在哪里的?12306是哪个公司帮他架构的?阿里巴巴,请了几个大学生

    11,web-session是放在内存里的,要保存在线状态,是放在内存里面的

    12,性能就是木桶里面挑选短

    13,如果这个用户啥也不干,那CPU基本不会轮询到他,切换的非常得快,看你没动作,他很快就切走了

    14,初始化环境:warm up所谓的热机,就是让这些用户跑进去,把内存填起来,不要为空,

    15,热机两个作用,让你的系统接近正在运行的系统,第二个,让你的系统查询速度更快,组成原理:磁盘到内存的过程,从内存里面拿数据很快的,从来没有跑过的系统,从磁盘拿数据会很慢的

    16,热身是让内存接近现实场景,更加精准

    17,热机做呢,先用jmeter轰一下嘛,先跑一下就行了

    18,下一个是并发用户数,并发用户数就是严格意义上的秒杀了,同时在线做一件事情

    19,并发用户数可以分为两类,一类是严格并发,一类是广义的并发,严格并发是所有的人在同一时间做同一家事情

    20,做一个操作还是分布在做不同的操作,平时有秒杀的有查询的,不同的jmeter去轰热他

    21,性能测试肯定不止一个,不可能所有的用户在做相同的操作

    1,并发用户数的计算公式,这个公式不是绝对的,只是说给大家一个参考,但是不可以完全依赖于他

    例子,工作中可以用它来估算一下

     

    性能拐点

    吞吐量 

    1,一个小时内,系统可以让10000个用户进行访问,这是吞吐量,吞吐率就是把单位时间变更1S

    2,一般用请求数比较多

    3,一个简单的计算公式

    4,用户数无论怎么增加,用户数也不再增加,说明饱和了,饱和就说明到性能瓶颈了,这时候再往上加也没有用了,相当于瓶子装水满了,饱和了,

    5,怎么办呢,是要加一套服务器嘛,还是内存满了,CPU满了,还是磁盘满了,资源监控了

    6,一般来说吞吐量饱和一般都是网络原因,CPU和内存,不会一条线这么的绝对化,他会有一个波浪,网络一般就是拥塞掉了,要增加带宽了

    带宽不够,他丢包了,因为网络丢包是很无情的,满了就丢,满了就丢,丢完就不会再捡起来了

    7,因为如果内存满了,它还可以和磁盘交换,交换空间,还可以震荡一下,CPU也是会震荡的

    8,一般一条线的就是网络,后面我们讲了网络命令就可以监控这些的,阿里云上面都有dashboard这种表格的,曲线图的,以后会讲到的

    性能计数器,就是资源使用率

     思考时间

    1,比方说发一条消息,等一会儿再发一条,这样模拟用户的行为,更加真实

    阿里云监控平台

    现在得服务器一般都提供了这种云平台的,他都提供了这种监控平台的

    P2 Jmeter工具环境的搭建与实战

    1,今天主要给大家讲jmeter工具从搭建到运行,包括在Jmeter里面有些不常见的但是用的很多的功能,

    2,这是本次课的课程体系,今天主要讲解快速入门

     

    3,本节内容,简介,这个工具为什么行业里面用的比较多,

    4,先看第一小节,工具简介,行业里面工具基本就是loadrunner,Jmeter,还有一个叫做locust,可能是Python写的

    5,为何选择Jmeter,loadrunner报价,当时是从14万到80多万,当时去买那个许可,大概里面有六个档位,最便宜的是14万的,每个价格对应的服务是不一样的

    6,可想而知,一个工具大几十万,甚至上百万,一些小公司根本买不起的,所以呢这个工具一个是价格贵,再有一个就是本身系统安装运行起来,很多系统会存在兼容性的问题,他支持的比较好的就是win7和XP比较好,稍微高一点的版本要用loadrunner12才可以

    jmeter简介

    1,Jmeter起来之后就是起了一个Java进程,这个进程起来之后,可以支持创建多个线程,想象高速公路

    2,模拟用户数,一个是线程级别的,一个是进程级别的,行业用的比较多的是线程级别的

    Jmeter的运行环境搭建

    1,只要下载就可以,养鱼需要环境,Jmeter就是需要Java环境

    2,打开官网,一般不会用最新版,除非这个最新版的新功能非常的需求

    3,JDK是带开发工具的,

    4,这个运行Jmeter乍一看挺简单,但是仔细去深究一下,发现里面还是有很多知识点的

    5,几个比较重要的文件

    6,如果通过分布式用的话,需要Jmeter-server,

    7,什么是分布式呢?一台电脑可以承受的用户数有没有限制,有限制,我们都知道Jmeter是Java进程,每个进程会消耗一定的内存,所以我们在打开Jmeter的时候,会有一个默认的堆内存,堆内存就提供Java进程使用的一个空间

    8,但是我们Jmeter是Java一个进程,需要消耗一定的内存资源,这个内存叫做堆内存,所以可以虚拟多少个用户数,由两个地方决定,一个是本机的物理内存有多大,另外一个是给Jmeter这个进程的内存有多大

    9,如果你物理内存是32个G,但是只给Jmeter1个G,他创造不了多少用户的

    10,还有个问题,除了内存,还有端口号,端口号够用吗?并不是内存大了,就一定能够可以创建很多用户,他会消耗一定的端口号的,如果端口号分配不均匀或者不合理得花,也会让你的机器打不到很好的发挥的

    11,所以不是说虚拟5000个用户,就搞一台很牛的机器,不是的,这时候还需要多台机器,就做分布式

    12,通过主从,这是高级的课程,正常性能测试一定会用到分布式的,本次课程没有用到,用户负载,就是分布式

    13,添加环境变量

    14,环境变量设置完之后,重新打开CMD

    15,启动的时候,win10 和win7有点区别,win10启动一些东西特别慢

    16,为什么从这儿启动,而不是从目录里面启动,因为Jmeter很多时候会有命令行模式的,这个必须得会,为了方便以后用

    17,这儿的1G是不需要修改的,改了也不起作用,HEAP= xms1g

    Jmeter基本使用

    1,我们下面看一下Jmeter的基本操作,老师用的是比较传统的灰色的底色,他不喜欢用黑色的,大家可以看到这个工具有非常多的东西

    2,很多黑丝的很绚,但是如果把某些组件禁用掉得花,根本看不出来的,但是灰色还是可以看的出来的

    3,自动化测试时很大的,包括功能自动化,也包括性能自动化

    4,菜单栏第一个选项,模板,模板用的比较少,因为用的都是HTTP的,当某些请求你没用过怎么办呢?比方说想写一个 beanshell的请求,想写一个JDBC的,

    5,网上有没有参考资料,没有模板,也没有文档,没有关系,Jmeter他提供了这些模板,就可以用模板了

    6,第二个,编辑,注意启用和禁用

    7,第四个‘运行’,特别重要的,这里面远程最多,远程意味着这个Jmeter可以分布式

    8,就是我如果去做性能测试,如果本机的机器性能不够多,不够优化,配置不好得话,我们可以用其他机器去跑,

    9,那问题来了,脚本怎么传输呢,这个其实不用担心,Jmeter会自动把脚本传输到另外一台机器上面,脚本不需要同步的,你只要管理好主机从机,让主机控制从机去运行

    10, 远程会涉及到参数化,有几分文件,内容怎么分派,放到哪个目录?

    11,选项,这一块儿就是选项外观或者原型的设置

    12,这儿的语言设置是临时的,那怎么设置永久的呢?Jmeter.properties

    13,第37行,保存之后,重启Jmeter,里面还有一些其他的设置

    14,如果要做分布式,这儿需要设置,不设置是无法分布式的

    15,Tools,里面的创建HTML报告

    16,

    17,聚合报告

    18,90% line的解释

     19,setup线程组和teardown的区别,放在哪儿无所谓,总是第一个和最后一个运行

     

    20,如果大家不了解什么叫做分布式的话,一定要去了解的,工作里面一定会用到

    P3 Jmeter脚本开发实战

    1,我们上次课讲了快速入门,Jmeter如何启动,以及分布式的基本逻辑,今天继续课程,脚本开发,比较重要

    2,性能测试里面脚本开发不难,不重要,但是需要理解,不然后面跑场景是有问题的

    3,脚本开发这一块儿,我们分三小节来讲解

    什么是Jmeter脚本呢

    4,作为一个测试人员来说,前期一般都是功能的,功能是所有测试的基本,我们做性能前,功能肯定是OK的,

    5,功能测试和性能测试的区别是什么?功能测试只需要一个用户就可以了,性能需要N个用户

    6,脚本开发一开始都是从1个用户开始跑的,一个用户跑通之后,再去跑性能测试

    快速开发漂亮的脚本

    1,开发脚本的标准,第一步就是调通,写脚本其实不是罪重要的,最重要的是在监控,分析,调优,这些是最重点的,也是最能体现能力的

    2,国内有个现象就是前面的开发占用了太多的时间,留给测试的时间就很少了,随便冒个烟就可以了,或者随便测几个功能就可以了,火急火燎上线了,上线之后呢,那个晚上一帮人睡不着觉,为啥呢? 拼命的调,各种问题,平时好好的又没有测完

    开发脚本方案

    1,我们脚本开发的时候,有一些要求,下面我们看一下,该如何去做到脚本的开发呢

    2,在目前的行业里面,开发的几个方案就那么几个,第一个,代理“剑”,其实我建议大家最规范是有文档,有文档写什么都方便

    3,叫做文档化,为何不单独拿出来讲呢?文档化并不是每个公司都有的,有的公司开发都没有文档,更不要提测试了,很多公司就是,叫你测试,你就是写文档的人

    4,没有文档得话,需要抓包去抓,来写文档的,一般正规的流程是有文档的,非常详细的,而且都是校验过的文档

    5,文档如下,文档最好还是写一下,不然的话,你不写,这个项目过一段时间在维护,没人知道

    6,如果就是没有文档 ,有什么方案帮助大家快速开发脚本呢?最合适的方式是文档+fiddler抓包,是最靠谱,最快速的方式

    7,通过fiddler抓包,我们文档有些请求,有时候你写不出来,或者是看到文档也写不好,可以通过fiddler抓包,去看一下他是怎么构建的,都是OK的

    8,下面讲一下,在工作中和面试的时候,对脚本开发有什么要求呢?

    9,一般自动化的脚本,或者性能测试脚本都有一个功能叫做record录制,录制功能得话,第一个方法是通过Jmeter代理来录制的,Jmeter本身他有一个代理服务器的设置,他可以帮助你录制脚本的,但是这个脚本录制有一个特点,录制完之后会特别乱,

    10,一般来说一个项目,你用这种录制方式写的脚本都是需要调试的,而且这个调试的工作量也不小

    11,代理录制的方式,大家理解原理吗?给大家讲解一下原理,Jmeter本手有一个代理服务器的元件

    12,什么叫代理呢?基本上抓包工具和工具自带的录制,都是做代理的,这个代理的概念还是要理解的,如果了解之后,像fiddler这种转包工具的原理就都清楚了

    13,你的请求和响应都会在代理服务器里面全部捕获到,fiddler和Jmeter代理录制的方式都是一模一样的

    14,脚本开发,除了规范的文档+fiddler ,第二种方法就是录制了,录制的方法有很多种,所有的录制都是辅助脚本开发的,不要把整个录制当成主流的,因为很多时候有文档,有fiddler就能搞定的,哪些搞不定的,可以用录制,看看他怎么写的,你再怎么写

    15,如何设置Jmeter代理呢?手下所有的脚本运行前都需要保存,所有的脚本不要放在桌面和bin下面

    16,第一步条件线程组,第二部添加“HTTP代理服务器”

    17,HTTP代理服务器如何设置呢?目标控制器,否则不选择得话,有时候会没有脚本的

    18,浏览器不设置得话,他是不会访问我们的代理服务器的,所以的我们先去浏览器设置代理

    19,为何这儿的代理是开着的呢?以为老师打开了fiddler,fiddler会自动把这个代理打开得,不需要我们去手动设置

    20,切记,如果不开抓包工具得话,这儿是关着的

    21,启动代理服务器,才可以通,代理服务器在哪儿呢?我们这个脚本能是通过Jmeter自带的代理服务器来录制的,所以代理就是Jmeter本身

    22,点击启动之后点确认就可以了

    23,点击确认之后,这个框留着不要叉掉

    24,这时候再次访问就打开了

    25,输入账号密码,点击登录,登录成功之后,点击停止代理服务器,这个脚本就录制好了

    26,录制的脚本如下,所有的请求他都帮你抓到了

    27,但是你会发现,这个录制非常的粗糙,特别的粗糙,而且里面有很多的静态资源,比方说图片的,CSS的,那这个是看不出来的,所以录制是一种辅助功能,要完全靠他来实现脚本开发是不太现实的,要调试的,如何把这些没有用的静态资源屏蔽掉呢?

    28,过滤掉,排除模式

    29,再次登录,抓包,结果好了很多,找哪个接口,找就好了,一般的fiddler抓包工具都能做过滤的,如果不过滤的话,太麻烦了

    30,版本请大家不要用Jmeter2,或者是3好嘛,太老了,很多东西不支持,而且乱码特别严重,建议用5.1的版本,也不要用太新的,这个比较稳定。

    31,以上就是代理服务器的录制方法,总结下就是浏览器的设置,第二部就是Jmeter代理服务器的设置,虽然步骤比较麻烦,但是他是原生态的,Jmeter自带的录制功能

    32,第二种录制方法,badboy录制,现在如果去很多网站去应聘工程师,如果他带有性能工程师的,有时候会提到这个badboy,这个坏男孩是个录制工具,但是现在基本上不怎么用了,以前前五六年的时候,还有很多同事在用的

    33,现在不怎么用,是因为这个Badboy哥们已经不更新了,而且不是很友好做起来,虽然简单,但是这个页面化不太好看

    34,所以如果有公司问你这个,你可以说,我了解过,但是我不用这个,我用其他方式来做,所以这个方式我们了解一下就好了

     35,方案三,fiddler,熟悉吧,fiddler是一个抓包工具,大家可能疑问,抓包工具和录制有什么关系呢?有关系哈,他也可以做录制的,除了抓包,还可以把抓包的会话,转化成我们的JMX文件,可以转化的

    36,fiddler原理的话,大家都知道了吧,我就不讲解了,

    37,fiddler有个特点就是,他会在你打开fiddler的那一刻,会自己启动一个代理,所以一般不需要手动设置代理

    38,所以在打开fiddler之前,我们先去浏览器把代理关闭,那下面我们来看一下,fiddler是如何操作的,fiddler操作其实是简单粗暴的,只要双击启动这个哥们就可以了

    39,把想要抓的网站写进去,不然他会抓很多乱七八糟的网站的

    40,设置完成之后,点击run filterset now

    41,fiddler怎么抓包呢?设置好之后,访问就可以了

    42,所以最实用的方式不是录制,而是文档+fiddler抓包的方式,如果说我们的文档描述不够细致,或者出现和你的期望的有点偏差,我建议你们不要去问,自己抓包试试看,抓不清楚再去问开发,否则一点小问题,找别人也是麻烦

    43,咱们有工具可以验证下,我们一切以抓包为准,如果我们抓包抓到的数据,和文档写的有出入得话,可以和他讲下,对照着fiddler的响应看看Jmeter的响应,如果返回的是一样的,就说明是没有问题的

    44,那么fiddler抓完包之后,如果转出我们对应的脚本呢?

    45,可以选择导出的格式

     

    46,这个就是导出的文件,直接拖拽就可以了

    47,导进来之后,和抓包抓的结果是一样的

    48,讲过这些之后,下面我们利用十分钟,给大家做一个案例

    49,如果登录需要TOken怎么办,这个也不难,如果登录需要TOKEN得话,那你一定需要一个获取TOKEN的接口,一定的,否则TOKEN从哪里来的呢?因为TOKEN本身是个令牌嘛

    50,他一般是关联接口,一个TOKEN是通过接口获取的,另外一个是使用TOKEN的接口

    51,看以上的接口,它是一种什么类型的接口呢,在我们性能班里面我们会讲解很多接口,会讲解HTTP接口,WEBSEVER接口,还有 websocket接口,还有我们的tcp接口

    52,我么不光只做HTTP接口,现在有一些银行,包括一些政府单位,他做的是webserver接口的,websocket一般就是物联网的,只能家居或者是物流公司的才会有这种协议

    53,复制路径的时候,不要多出空格,写法和抓包是一样的,直接复制粘贴过来就可以了

    54,添加请求头,注意作用域

    55,不要一味的求快,要求稳

    56,

    57,如何提取token呢,如果数据是json的不要用正则,用这个表达式更简单,错不了,而且更加清晰

    58,好了token获取到了,在后续的接口中,我们需要获取这个token该怎么办呢?比方说新增用户接口,这样就不用正则表达式关联了,黑猫白猫抓到老鼠就是好猫

    59,不用正则,推荐使用json提取器,自己开发为主,录制为辅

     

    60,变量名自己定义,表达式就是刚才的$TOKEN 哪个表达式就可以了

    P4 JMeter主要元件使用讲解

  • 相关阅读:
    【U-Boot】建立U-Boot编译环境
    【电路】JTAG下载器研究
    【FPGA】Xilinx-7系的时钟资源与DDR3配置
    【电路】KiCad-Pcbnew-建BGA形式的Footprint
    【电路】KiCad-Eeschema-建BGA形式的Symbol
    【电路】差分接口互连(二)
    【电路】差分接口互连(一)
    【电路】pmic芯片设计细节
    【电路】PADS建库细节
    【电路】SPI接口细化&控制
  • 原文地址:https://www.cnblogs.com/lisa-blog/p/14288165.html
Copyright © 2011-2022 走看看