-
3.2.7 X3【控制器】
拿收邮件为例,只需要登录一次就可以查看多份邮件,如何控制登陆次数?可以参考JMeter中的逻辑控制器(后续说的控制器)。控制器的访问路径:【测试计划】——【线程组】——【逻辑控制器】,对它的认识如下图所示:
-
3.2.8、X4【定时器】
为了足够真实地模拟用户负载,我们有时会需要模拟一些请求在同一时刻发出去,就好像把大家集合在一条起跑线上,听指令,一声令响,同时起跑。结合的功能就可以由定时器来完成,它的访问路径为:【测试计划】——【线程组】——【定时器】,认识如下图示:
-
3.2.9、X5【线程组】
线程组用于模拟大量用户负载的情况,在此元件中可以设置运行的线程数(就是模拟多少用户,一用户一线程),其设置也较简单,除了设置线程数之外,还可以设置线程时长,定时运行,访问路径:【测试计划】——【Threads (Users)】,其认识如下图所示:
-
3.2.10、 Test Fragment
JMeter GUI菜单中可以看到Test Fragment 这个组件,它是一个辅助组件,它可以放置任何JMeter测试元件,它存在的理由:
(1)在脚本开发过程中可以用来备份元件;
(2)TestFragment 下的元件可以被模块化控制器调用,可以利用它来模块化请求,供模块控制器调用;
对它的认识如下所示:
-
3.2.11、工作台
它不直接参加运行,有间接作用。功能有:
(1)运行JMeter录制Http协议时就用到它,建立一个HTTP代理服务器元件,设置代理信息然后进行录制;
(2)设置服务器监控(HTTP Mirror Server),不建议使用此功能来做测试监控,出于对Jmeter负载产生影响去考虑;
(3)显示当前脚本;
JMeter的设计理念也是采用大多数性能测试工具的方式开发,方便进行扩展。
-
3.3、JMeter运行原理
JMeter是通过线程的方式来运行的,它运行在JVM上,因为通过进程的方式每个进程的开销比较大,每台负载机上的进程数量就不会允许太多,当需要大量负载机时,就不经济了。再者java支持多线程。它通过线程组来驱动多线程发起负载,jmeter的运行场景不仅仅是GUI,还有命令行,命令行对于负载机的资源消耗会更小;
(1)控制机:运用多台JMeter负载机进行性能测试时,被选中作为管理机的那台机器即是控制机;
(2)负载机:向被测试应用服务器发起负载的机器,控制机同时也是一台负载机;
(3)流程运行逻辑:
远程负载机首先启动Agent程序,待控制机连接;
控制机连接上远程负载机;
控制机发送指令(脚本及启动命令)启动线程;
负载机运行脚本,回传状态(包括测试结果);
控制机收集结果并显示;
-
3.4、JMeter测试计划要素
JMeter中一个脚本即是一个测试计划,也是一个管理单元。JMeter的请求模拟与并发数(设置线程数,一个线程代表一个虚拟用户)设置都在脚本文件中一起设置,测试计划要素如下:
(一)脚本中测试计划只能有一个
(二)测试计划中至少要有一个线程组
(三)至少要有一个取样器
测试的目的就是模拟用户请求,没有取样脚本就毫无意义,没有意义就不用谈论对错了。
(四)至少要有一个监听器
-
3.5、JMeter环境介绍
可以安装至windows或者linux系统上
1、安装
从Apache网站上下载二进制包.taz后缀名为Linux使用的包,.zip后缀名为windows使用的包,其在windows下的目录:
2、JMeter工具目录介绍
bin:放置各类配置文件(比如日志文件、JVM设置等)、启动文件(JMeter启动快捷方式,报告生成快捷方式、、Heap Dump快捷方式等 )、启动jar包、示例脚本等;
docs:放置jmeter API离线帮助文档,Web方式;
extras:JMeter辅助功能,提供与Ant、Jenkins集成的可能性,我们可以利用Ant与Jenkins来构建性能测试自动化框架。Ant可以利用xsl脚本把XML格式的测试结果以HTML方式展示,下图为xsl解析测试的结果:
lib:JMeter组件以jar包的形式放置在lib/ext目录下,如果扩展JMeter组件,扩展后的jar包即放在此目录下,如图3-20所示,JMeter启动时会加载此目录下的jar包;
license:JMeter licenses相关声明信息放在此文件夹,全部是文本文件,对测试没有实际意义;
printable_docs:JMeter的离线帮助文件放置目录,是我们学习它的向导;
LICENSE:License说明文件;
NOTICE:版权声明;
README:jmeter简明介绍;
3、环境变量
配置Java的环境变量,如下图所示:
4、启动
完成了上面的1,2,3步骤后我们就可以启动JMeter了,双击3-22中的jmeter.bat即可以启动JMeter,jmeter是Linux下的启动文件。
启动过程中屏幕一闪而过,多半是启动不成功,请检查你的JAVA_HOME配置是否正确;
如果出错,多半是加载lib/ext目录下的jar包出错了,经常是在扩展JMeter功能时出错,错误原因通常是依赖的jar包缺失。
-
3.6、JMeter与LoadRunner异同
1、两者的异同
(1)LoadRunner是性能测试的领袖,标准制定者;JMeter是后起之秀;
(2)LoadRunner主要是由C语言,支持Java、VB、C#;JMeter是纯Java开发,支持多种Java脚本语言;
(3)LoadRunner费用高昂,JMeter完全免费;LoadRunner学习成本更低;
(4)LoadRunner支持多种应用的性能测试,不管C、Java、VB、JavaScript、C#开发的程序、数据库、本地程序也好、远程调用也好;C/S还是B/S模式甚至移动端都可以不负使命来完成。JMeter虽然功能有限,不过还是可以通过编程来扩展。所以大家不要将扩展想的那么难,解决问题应该是我们的追求,这正是技术价值的体现,也是作为一个性能测试工程师的核心价值;
(5)LoadRunner的结果分析器十分强大,JMeter在第三方插件的扩展下也具备了与LoadRunner相媲美的体验;
(6)工具没有好坏,更在于使用的人,对于企业来讲,可靠、低成本地解决性能问题才是硬道理;
完结~