JMETER与它的组件们

JSON提取器与Debug Sampler我们平时会遇到很多JSON格式的接口返回,我们需要提取参数可以用JSON提取器,同时配合自带的调试器来进行调试 。

JMETER与它的组件们

文章插图
 JSON提取器
Name of created variables:提取的值存放的变量名称JSON Path expression:表达式,就是刚在在结果树中验证的表达式,可以同时使用多个表达式,用分号隔开Match No:0 随机 1第一个 -1所有Compute concatenation var:如果匹配所有时 , 就将所有值存入变量名_ALL 中Default Value:提取不到值时默认值我们使用Dummy sampler来mock一个返回(这里不会可以上一篇)
{"topic":"mock_api","data":{"errormes":"","response":[{"name":"A","age":18},{"name":"B","age":30}]}}现在我们来提取age这个字段,这里会分享不同的方法来取值
第一种:一层一层从上至下取age=18这个值
//每一层就是一个"." , 因为response是个列表 , 我们去索引为0$.data.response[0].age第二种:有条件的筛选name=A的age , 使用表达式:[?(@.key == value)]
//$..直接去找response字段,根据表达式去找name是A的age$..response[?(@.name=="A")].age第三种:直接根据表达式找,并且可以一次性提取多层多变量
// Result[0]={"name":"A","age":18}$..[?(@.name=="A")].["age","name"]// Result[0]=18$..[?(@.name=="A")].age效果展示
JMETER与它的组件们

文章插图

JMETER与它的组件们

文章插图
计数器
JMETER与它的组件们

文章插图
然后我们设置不同的线程和循环次数来看看效果
设置线程1,循环3
JMETER与它的组件们

文章插图
设置线程2,循环3
JMETER与它的组件们

文章插图
设置线程2,循环3,勾选上方计数器中的与每用户独立的跟踪计数器
JMETER与它的组件们

文章插图
设置线程2,循环3,勾选上方计数器中的与每用户独立的跟踪计数器 和 在每个线程组迭代上重置计数器
JMETER与它的组件们

文章插图
while逻辑控制器、循环控制器、if逻辑控制器和测试活动这两个我们放在一起,假设我们需要去判断循环的次数大于5就自动跳出循环
while控制器
JMETER与它的组件们

文章插图
填入 ${__jexl3("${num}" != "5",)}
JMETER与它的组件们

文章插图
循环五次后退出,这里需要注意的是while条件中一般只会使用javaScript或者jexl3(这两个都是在函数助手中查看,辅助编写)
循环控制器+if控制器
JMETER与它的组件们

文章插图
勾选上永远,这样就会一直循环(这里勾选上只要是为了和上面while控制器模拟同一个场景,一般不会勾选永远 , 下面在做if判断,这样太麻烦了)
我们在for循环下面增加if控制器去判断是否满足我们需要的条件,if下面增加一个动作控制器,如果满足if条件就Break,跳出循环
if条件填入 ${__jexl3("${num}" == "5",)}
【JMETER与它的组件们】
JMETER与它的组件们

文章插图
这样就达到和while相同的效果了
JMETER与它的组件们

文章插图
断言
JMETER与它的组件们

文章插图
汉化过后断言就很好理解,这里讲一下模式匹配规则:
包括(contains):包含指定的某个或多个字符串,支持正则表达式
匹配(match):完全匹配指定的字符串,判断为成功,支持正则表达式
相等(equals):响应需要完全匹配指定的字符串,不支持正则
字符串(Substring):响应中需要包含指定字符串 , 不支持正则
否(Not) 和 或者(or):就是对上述判断做的逻辑运算
随机变量在配置元件中有个随机变量简单好用
JMETER与它的组件们

文章插图

JMETER与它的组件们

文章插图
HTTP镜像服务器可以理解做了一个挡板,把我们自己当做服务器,把我们自己收到的请求原封不动的显示出来,方便调试请求

推荐阅读