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主要元件使用讲解

最新文章

  1. vbs 中文字符串
  2. java中泛型上限,下限应用
  3. 学习一下《JavaEE开发的颠覆者 Spring Boot实战 》
  4. nginx+tomcat集群配置(4)--rewrite规则和多应用根目录设定思路
  5. QlikView TEXT控件固定显示图片
  6. Centos 6.5 下安装socket5代理
  7. C# DevExpress 的gridControl或gridView数据导出失败解决方法
  8. ansible 使用方法
  9. Spring MVC Junit4 单元測试 JunitTest
  10. tomcat根据繁忙线程数对keepalive进行动态调整
  11. Steam游戏黑屏与游戏直接安装方法
  12. HDU 1756 Cupid's Arrow 判断点在多边形的内部
  13. poj 3230 Travel(dp)
  14. [.Net跨平台]部署DTCMS到Jexus遇到的问题及解决思路---Linux环境搭建
  15. Android查缺补漏(View篇)--事件分发机制
  16. Android 初了解
  17. C++ explicit关键字详解(转载)
  18. Git Gerrit使用
  19. TestNg 8.参数化测试 - xml
  20. NOIP初赛知识点

热门文章

  1. 【Java-01-3】java基础-基本语法(3)(数组,多维数组)
  2. Linux操作命令(九)1.comm命令 2.diff命令 3.patch命令
  3. 01-搭建小巧完善的Kubernetes环境
  4. Centos7 MyCat2 安装部署
  5. Python基础语法复习笔记(一):字符串
  6. 以图搜图功能实现(windows10版)
  7. (pymssql._pymssql.OperationalError) (8152, b'String or binary data would be truncated.DB-Lib error message 20 018, severity 16:\nGeneral SQL Server error: Check messages from the SQL Server\n')
  8. 流(stream)如何理解?
  9. Workbench download Document
  10. 集成mupdf实现手写笔签批应用