版本:https://jmeter.apache.org/download_jmeter.cgi
历史版本:https://archive.apache.org/dist/jmeter/binaries/
windows下载安装apache-jmeter-X.X.X.zip即可,解压后进入Jmeter的bin文件夹,windows双击jmeter.bat启动jmeter。注:如有问题可能是Jmeter版本和jdk版本不匹配导致
2.Config element
*1.CSV Data Set Config
路径:右击线程组-add-Config element-CSV Data Set Config
例子:可以用于登录的参数化
1.将用户名和密码录入在users.csv文件,如图
2.CSV Data Set Config的属性配置
Filename:csv文件的名称及存放路径
File encoding:文件的编码格式,默认为空,可写utf-8
Variable Names:定义csv文件中的参数名
Ignore first line:忽略第一行(仅使用变量名不是空的)----默认为false
Delimiter:分隔符---每个参数变量之间的分隔符号,一般默认使用逗号,如此例子的userName,password,分隔符即为“,”
Allow Quoated data: 是否允许引用数据引
Recycle on EOF: 文件结束循环----设置为True后,允许循环取值
Stop Thread on EOF: 文件结束后是否停止线程------默认为false,即不停止,true即停止,当Recycle on EOF设置为True时,此项设置无效。
Sharing Mode: 设置线程是否共享---默认设置为All threads,ll threads---所有线程,Current thread group—当前线程组,Current thread—当前线程。
All threads:测试计划中所有线程,假如说有线程1到线程n (n>1),线程1取了一次值后,线程2取值时,取到的是csv文件中的下一行,即与线程1取的不是同一行。
Current thread group:当前线程组,假设有线程组A、线程组B,A组内有线程A1到线程An,线程组B内有线程B1到线程Bn。取之情况是:线程A1取到了第1行,线程A2取第2行,现在B1取第1行,线程B2取第2行。
Current thread:当前线程。假设测试计划内有线程1到线程n (n>1),则线程1取了第1行,线程2也取第1行。
此总结部分来自原文:https://blog.csdn.net/zwc2xm/article/details/78896034
这里请求中的参数userName,password引用csv的数据即为:${userName},${password},如下图:
3.Pre Processors
前置处理器,在请求发送之前执行。
*1.BeanShell PreProcessors
路径:右击线程组-add-Pre Processors
Jmeter支持java来编写,对请求报文的预处理,可以使用jdk自带的jar包,如以下获取时间的例子
附上其他大佬写的相关的帖子:https://www.jianshu.com/p/c267cc0df931
4.Post Processors
*1.Regular Expression Extractor
正则表达式提取器,附上正则表达式在线工具:https://c.runoob.com/front-end/854
路径:右击线程组-add-Pre Processors-Regular Expression Extractor
将正则表达提取器提取的变量用于其它请求的(hear,body)中
Apply to :作用域
Field to check:取值来源,即从哪里取值
*Reference Name,变量名,取值后存储的对象名,可以用作${变量名},另外${变量名}_g#,#代表第几组,g0表示完全匹配,包含整个字符串,g1代表从第对括号开始匹配,g2表示第二对括号开始的匹配
*Regular Expression: 正则表达式
*Template: $1$指向group 1,即匹配第一个正则表达式括号内的内容,依次类推
*Match No: 选择第几次匹配到的值,有可能一个Sampler下面匹配到多个值,这时这个变量就可以用到,0代表随机取,可以用在每次取到的值是一样的情况下
*Default Value: 如果没有匹配到的默认值,建议设置,可以快速定位问题
*2.JDBC Connection Configuration
Jmeter支持数据库存取数据,需要在JDBC Connection Configuration先进行配置,然后再配置JDBC Request
路径:右击线程组-add-Pre Processors-JDBC Connection Configuration
Variable Name: 变量名称,需要变量名绑定到池。需要唯一标识。与JDBC取样器中的相对应,决定JDBC取样的配置。简单理解就是在JDBC request的时候确定去哪个绑定的配置。
Connection Pool Configuration:
Max Number of Connection: 该数据库连接池的最大连接数,一般可设置为0,意思是每个线程都使用单独的数据库连接,线程之间数据库连接不共享
注:池中允许的最大连接数。在大多数情况下,将其设置为0,这意味着每个线程将得到它自己的池,其中只有一个连接,即线程之间不共享连接。如果您真的想要使用共享池(为什么?),那么将
Max Wait(ms):在连接池中取回连接最大等待时间,如果在试图检索连接过程中(取回连接)超过所设置期限,连接池抛出一个错误
Time Between Eviction Runs (ms): 疏散时间,在空闲对象驱逐线程运行期间,可以休眠的毫秒数。当非正值时,将运行无空闲对象驱逐器线程。(默认为“60000”,1分钟)(如果当前连接池中某个连接在空闲了time
Auto Commit:自动提交sql语句。有三个选项,true、false、编辑(自己通过jmeter提供的函数设置)打开或关闭连接的自动提交。
Transaction Isolation:
事务间隔级别设置,主要有如下几个选项:(对JMX加解密)
【TRANSACTION_NODE 事务节点 、
TRANSACTION_READ_UNCOMMITTED 事务未提交读、
TRANSACTION_READ_COMMITTED 事务已提交读 、
TRANSACTION_SERIALIZABLE 事务序列化 、
DEFAULT 默认、
TRANSACTION_REPEATABLE_READ 事务重复读
Connection Validation by Pool :
这是Jmeter用来检验数据库连接是否有效的一种机制,超过5秒没有使用的话,就会用validation query去测试下这个连接是否有效
Test While Idle:当空闲的时候测试连接是否断开,测试连接池的空闲连接,验证查询将会被使用去测试。
Soft Min Evictable Idle Time(ms):最少的时间连接可能在池中闲置,然后才有资格被闲置的对象驱逐出去,额外的条件是至少在池中保持连接。默认值为5000(5秒)
Validation Query:在3.2版本的Jmeter中需要将默认的“select 1”改为“select 1 from dual”否则DBC Request结果将会报错:Cannot create PoolableConnectionFactory (ORA-00923: δ??????? FROM ?????)
Database Connection Configuration :
Database URL:如jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL = TCP)(HOST = XX.XXX.XX.XX)(PORT = 1521))(CONNECT_DATA=(SERVICE_NAME = SJCM)))
其中@(DESCRIPTION=(ADDRESS=(PROTOCOL = TCP)(HOST = XX.XXX.XX.XX)(PORT = 1521))(CONNECT_DATA=(SERVICE_NAME = SJCM)))后面的内容可以在Oracle的配置文件tnsnames.ora中找到(路径:Oracle\product\12.2.0\client_1\network\admin)
JDBC Driver Class: 数据库JDBC驱动类名,如org.gjt.mm.mysql.Driver
JDBC Request
SQL Query-Query Type 可以选择对数据进行增删改查,在输入框写sql语句
5.Listener
增加监听器,可以生成聚合报告等
1.View Results in Table
View Results in Table 可以监控每个请求开始发送的时间(StartTime),response 的时间(SampleTime)
路径:右击线程组-add--Listener--View Results in Table
6.非GUI模式
非GUI模式命令:jmeter -n -t 脚本路径/脚本名.jmx -l 报告.jtl