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

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
效果展示


计数器

然后我们设置不同的线程和循环次数来看看效果
设置线程1,循环3

设置线程2,循环3

设置线程2,循环3,勾选上方计数器中的与每用户独立的跟踪计数器

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

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

填入 ${__jexl3("${num}" != "5",)}

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

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

这样就达到和while相同的效果了

断言

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


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


设置好服务器记得点击启动


这时候请求的数据就会全部显示在你面前了
JDBC
JDBC链接数据库
链接数据库我们需要一个链接数据的jar包:https://downloads.mysql.com/archives/c-j/

步骤
1 测试计划中添加上方下载的jar包
4把需要取得值放入变量


value=vars.getobject("resultserial_nos").get(8).get("serial_number");
vars.put(serial_number,value);

同步定时器

同步定时器设置了集合点,达到并发的作用
说到并发绕不开的就是并行:并发其实就是任务切换,而并行就是多个进程同时进行,Jmeter也提供了并发插件这里不做赘述,有兴趣的可以去插件管理内自己下载:Parallel Controller
事务控制器
我们需要去测试几个接口的混合场景下的性能,就需要把几个接口放到一个事务中



stepping Thread Group + jp@gc - Transactions per Second + jp@gc - Response Times Over Time
线程组中有个stepping thread group可以帮助我们不断加压增加线程组数量来查看不同压力下的tps


安装插件: jpgc - Standard Set这里有jp@gc - Transactions per Second可以用这个查看每秒事务处理
纵坐标为TPS横坐标为时间

纵坐标为请求响应时间

友情链接
selenium结合jmeter进行测试
JMETER与它的组件们的更多相关文章
- JMeter学习-005-JMeter 主要组件概要介绍及执行顺序
本文将对 JMeter 主要组件(主要涉及 Threads(Users).Test Fragment.逻辑控制器.配置元件.定时器.前置处理器.Sampler.后置处理器.断言.监听器 十大组件)进行 ...
- JMeter入门(1):JMeter总体介绍及组件介绍
一.JMeter概述 JMeter就是一个测试工具,相比于LoadRunner等测试工具,此工具免费,且比较好用,但是前提当然是安装Java环境: JMeter可以做 (1)压力测试及性能测试: (2 ...
- Jmeter使用笔记之组件的作用域
以前一直使用loadrunner,最近入职新公司后需要使用jmeter,这里把使用过程中出现的一些问题进行总结,同时会和自己使用loadrunner的情况相比较,以后也会不断总结,GO! 一.组件的作 ...
- Jmeter之JDBC类型组件
一.背景 在测试过程中,避免不了与数据库打交道,比如数据的校验.数据的准备或者重置操作,又或者对数据库进行增删改查,基于以上诉求,在Jmeter中是如何实现的呢.可使用JDBC类型组件来实现以上功能操 ...
- 『动善时』JMeter基础 — 32、JMeter察看结果树组件详解
目录 1.察看结果树介绍 2.察看结果树界面详解 3.察看结果树的其他功能 (1)将数据写入文件中 (2)Search功能 (3)Scroll automatically选项 4.总结 1.察看结果树 ...
- jmeter之JDBC类组件
~什么是JDBC?:全称名为Java DataBase Connectivity,(java数据库连接),在jmeter中是一种可以远程操作数据库的一类组件. ~jmeter如何操作数据库?:jmet ...
- 细雨学习笔记:JMeter 的主要测试组件总结
1. 测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器. 2. 线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求.实际的请求内容在Sampler中定义, ...
- jmeter 常用组件详解
1.测试计划(test plan) 描述一个性能测试,包含本次测试所有相关功能 2.threads(users)线程 Setup thread group: 一种特殊类型的线程,可用于执行预测试操作. ...
- JMeter各个基础组件简介
刚从LoadRunner转到JMeter,对JMeter的各种概念比较懵.在这里记录下.欢迎大家关注我的个人微信号:测试杂货铺. JMeter的各个功能都是它的组件来完成或实现的,下面来对JMeter ...
随机推荐
- Excel 统计函数(五):MINIFS 和 MAXIFS
MINIFS [语法]MINIFS(min_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...) [参数] min ...
- [HNOI2010]弹飞绵羊 (平衡树,LCT动态树)
题面 题解 因为每个点都只能向后跳到一个唯一的点,但可能不止一个点能跳到后面的某个相同的点, 所以我们把它抽象成一个森林.(思考:为什么是森林而不是树?) 子节点可以跳到父节点,根节点再跳就跳飞了. ...
- Cannot resolve method 'println(java.lang.String)'
jsp文件中println爆红 <% int sum = 0; for (int i = 1; i <=100 ; i++) { sum+=i; } out.println("& ...
- KingbaseES R6 主备流复制集群创建级联复制案例
案例环境: 数据库: test=# select version(); version -------------------------------------------------------- ...
- torch.sort 和 torch.argsort
定义 torch.sort(input,dim,descending) torch.argsort(input,dim,descending) 用法 torch.sort:对输入数据排序,返回两个值, ...
- 华南理工大学 Python第1章课后小测
1.(单选)计算机有两个基本特性:功能性和()性.(本题分数:5)A) 可存储B) 可计算C) 可通信D) 可编程您的答案:D 正确率:100%2.(单选)计算机硬件可以直接识别和执行的程序设计语言 ...
- 跟羽夏学 Ghidra ——调试
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章 ...
- CentOS7使用tar方式安装Containerd,配置文件介绍
主机:centos 7.9 下载 官网GitHub上下载地址:https://github.com/containerd/containerd/releases 问题: 创建容器后,运行的时候报错: ...
- Kibana控制台(Dev Tools) Console
控制台插件提供一个用户界面来和 Elasticsearch 的 REST API 交互.控制台有两个主要部分: editor ,用来编写提交给 Elasticsearch 的请求: response ...
- MySQL集群搭建(4)-MMM+LVS+Keepalived
1 LVS 介绍 1.1 简介 LVS 是 Linux Virtual Server 的简写,意即 Linux 虚拟服务器,是一个虚拟的服务器集群系统.本项目在 1998 年 5 月由章文嵩博士成立, ...