jmeter 系统的笔记整理【持续更新】
一、Jmeter 的目录介绍
-
bin目录:可执行的目录
jmeter.bat:windows的启动文件
jmeter.log:日志文件
jmeter.sh:Linux的启动文件
jmeter.properties:系统配置文件
jmeter-server.bat :windows分布式测试要用到的服务器配置
jmeter-serve:分布式压测要用到的服务器配置 -
docs目录:接口文档目录
-
extras目录:扩展插件目录
-
lib目录:所用到的插件目录,里面都是jar包,会自动在JMETER_HOME/lib和ext目录下寻找需要的类
-
liceses:jmeter证书目录
-
ptinrable_docs 用户使用手册
-
安装插件管理器
将plugins-manager.jar放到lib/ext下,然后重启Jmeter
二、录制工具
blazemeter
badboy
jmeter web代理
三、jmeter 默认内存分配
rem The following link describes the -XX options:
rem http://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html
if not defined HEAP (
rem See the unix startup file for the rationale of the following parameters,
rem including some tuning recommendations
set HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m
)
-
堆的内存分配用-Xms和-Xmx
-Xms分配堆最小内存,默认为物理内存的1/64;-Xmx分配最大内存,默认为物理内存的1/4。
-
非堆内存分配用-XX:PermSize和-XX:MaxPermSize
-XX:PermSize分配非堆最小内存,默认为物理内存的1/64;-XX:MaxPermSize分配最大内存,默认为物理内存的1/4。
四、插件
-
插件管理器
下载地址:
https://jmeter-plugins.org/install/Install/
下载一个jmeter-plugins-manager-0.16.jar
放到lib/ext目录下即可
-
python
jmeter-functions-execute-python-script-1.0.jar 在jmeter调用python函数 jython-standalone-2.7.0.jar JSR223 Sampler中使用jython shell
五、执行
jmeter -n -t <testplan filename> -l <listener filename>
参数:
-h 帮助 -> 打印出有用的信息并退出
-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
-t 测试文件 -> 要运行的 JMeter 测试脚本文件
-l jtl文件 -> 记录结果的文件
-r 远程执行 -> 启动远程服务
-H 代理主机 -> 设置 JMeter 使用的代理主机
-P 代理端口 -> 设置 JMeter 使用的代理主机的端口号
-j 日志文件->设置JMeter日志文件的名称
实例:
JMeter -n -t my_test.jmx -l log.jtl -H my.proxy.server -P 8000
jmeter -n -t D:\kangpc\share\jmeter\script\百度.jmx -l a.jtl
执行步骤:
JMeter 默认去当前目录寻找脚本文件,并把日志记录在当前目录。比如你在 C:\tools\apache-jmeter-2.11\bin 目录下执行以上命令,JMeter 会去该目录下寻找 test.jmx 脚本并把执行结果放在该目录。如果你的脚本在其他目录,而且想要把执行结果放在另外文件夹,可以使用绝对路径告诉 JMeter。
1. 同步/异步执行
2. sheduler
3. 请求出错后怎么执行
六、线程组的八类可执行元件
1. 配置元件(Config element)
用于提供对静态数据的支持,CSV data Set config 可以将本地数据文件形成数据池(data pool)
2. 定时器(Timer)
定时器用于操作之间设置等待时间,等待时间是性能测试常用的控制客户端QPS的手段,类似LR的thinktime,jmeter定义了Bean shell timer,固定定时器,高斯定时器,等不同类型的定时器
3. 前置处理器(Per processors)
用于在实际的请求发出之前对请求进行处理,URL的重写,url中有sessionid一类的session信息可以通过该处理器填充发出请求的实际sessionid
4. 后置处理器
用于对sampler发出请求后得到的服务器响应进行处理,一般用来提取响应中特定数据(类似LR中关联)
5. 断言(assertions)
断言用于检查测试中得到的响应数据是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中的数据交互是否与预期一致
6. 监听器
是用来对测试结果数据进行处理和可视化展示的一系列元件
7. 取样器(sampler)
取样器是性能测试中向服务器发送请求,记录详细信息,记录响应时间的最小单元,Jmter原生支持多种不同的sampler,每种不同类型的sampler可以根据设置的参数向服务器发送不同类型的请求
8. 逻辑控制器
逻辑控制器包括两类元件,一类是用来控制test plan 中sampler节点发送请求的逻辑控顺序的控制器,常用的有(if)控制器,switch controller,循环控制器,另一类,是用来组织可控制sampler节点的事物控制器,吞吐量控制器
七、作用域
-
8类可执行元件,sampler是不与其他元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效
-
jmeter中元件的作用域是靠测试计划的树形结构中元件的父子关系确定的,作用域的原则是:
-
取样器不和其他元件交互:不存在作用域的问题;
-
逻辑控制器(logic controller)元件只对子节点中的取样器和逻辑控制器作用
-
除取样器和逻辑控制器外,其他6类元件,如果是某个取样器的子节点,则该元件对其父子节点起作用,如果其父子节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点)
-
八、元件的执行顺序
配置元件-前置处理器-定时器-取样器-后置处理器-断言-监听器
执行顺序tip:
前置处理器,后置处理器,断言等元件功能对取样器起作用,因此,如果他们的作用域内没有任何取样器,不会执行
如果同一作用域范围内有多个同一类的元件,按照测试计划树依次进行