想用好JMeter,下面的内容你应该要掌握的:
1、快速搭建JMeter环境
2、JMeter安装包目录说明
3、JMeter实用菜单功能介绍
4、JMeter常用调试脚本方法
5、JMeter 运行逻辑
1、快速搭建JMeter环境
步骤1:安装JDK
- 到Oracle官网下载JDK(Java Downloads | Oracle)
- 安装JDK后,配置JAVA_HOME环境变量
步骤2:下载JMeter包
从官网下载(http://JMeter.apache.org/download_JMeter.cgi),(Windows版本下载.zip,Linux版本下载.tgz),直接解压就可以使用了。解压后目录如下:
步骤3:启动JMeter
进入/bin文件夹,双击下面图中 JMeter.bat 或者 ApacheJMeter.jar 都可以启动JMeter,其中JMeter.sh 是Linux下的启动文件。
2、JMeter安装包目录说明
backups
jmx脚本备份文件夹,当在JMeter上添加、删除任何一个部件时,会自动保存一份jmx脚本到该目录下。当实际工作中,修改后的文件报异常无法修复时,选择一份合适的jmx脚本进行回滚。
bin
放置了各项配置文件(比如日志设置、JVM设置等)、启动文件(JMeter启动快捷方式,报告生成快捷方式,Heap Dump 快捷方式等)、启动jar包,示例脚本等。
docs
放置了JMeter API离线帮助文档, Web方式
extras
JMeter辅助功能,提供与Ant、Jenkins集成的可能性,我们可以利用Ant与Jenkins来构建测试自动化架构。Ant可以利用xsl脚本把XML格式的测试结果以HTML方式展示。
lib
JMeter组件以jar包的形式放置在lib/ext目录下,如果我们要扩展JMeter组件,扩展后的jar包即放在此目录。JMeter启动时会加载此目录下的jar包。JMeter依赖的一些基础包放在lib跟目录下,比如我们扩展了Java请求,这个扩展是为了完成我们特定的任务,而这个特定的任务程序需要依赖其他的jar包,那么这些jar包就放置在lib根目录下。JMeter支持运行Junit测试类,其测试包放在lib/junit目录下面。
licenses
JMeter licenses相关声明信息放在此文件夹,全部是文本文件,对测试没有任何实际意义,可以忽略。
printable_docs
JMeter离线帮助文件放置目录,是我们需求JMeter的绝好向导。
LICENSE
License说明文件。
NOTICE
版权声明。
README.md
JMeter简明介绍。
3、JMeter实用菜单功能介绍
工具栏 -> 切换(*切换置灰状态组件将不会执行),
选中元件(例如:测试计划、线程组、请求体、JDBC Connection Configuration等等,任何元件)点击【切换】或者Ctrl + T都会被置灰,即被注释了。运行时,将不会被执行。
工具栏 -> “清除”和“清除全部”以及“重置搜索”(*调试脚本时常用)
框住的这三个按钮:
清除:清除选中线程组内的测试结果
清除全部:清除全部的测试结果和JMeter日志内容
应用场景1-【搜索后如何清除红色方框】:
如果Ctrl + F或者查找时。会出现如下截图,点击【清除全部】后红色方框和蓝色方框都会被消除。
工具栏 -> 右上角功能
如上面截图所示:
00:00:21 代表JMeter总运行时间,在运行jmx脚本时,可以观察这里来判断运行时间,也可以判断JMeter是否有运行异常。
点击黄色填充的“三角形”按钮,直接弹出JMeter的日志输入内容,是定位错误的重要途径,已经调试Beanshell脚本的重要手段。后面Beanshell会详细讲解。
“三角形”右边的0代表JMeter运行是否有错误,即erro日志。如果触发一个错误,该次会叠加记录1次。下面截图代表有24次执行错误。
4、JMeter常用调试脚本方法
JMeter运行jmx脚本的时候,会产生很多数据,并且会产生运行的结果。捕获到这些运行数据和运行结果,对我们操作JMeter是非常重要的。
捕获JMeter运行结果
这里先介绍“察看结果树”和“聚合报告”
捕获JMeter运行数据
察看运行中生成的变量,使用【调试取样器】
察看beanshell运行中的变量,使用log.info("")
5、JMeter 运行逻辑
如果没有对JMeter 元件的运行先后顺序有一定了解,那么是玩不明白JMeter,可想而知JMeter 元件运行顺序是多么的重要。
总的来说,在同一作用域范围内,测试计划中的元件按照以下顺序执行:
①配置元件(configelements)
②前置处理程序(Per-processors)
③定时器(timers)
④取样器(Sampler)
⑤后置处理程序(Post-processors)(除非Sampler得到的返回结果是空)
⑥断言(Assertions)(除非Sampler得到的返回结果是空)
⑦监听器(Listeners)(除非Sampler得到的返回结果是空)
详细的运行顺序如下图:
如下面截图的例子(例子JMeter脚本可在下面百度网络取,注:脚本时JMeter5.0版本的):
链接:https://pan.baidu.com/s/1QpZMOuiTWngiwvcgu3fgAA
提取码:6666
截图说明的运行逻辑:
a、【配置元件】 无论位置放在哪里,都会一同执行
“用户定义的变量(原件1)”设置变量 原件1=aa
“用户定义的变量(原件2)”设置变量 原件1=bb
“用户定义的变量(原件3)”设置变量 原件1=cc
“如果(If)控制器”中设置条件 ${__jexl3("${原件1}"=="xx",)},如果是按顺序执行的话,变量 原件1最终值=bb的,实际上原件1最终值=cc
b、总的运行顺序按照:
1.-> 测试计划
2.-> 线程组a、线程组b
3.-> JDBC Connection Configuration(新)、用户定义的变量1、用户定义的变量(原件1)、用户定义的变量2、CSV 数据文件设置3、用户定义的变量(原件2)
4.-> 同步定时器
5.-> JDBC Request4、调试取样器
6.-> BeanShell 预处理程序5
7.-> 察看结果树