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主要元件使用讲解
Jmeter接口测试+Jmeter性能测试项目实战+Jmeter性能监控分析调优01的更多相关文章
- Java虚拟机性能监控与调优实战
From: https://c.m.163.com/news/a/D7B0C6Q40511PFUO.html?spss=newsapp&fromhistory=1 Java虚拟机性能监控与调 ...
- Java生产环境下性能监控与调优详解视频教程 百度云 网盘
集数合计:9章Java视频教程详情描述:A0193<Java生产环境下性能监控与调优详解视频教程>软件开发只是第一步,上线后的性能监控与调优才是更为重要的一步本课程将为你讲解如何在生产环境 ...
- <JVM下篇:性能监控与调优篇>补充:浅堆深堆与内存泄露
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
- <JVM下篇:性能监控与调优篇>03-JVM监控及诊断工具-GUI篇
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
- <JVM下篇:性能监控与调优篇>01-概述篇-02-JVM监控及诊断工具-命令行篇
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
- JAVA性能监控与调优参考文档链接
JAVA性能监控与调优参考文档链接 jdk8工具集 https://docs.oracle.com/javase/8/docs/technotes/tools/unix/index.htmlTroub ...
- Java生产环境下性能监控与调优详解
1:JVM字节码指令与 javapjavap <options> <classes>cd monitor_tuning/target/classes/org/alanhou/m ...
- <JVM下篇:性能监控与调优篇>补充:使用OQL语言查询对象信息
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
- Linux系统CPU的性能监控及调优
前言: 性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢.接口超时,服务器负载高.并发数低,数据库频繁死锁等.尤其是在“糙快猛”的互联网开发模式大行其道的今天,随着系统访问量的日益增加和代码的 ...
- Java项目性能监控和调优工具-Javamelody的学习总结
1.简介: JavaMelody能够在运行环境监测Java或Java EE应用程序服务器.并以图表的形式显示:Java内存和Java CPU使用情况,用户Session数量,JDBC连接数,和http ...
随机推荐
- react快速创建组件
安装ES7插件 组件页面输入rcc
- 运行Java时报错:Error: opening registry key 'Software\JavaSoft\Java Runtime Environment'
卸载旧的JAVA JDK,安装新版的JDK时,运行cmd的java -version命令遇到这样的报错: Error: opening registry key 'Software\JavaSoft\ ...
- uniapp 返回上一页事件监听
需求 点击订单页---订单详情页----点击修改地址---来到地址列表,修改地址--- 成功以后返回订单详情页,并且更新界面数据 首先在订单详情页 设置事件 监听另一界面触发事件后 就会执行并 ...
- FPGA MIG调试bug(一)
目标器件:复旦微FPGA:JFM7K325T8FCBGA676(对标Xilinx Kintex-7系的XC7K325T) 工程背景:板载4片DDR(AllianceMemory_DDR3L_8G_AS ...
- c++获取类型信息
获取类型信息 typeid typeid运算符用来获取一个表达式的类型信息. 对于基本类型数据, 类型信息比较简单, 主要指数据的类型; 对于对象(类类型的数据), 类型信息指: 对象所属的类, 所包 ...
- Mac技术服务, 感谢 点赞打赏
首先,非常感谢大家对我的支持和鼓励. 如果需要单独解决Mac问题,您也可以选择付费服务,感谢大家的理解与支持! * 普通问题/软件安装:10元--100元每个(根据具体问题由您而定): * 普通问 ...
- windows下gitlab-ci.yml配置进入某一目录找不到,无权限
打开任务管理器查看gitlab-runner所使用的的用户 更改gitlab-runner服务权限, 找到gitlab-runner服务,右键-属性-登陆,选择[此账户]点击[浏览] 选择具有权限的账 ...
- shell脚本自动过滤尝试多次连接ip并添加到系统黑名单
#!/bin/bash cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c | awk '{{ print $2 " ...
- git commit提交代码时跳过 eslint校验
在使用命令 git commit -m '提交信息' 将本地代码提交到远程仓库时候, 如果项目安装了 per-commit,则会在Git键入提交信息前进行代码风格检查,如果代码不符合相应规则,则报错. ...
- 对于AF、RI、Safety from rep exposure、spec的归纳总结
每次写实验时,在写代码之前都要进行AFRISafety from rep exposure spec的编写,过程十分繁琐,但是也非常有用.根据他们写代码,不仅可以找到切入点,而且思路更加清晰了,避免了 ...