首页 > 其他分享 >JMETER与它的组件们

JMETER与它的组件们

时间:2022-11-01 09:23:15浏览次数:62  
标签:控制器 提取 name age 循环 线程 组件 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包

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进行测试

标签:控制器,提取,name,age,循环,线程,组件,JMETER
From: https://www.cnblogs.com/yetangjian/p/16818697.html

相关文章

  • SpringCloudAlibaba 主要组件与nacos 填坑记录
    SpringCloudAlibaba主要功能与实现组件(1)SpringCloudAlibaba主要功能与实现组件【功能与实现组件:】服务限流降级:基本说明:默认支持WebServlet、WebF......
  • Element基本组件
     Element按钮组件:  <el-row><el-button>默认按钮</el-button><el-buttontype="primary">主要按钮</el-button><el-buttontype="success">成功按钮</el......
  • Flutter 短信验证码组件
    效果图思路因为需要弹出键盘,所以使用了一个隐藏的TextField,通过点击事件捕获焦点,方块只做展示使用。组件代码import'package:bubble_mobile/util/func_utils.dart';......
  • 微信小程序动态增加组件(以按钮为例)
    这里的微信小程序动态加载是以按钮为例,主页面点击不同的按钮进入不同的子页面中,根据主页面的title来动态加载子页面按钮的数量以及值。效果图:wxml文件(注意wx:key="item"要写......
  • React进阶篇——十二、继承方式实现高阶组件
    十二、继承方式实现高阶组件前面介绍的高阶组件的实现方式都是由高阶组件处理通用逻辑,然后将相关属性传递给被包装组件,我们称这种实现方式为属性代理。除了属性代理,还可以......
  • drf-认证组件
    views.pyfromrest_framework.responseimportResponsefromrest_framework.viewsimportAPIView#局部自定义认证逻辑classMyAutheentication(object):defau......
  • vue计算,监听属性插槽和动态组件
    计算属性如果{{函数()}},每次页面刷新,函数都会重新执行函数---》当属性来使用,缓存<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><ti......
  • java-Swing常用组件-1
    文章目录​​Swing常用组件​​Swing常用组件......
  • 移动应用开发推荐这个三方组件,时间选择即刻拥有全新体验
    TelerikUIforXamarin是一个构建跨平台移动应用程序的原生UI。TelerikUIforXamarin使用Xamarin.Forms技术,它可以让开发人员从一个单一的共享C#代码库中创建原生的iOS......
  • Zookeeper组件部署
    Zookeeper组件部署1实验目的掌握ZooKeeper集群安装部署,加深对ZooKeeper相关概念的理解,熟练ZooKeeper的一些常用Shell命令。2实验要求部署三个节点的ZooKeeper集群,通......