• Jmeter 入门使用


    1. 写在最前面

    最近接了个新项目,整个人都处于非常忙碌的状态。但是学习、复盘才会使人进步,所以还是要抽出时间来学习新的、有趣的知识。对接的测试小姐姐,使用 jmeter 帮忙压测了下供应商的服务在被限流之后的行为是什么?

    虽然自己写脚本也能完成并发的压测,但是最后总结的压测结果数据不如 jmeter 的广泛和全面,所以趁着时间允许,来研究一波 jmeter 的使用吧。

    2. Jmeter 安装

    Jmeter 下载地址 https://dlcdn.apache.org//jmeter/binaries/,笔者当时下载的是 5.4.1 的版本,总体的执行命令包括

    • 选择需要 jmeter 的版本,太新的话可能网上介绍的文档不多

    • 将下载好的 jmeter 服务压缩包移动到合适的目录 mv ~/Downloads/apache-jmeter-5.4.1.tgz .

    • 解压缩 tar -zxvf apache-jmeter-5.4.1.tgz

    • 切换到解压缩后的目录 cd apache-jmeter-5.4.1 && ./bin/jmeter.sh,然后就会收获一个 GUI 版本的 jmeter 界面

    在这里插入图片描述

    注:Jmeter 要求安装 Java,所以安装 Jmeter 时,请确认已经安装了要求的 Java 版本

    3. Jmeter 使用

    Jmeter 的使用网上已经有了比较详细的介绍,此处仅介绍几个笔者觉得用起来很方便的示例。先说一下背景,要测试的接口是一套 http 接口。类似如下能力:

    • acquire :获取 token,请求 body 中需要填写可变参数,token 返回在响应的 Body 中
    • start :拿着获取的 token 发起 start 请求,请求 body 中需要填写可变参数,此步骤类似启动一个任务,会在响应的 Body 返回一个 taskId
    • query:拿着获取的 taskId 和 token 查询任务
    • stop :拿着获取的 taskId 和 token 停止任务

    3.1 增加 http 请求的基本信息

    右键添加 -> 配置元信息进行选择

    在这里插入图片描述

    3.1.1 增加 HTTP 请求的默认值

    用于配置请求的协议、地址、端口等信息

    在这里插入图片描述

    3.1.2 增加 HTTP 信息头管理器

    用于增加 http header 的通用配置信息。

    在这里插入图片描述

    3.2 增加 http 接口测试

    3.2.1 增加线程组

    在这里插入图片描述

    3.2.2 增加 http 接口的访问

    在这里插入图片描述

    3.2.3 配置 http 请求的参数

    • jmeter 内置了很多函数,具体参考 https://jmeter.apache.org/usermanual/functions.html,此处使用 __Random,eg ${__Random(0,10)}

    在这里插入图片描述

    • 配置用户参数

      用此方法配置的用户参数为整个线程组均可以使用,如果想要配置仅 http 方法可以使用的用户参数,右侧点击 acquire 请求测试,增加配置元件 -> 用户定义的变量即可

    在这里插入图片描述

    • 配置 http post 的 body

    在这里插入图片描述

    • 增加接口返回值的断言

    在这里插入图片描述

    3.3 http body 参数读取写入

    根据前述的背景描述,笔者需要从 acquire 的响应 body 值中读取 token,然后将 token 作为参数给 start 请求使用。

    3.3.1 方案一

    不需要将 token 存储,直接在后续的请求中使用,添加一个正则表达式处理器。步骤为点击添加 -> 后置处理器 -> 正则表达式处理器

    在这里插入图片描述

    在 start 的 http 请求中,直接使用定义的变量 o_tokenName。

    在这里插入图片描述

    3.3.2 方案二

    方案二比较复杂,需要将 token 先写入文件,然后 start 的时候在从文件中读取。此方案的好处是方便用户后续排查问题

    • 需要增加 BeanShell 后置处理程序,将 token 写入文件

      在这里插入图片描述

      参考的写入文件脚本:

      FileWriter fstream = new FileWriter("/Users/ly/Desktop/acquire", true);
      BufferedWriter out = new BufferedWriter(fstream);
      out.write("${o_tokenName}"+"\n");
      out.close();
      fstream.close();
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • 增加 CSV 文件设置,用于从文件中读取 token,参考的配置如下

    在这里插入图片描述

    3.4 结果分析

    Jmeter 提供了方便的结果分析功能,用户可以选择增加「察看结果树」和「聚合报告」

    3.4.1 察看结果树展示

    (ps: 思考,感觉这里的察,应该是汉化版本翻译有问题

    在这里插入图片描述

    3.4.2 聚合报告的展示

    在这里插入图片描述

    4. 碎碎念

    真是非常忙碌并且一步一个坑的一个月,即 PE 多配置了一个字符之后,笔者又踩了一个配置漏发两台机器的问题。哎,还好心脏强大一些,不然真原地爆炸了。

    • 所谓解放,就是我们不再依赖,也不再等待,我们可以独自去面对最苦最痛的人生。
    • 为什么非要活成世俗眼中所谓正常的样子,都是几十年,过完就没了。
    • 你凭什么认为有人会拉你一把,摔倒了不自己爬起来,等着别人去踩吗?

    5. 参考资料

  • 相关阅读:
    SpringBoot+AOP+自定义注解,优雅实现日志记录
    vue3 实现多条件搜索
    CSAPP实验记录(2)--------- Bomb
    Java旋转图像leetcode_48
    通俗易懂的React事件系统工作原理
    Redis实战之共享session + jwt 实现登录拦截、刷新token
    前端三剑客—JS
    2024最新华为OD机试(C卷+D卷)真题目录+使用说明+在线评测
    编程为什么要使用设计模式?使用设计模式的好处有哪些?
    【无标题】
  • 原文地址:https://blog.csdn.net/phantom_111/article/details/125492155