参数化
![](https://i-blog.csdnimg.cn/direct/f7d843262d3644ae821bde3a64f3a2ee.png)
![](https://i-blog.csdnimg.cn/direct/4248175e14a94863aa379fe68edff58f.png)
![](https://i-blog.csdnimg.cn/direct/b170dab1599446c7af642086a9765ec9.png)
用户定义的变量
用的时候 ${名字}
用户参数
在参数列表中传递 并且也是${}
csv数据文件设置
false 不忽略首行 要首行 从第一行读取
true 忽略首行 从第二行开始
请求时的参数设置:
这里的名称是看其接口需要的请求参数的名称
这里的变量名称就是为csv里面的每一列数据重新起名字
传入的时候就用这个起的名字传递 为CSV设置的变量名称
函数参数化
![](https://i-blog.csdnimg.cn/direct/99b106ed99ea4b009b06fda543186619.png)
![](https://i-blog.csdnimg.cn/direct/9c6a1f06399a4497ad9ac3a1f78bb684.png)
![](https://i-blog.csdnimg.cn/direct/0c4c6d0e63e244a1875b78256ced1a4e.png)
![](https://i-blog.csdnimg.cn/direct/87d480effe2248c4830cffbc7c077d1a.png)
参数化小总结
用户参数 是一个用户对应一份参数 多个用户对应多份参数
函数和csv是可以一个用户对应不同的参数 也可以多个用户取到不同的值
函数的局限性:就比如上面例子 counter就只是特定的数 1 2 3 4 5 6... 无法满足特定需求
bin:配置文件
docs:开发扩展组件
printable_doc:帮助手册
lib:第三方库
jmeter元件:
配置元件:初始化数据
前置处理器:参数赋值
取样器:发请求
后置处理器:响应
监听器:看结果
取样器:核心
逻辑控制器:子节点
其它元件看其父节点 父节点为取样器则父节点 否则其父节点下的所有节点
顺序:定时器在取样器前面
线程组
线程数:用户数
ramp-up:所有用户启动时间
循环次数:
运行时间:用户启动后的持续运行时间
延迟启动时间:脚本等待多久时间后开始跑
等待 启动 运行
HTTP请求 URL 参数:路径 参数列表 消息体数据
查看结果树
参数化
用户定义的变量:全局参数
用户参数:针对每个用户取不同的值 但是不能针对同一个用户取不同的值
CSV数据文件:针对每个用户的每次循环都能取不同的值
jmeter自动发送第二个请求 它可以自动判断/处理响应状态码
jmeter断言
响应断言
JSON断言
路径处注意是否有空格
查看结果树那里
方便我们查看json元素的路径
$.以开头 相当于根目录
断言持续时间
![](https://i-blog.csdnimg.cn/direct/860ee31306dc4802b1503d7b8a27b44f.png)
断言小总结
jmeter关联
正则表达式
-1 全部取出来 通过debug sampler看其变量名 直接写其变量名
XPath提取器
JSON提取器
JMeter属性
让其串行运行
关联小总结
录制脚本
可能录制后会有很多无用的文件 过滤
直连数据库
这里注意 写错了 是goodsID 变量名要保持一致
逻辑控制器
如果控制器
JS
勾选interpret
函数
![](https://i-blog.csdnimg.cn/direct/36a76ada599f42b4bfbacaa64998f17d.png)
循环控制器
![](https://i-blog.csdnimg.cn/direct/b6a6371ac08e411692371c32ffccee58.png)
![](https://i-blog.csdnimg.cn/direct/b15ccf9e0cf44b948e523ee8ffe43131.png)
foreach
正则表达式提取器
foreach请求 不写结束 其自动会找到最后一个
定时器
同步定时器
模拟高并发:同时对服务器发送请求