• JMETER与它的组件们


    JSON提取器与Debug Sampler

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

     JSON提取器

    Name of created variables:提取的值存放的变量名称
    JSON Path expression表达式,就是刚在在结果树中验证的表达式,可以同时使用多个表达式,用分号隔开
    Match No0 随机 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这个值

    1
    2
    //每一层就是一个".",因为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把需要取得值放入变量

    1
    2
    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与BeanShell

  • 相关阅读:
    如何在Docker容器中安装RabbitMQ
    [系统安全] 五十三.DataCon竞赛 (2)2022年DataCon涉网分析之恶意样本IOC自动化提取数据集详解
    关联路网拓扑特性的车辆出行行为画像分析
    JDBC和GUI实现图书管理系统
    400 页共计 800 道软件测试面试真题汇总,2023年吐血整理
    模板继承、模板中加载静态文件
    实现异步上传图片【前后端分离】
    python 实现MAC泛洪与ARP欺骗
    缩点+图论路径网络流:1114T4
    高级SQL语句
  • 原文地址:https://www.cnblogs.com/yetangjian/p/16818697.html