jmeter使用流程
- 配置元件
- CSV Data Set Config #CSV数据文件设置,可以添加准备好的CSV文件类型的测试用例
- HTTP信息头管理器
- Content-Type application/json #json请求头
- Authorization Bearer (添加获取的密钥access)#密钥验证请求头
- HTTP Cookie管理器 #保存cookie
HTTP请求默认值 #可以设置相同的协议,服务器名称或ip,端口号,HTTP请求里可以不填写,填写则覆默认值
- 后置处理器
- JSON提取器语法,例如:
- Names of created variables(自定义变量名称):name #多个值用;分隔
- JSON Path expresions(书写语法):$.data.stu[].name #从最外层开始查找需要的字段,[]代表取列表里所有的值
- Match No.(0 for Random)(0是随机获取):1获取第一个(获取的id字段后面不拼接)-1获取所有(获取的id后面拼接_1)
- 可以添加调试取样器查看获取字段有没有达到预期,或者是字段的形态
- 正则表达式提取器语法,例如:
- 引用名称:id
- 正则表达式:"id":(.*?) #多个值用;分隔
- 模板:$1$ #执行一个
- 匹配数字(0代表随机):-1
- 缺省值:自定义失败返回的字段
- 同组的HTTP请求用提取器获得变量可以直接使用,不同组则需要设置全局变量
Jmeter-Jsonpath的解析
$..name
表示递归查找所有NAME
$..*
表示递归查找所有值
$.data.stu[*].name
表示取所有的学生name
$.data.stu[0,2].name
表示取第1个和第3个元素的name
$.data.stu[0:2].name
表示取第1到第3个元素的name(不包括第3个,左闭右开)
$.data.stu[0:].name
不指定end就是找到全部
$.data.stu[-1:-2].name
从倒数第1个到倒数第2个
$.data.stu[-3:].name
从倒数第3个到最后一个
$.data.student[?(@.sex=="1")]
取当前数组中所有性别为1的数据
$.data.student[?(@.name=~/张.*/)]
取姓为张的
$.data.student[?(@.name=~/.*张.*/)]
取有张字的
@.key=~/正则表达示/,表示某一个节的值能够匹配得上
$.data.student[?(@.grade.max()>60)]
取成绩中最大的大于60的数据(取至少一门成绩及格的)
@ 表示当前节点,即数组节点
== != < > <= =>
=~ 正测匹配
in
$.data.student[?(@.age in [25.26])]
取年纪在25,26的数据 等价于$.data.student[?(@.age==25 || @.age==26 )]
not in
$.data.student[?(@.age not in [25.26])]
取年纪在25,26的数据 等价于$.data.student[?(@.age!=25 && @.age!=26 )]
Subsetof
$.data.student[?(@.hobby Subsetof ["11","22"])]
hobby的值为右边的子集的数据
- 监听器设置
- 查看结果树,可以查看不同格式的返回数据,也可以使用提取器测试:
- RegExp Tester(正则提取器测试),使用正则表达式可以查看是否能获取想要的数据
- JSON JMESPath Tester(json提取器测试),使用json表达式可以查看是否能获取想要的数据
- 聚合报告
- 线程组的执行顺序
- setUp 线程组 #为优先执行
- 线程组 #为普通线程组,随机执行
- tearDown 线程组 #为最后执行
- HTTP请求
- 返回数据乱码,先找到jmeter/bin目录的jmeter.properties文件
- sampleresult.default.encoding=UTF-8 后缀修改成utf-8,设置返回数据中文
- sampleresult.default.encoding=utf-8 前面#号注释去掉
- language=zh_CN 后缀改成zh_CN,设置主视图中文
- csv测试用例编写格式
- 字段1,字段2,字段3,... #一定是英文逗号分隔字段
- 1,12,123,... #字段内容
- 例如:
- title,user,password,name
- 标题,用户,123,陈