1、测试计划
1)用户定义的变量
相当于全局变量,多个线程组都能使用
2)独立运行每个线程组
不勾选:测试计划下多个线程组并行;勾选:先执行测试计划下第一个线程组,执行完后再执行第二个。
3)Run tearDown Thread Group after shutdown of main threads
* 此配置需线程组配置为“在取样器错误后要执行的操作为停止测试”才有效
* 不勾选,主线程出现错误,teardown线程组不运行
* 勾选,主线程出现错误,teardown线程组运行
* 选中TestPlan右键->添加->线程组->teardown thread group添加teardown 线程组
4)其他配置
2、线程组
1)在取样器错误后要执行的动作
①继续
继续执行,测试时大多数情况下选择这个
②start next thread loop
开始下一个线程的循环,如线程组下设置循环10次,如第七次循环出现错误,则后面不再执行,从第8次循环开始执行
③停止线程
如,线程组出设置3个线程循环2次,加入第2个线程出错了,那么整个线程都不跑了,循环不再跑,直接到下一个线程取
④停止测试
停止整个线程组,类似正常关机
⑤stop test now
立刻停止,类似强制关机
2)线程属性
①线程数
类似loadrunner的 的vu,并发用户数
②RAM-Up Period(in seconds)
多长时间内启动,实际测试中该值没什么影响
③循环次数
类似loadrunner迭代
④Delay Thread creation until needed
不勾选,运行时先把所有的线程组都创建;勾选,需要时再创建。
3)调度器
* 使用调度器,必须勾选循环次数永远
* 持续时间:跑多长时间
* 启动延迟:多少秒之后启动
3、http请求
1)Basic
①web服务器
②HTTP 请求
③paramters
* 名称:key
* 值:value
* 编码:勾选编码,会按照content encoding 配置方式进行编码
④body data
* json、xml格式的数据,写在bodydata中
* 当paramters为空时,可点进去body,否则无法点进去
⑤file upload
填写上传的文件信息
2)Advanced
①client implementation
http client4、java两种方式,某些情况下出现请求乱码,将实现方式换成java能解决乱码
②times out
* connect:设置连接超时时间
* response:设置响应超时时间
③enable resources from html files
* 从HTML文件获取所有内容的资源:获取潜在资源,css/js/jpg
* parallel downloads number:同时开启几个下载连接数
* URL must match:url过滤
④source address
IP欺骗用的,参考公众号ip欺骗讲解。公网、线上环境做都是自欺欺人,没任何用。在一个教室里,所有人使用同一个wifi,每个人ip都不一样,但是所有的出口都是一个,此时ip欺骗就没有任何意义。
⑤save responseas md5 hash
将响应结果保存为md5 hash形式
4、jdbc request
1)varriable name of pool declared in jdbc connection configuration
数据库资源池名称,与jdbc connection configuration配置中保持一致
2)sql query
* select statement:查询
* update statement:更新
* callable statement:调用存储过程用
* prepared select statement:预编译查询,预编译语句中,数据可以用问号代替
* prepared update statement:预编译更新,预编译语句中,数据可以用问号代替
* commit:提交
* rollback:回滚
* auto commit(false):自动提交
3)parameter value
* 在查询语句中,数据可以用?代替
* 用问号代替的值从parameter value中传,如,select * from user where id = ?
4)parameter type
Varchar,bgint,integer
5)variable names
* 将查询的结果保持到变量中,多个变量逗号分开
* 变量名_#,表示查询的变量总数,变量名_1,表示第一行的第一列值
6)result varviable name
把整个result保存到一个变量中
5、逻辑控制器
1)事物控制器
* generate parent sample:仅仅统计父亲
* 可将多个sample放在事物控制器中,统计这几个请求总的平均响应时间和TPS
2)仅一次控制器
* 放在仅一次控制器下的sample只会执行一次,有几个线程就执行多少次
* 循环下面的仅一次控制器中sample只执行一次
* 登录放在仅一次控制器,减少其对其他接口的影响
3)吞吐量控制器
6、前置处理器
7、后置处理器
1)正则表达式
①Apply To
* Main sample and sub-samples:匹配主sample和子sample,主sample的重定向请求是子sample
* main sample only:只匹配主sample
* sub-samples only:只匹配子sample
* jmeter variable name to user:匹配jmeter变量文件
②要检查的响应字段
* 主体:大部分情况下用,默认就是主体
* body:body是对主体中的一些特殊html字符进行了转义,因为特殊字符的复杂多样,可能出现转义不完全的情况,这种方式慎用,避免挖坑,直接用主体就好
* body as document:把body作为document呈现,一般不用
* 信息头:响应信息头,一般提取信息头中信息要用到,如cookie
* request heasders:请求信息头
* url:从请求url中提取
* 响应代码:响应码,200,500,302,404等
* 响应信息:如响应消息中的ok
③匹配规则
* 引用名称:提取出的值放到变量中,此变量的名称,引用时要用${}括起来
* 正则表达式:填写提取变量值对应的正则表达式
* 模板:取第几组数据,$1$表示取第一组,$1$2$表示取第1第2组
* 匹配数字:-1表示全部,0表示随机,1表示取第一个值,2表示取第二个值
* 缺省值:缺省值建议不要为空,方便调试脚本看问题
2)JSON Extractor
①Apply to
* Main sample and sub-samples:匹配主sample和子sample,主sample的重定向请求是子sample
* main sample only:只匹配主sample
* sub-samples only:只匹配子sample
* jmeter variable name to user:匹配jmeter变量文件
②匹配规则
* name of created variables:变量名
* json path expression:json表达式
* $代表根
* $.result 得到result的所有元素
* 数组要加[],如$.result[0]表示取根下的result数组的第一个值,$.result[*]表示取根下result数组的所有值
3)xpath extractor
XPath Extractor使用方法与正则表达式提取器类似,只不过xpath extractor中指定的不是正则表达式,而是给定的XPath路径
①Apply to
* Main sample and sub-samples:匹配主sample和子sample,主sample的重定向请求是子sample
* main sample only:只匹配主sample
* sub-samples only:只匹配子sample
* jmeter variable name to user:匹配jmeter变量文件
②xml parsing options
* use tity (tolerant parser)
* quiet:只显示需要的html页面
* report errors:显示响应报错
* show warning:显示响应警告
* Use Namespaces:如果启用该选项,后续的XML解析器将使用命名空间来分辨
* Validate XML:根据页面元素模式进行检查解析
* Ignore Whitespace:忽略空白内容
* Fetch external DTDs:如果选中该项,外部将使用DTD规则来获取页面内容
③Return entire XPath fragment instead of text content
勾选:返回文本内容的整个XPath片段
不勾选:只返回值
④匹配规则
* 引用名称:引用名称
* xpath query:表达式若以/开头,/表示从根目录开始,以//开头,//表示相对路径。如//*/ID[text()=9]/../Zone
* 匹配数字:-1表示全部,0表示随机,1表示取第一个值,2表示取第二个值
* 缺省值:缺省值建议不要为空,方便调试脚本看问题
8、定时器
1)固定定时器
* 线程延迟,单位毫秒
* 等待XXX时间,类似loadrunner中思考时间
2)高斯随机定时器
* 偏差(毫秒)
* 固定延迟偏移(毫秒),如:偏差设置1000,固定延迟设置3000,则实际延迟时间在2000-4000ms间
3)Synchronizing Timer
* number of simulated users to group by :用户数
* timeout in millisecond:超时时间,0代表永远等待
* 等同于loadrunner的集合点
9、监听器
1)查看结果数
* 文件浏览:导入jmeter结果文件、将执行结果写入文件
* Log/Display Only
仅日志错误:只记录错误信息到日志
Successes:只记录正确信息到日志
Config:配置写入到日志文件中的信息
2)聚合报告
10、断言
1)响应断言
2)BeanShell断言
使用说明
* 注意,引用变量引号一定要加
* 注意FailureMessage一定要加,否则断言无效
* 断言内容是支持中文的,如下图
11、配置元件
1)CSV data config
2)jdbc connection configuration
①variable name bound to pool
* variable name for created pool:变量名称,需要变量名绑定到池
②connection pool configration
* Max Number of Connection:数据库最大连接数
* max wait(ms):最大等待时间
* time between eviction runs(ms):数据库连接多长时间不用就释放
* auto commit:自动提交
* transaction isolation:事物级别,使用默认就行
③connection validation by pool
* Test while idle:测试,选择true
* soft min evictable idle time(ms):
* validation query:mysql选择select 1,Oracle选择select 1 from dual
④database connection configuration
* database url:jdbc:mysql://116.196.88.42:3306/besttest?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
* jdbc driver class:com.mysql.jdbc.Driver
* username:数据库连接用户名
* password:数据库连接密码
3)cookie管理器
在jmeter bin路径下的jmeter.properties文件中可配置自动保存cookie到变量
* CookieManager.save.cookies=true 每次执行时,自动将cookie保存到变量
* CookieManager.name.prefix= 设置cookie前缀
* cookie变量前缀,默认是COOKIE_
* 开启自动保存cookie到变量后可以在debug sample看到cookie值
* 每个测试计划下只放一个cookie管理器,否则可能会出现jmeter不知道运行哪个cookie从而报错问题。