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包

2 添加一个线程组 添加一个jdbc链接配置器

DataBase URL:库名+?+ useUnicode=true&characterEncoding=utf8,加入后缀防止乱码
3 取样器中添加一个jdbc request

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与它的组件们的更多相关文章

  1. JMeter学习-005-JMeter 主要组件概要介绍及执行顺序

    本文将对 JMeter 主要组件(主要涉及 Threads(Users).Test Fragment.逻辑控制器.配置元件.定时器.前置处理器.Sampler.后置处理器.断言.监听器 十大组件)进行 ...

  2. JMeter入门(1):JMeter总体介绍及组件介绍

    一.JMeter概述 JMeter就是一个测试工具,相比于LoadRunner等测试工具,此工具免费,且比较好用,但是前提当然是安装Java环境: JMeter可以做 (1)压力测试及性能测试: (2 ...

  3. Jmeter使用笔记之组件的作用域

    以前一直使用loadrunner,最近入职新公司后需要使用jmeter,这里把使用过程中出现的一些问题进行总结,同时会和自己使用loadrunner的情况相比较,以后也会不断总结,GO! 一.组件的作 ...

  4. Jmeter之JDBC类型组件

    一.背景 在测试过程中,避免不了与数据库打交道,比如数据的校验.数据的准备或者重置操作,又或者对数据库进行增删改查,基于以上诉求,在Jmeter中是如何实现的呢.可使用JDBC类型组件来实现以上功能操 ...

  5. 『动善时』JMeter基础 — 32、JMeter察看结果树组件详解

    目录 1.察看结果树介绍 2.察看结果树界面详解 3.察看结果树的其他功能 (1)将数据写入文件中 (2)Search功能 (3)Scroll automatically选项 4.总结 1.察看结果树 ...

  6. jmeter之JDBC类组件

    ~什么是JDBC?:全称名为Java DataBase Connectivity,(java数据库连接),在jmeter中是一种可以远程操作数据库的一类组件. ~jmeter如何操作数据库?:jmet ...

  7. 细雨学习笔记:JMeter 的主要测试组件总结

    1. 测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器. 2. 线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求.实际的请求内容在Sampler中定义, ...

  8. jmeter 常用组件详解

    1.测试计划(test plan) 描述一个性能测试,包含本次测试所有相关功能 2.threads(users)线程 Setup thread group: 一种特殊类型的线程,可用于执行预测试操作. ...

  9. JMeter各个基础组件简介

    刚从LoadRunner转到JMeter,对JMeter的各种概念比较懵.在这里记录下.欢迎大家关注我的个人微信号:测试杂货铺. JMeter的各个功能都是它的组件来完成或实现的,下面来对JMeter ...

随机推荐

  1. java-注释、API之字符串(String)

    /** * 文档注释只定义在三个地方 : 类.常量.方法上 * 在类上定义文档注释用来说这个类设计及其解决问题等相关描述信息 * @author 作者 * @version  1.0 21/08/17 ...

  2. fast json 乱序问题解决过程

    解决问题:保存到redis中的jsonstring在转回jsonObject的时候乱序: 解决方案:https://inlhx.iteye.com/blog/2312512 解决过程: 1 看fast ...

  3. ruby 字符注音标签

    <ruby/>标签下的文本可以注音,注音由一对<rt/>标签完成. <ruby> 汉<rt>han</rt> 字<rt>zi&l ...

  4. YC-Framework版本更新:V1.0.9

    分布式微服务框架:YC-Framework版本更新V1.0.9!!! 本文主要内容: 1.V1.0.9版本更新主要内容 2.YC-Framework新的征程 一.V1.0.9版本更新主要内容 (1)接 ...

  5. apk编辑器测评

    hi你好,我今天要介绍的就是apk编辑器 这里我用的是apk编辑器专业版 APK编辑器 关于 APK 编辑器智友汉化组论坛:bbs.zhiyoo.com修改应用程序名称美化 UI: 更改背景图片删除广 ...

  6. 什么?WPF 不支持 SVG ?

    什么?WPF 不支持 SVG ? 控件名:SharpVectors 作者:Elinam LLC (Japan) 项目地址: https://github.com/ElinamLLC/SharpVect ...

  7. Springboot重定向,没有位置没有加“/user”,但是url在请求位置的前面“/user”就出现了

    是因为":"后面没有加"/" 原先的 return "redirect:main.html"; 正确的 return "redir ...

  8. Android下的Drawable使用

    Drawable表示一种可绘制的内容,可以由图片或者颜色组成.Android下的Drawable有BitmapDrawable.GradientDrawable.LayerDrawable等等 1.B ...

  9. vacuum和vacuum full的处理过程

    对于数据库系统的并发控制,KingbaseES采用MVCC(多版本并发控制)进行处理. 这种机制有一个缺点,就是随着时间的推移,数据文件中积累的dead tuples会越来越多. 怎么去清理这些dea ...

  10. ACVF of ARMA(1, 1)

    \(ARMA(1, ~ 1)\) process is a time series \(\left\{ X_{t} \right\}\) defined as: \[X_{t} - \phi X_{t ...