JMeter性能测试(上)

news2025/1/16 9:04:19

一、基础简介

界面

  • 打开方式

    • 双击 jmeter.bat
    • 双击 ApacheJMeter.jsr
    • 命令行输入 java -jar ApacheJMeter.jar
  • 目录

    • BIN 目录:存放可执行文件和配置文件

    • docs目录:api文档,用于开发扩展组件

    • printable-docs目录:用户帮助手册

    • lib目录:存放JMeter依赖的jar包和用户拓展所依赖的jar包

  • 元件

    • 概念:多个类似功能组件的容器(类似于类)

      • 取样器:发送请求。类似于自动化中的业务测试语句
      • 逻辑控制器:控制元件执行顺序。类似于自动化中的逻辑控制语句
      • 前置处理器:对发送的请求参数进行预处理。类似于自动化中的参数化。
      • 后置处理器:对收到的响应数据进行处理。类似于自动化中获得对应的测试结果。
      • 定时器:等待一定时间。类似于自动化中的sleep语句
      • 测试片段:封装的脚本,供其他脚本调用。类似于自动化中封装的函数
      • 配置元件:测试前的环境及数据配置。类似于自动化中的初始化动作
      • 监听器:查看测试的结果。类似于自动化中的日志和报告。
    • 组件:类似于类中定义的方法
  • 作用域

    • 按照jmeter测试计划的树形结构来定义作用域(有点儿类型python的缩进)

    • 作用域的原则:
      • 取样器是jmeter的核心,不作用于其他的组件
      • 逻辑控制器,只对子节点起作用
      • 对于其他的组件,
        • 如果父节点是取样器的话,则只对父节点起作用,
        • 如果父节点不是取样器的话,则对父节点下的所有组件起作用
    • 第一个案例:

      • 访问百度

  • 线程组

  • 模拟多人操作,如果有多个线程组时,可以并行或者串行执行

    • 串行:如下图,“独立运行每个线程组”勾选,则所有的线程组按照添加顺序串行执行;如果未勾选,则并行执行(先后顺序无法保证)

    • 线程组的分类:
      • 普通线程组:用于发送业务请求的线程组(受并行、串行配置的影响)
      • setup线程组:在所有的线程组之前执行(不受并行、串行配置的影响)
      • teardown:在所有的线程组之后执行(不受并行、串行配置的影响)

    • 线程组的属性:

      • 线程数:需要模拟的虚拟用户数。

      • ramp-up time:模拟的虚拟用户数全部启动所需要的时间。
        • 目的:为了模拟性能测试的场景,更接近用户的使用习惯(用户慢慢接入系统)
      • 循环次数:

        • 设置为固定次数n时:脚本运行时发送请求的次数为n
        • 设置循环次数为“永远”时,脚本会一直运行下去,不停止
      • 调度器:

        • 一般与循环次数为“永远”的设置配合使用
        • 持续时间设置为n时:脚本的请求发送的时间为n秒
        • 延迟启动设置为n时:脚本的请求发送在等待n秒后再进行
      • 延迟创建线程直到需要:当启动线程发送请求时,才分配资源;如果暂未启动该线程,则不分配。如果不勾选,在jmeter点击运行时立即分配(使用不多,了解即可,无法观察效果)

      • 线程数m和循环次数n的关系:
        • 如果同时配置,实际发送的HTTP请求数应该为m*n
        • 虽然发送请求的次数相同,但是不能相互替换
          • 线程数:代表并发用户数,体现服务器的负载量
          • 循环次数:代表执行时间
  • HTTP请求

    • 案例1:

    • 案例2:

    • 案例3:post

  • 察看结果树:

    • 出现乱码 1062行

  • 参数化

    • 定义:使用不同的测试数据,调用相同的测试方法进行测试
    • 本质:实现测试数据与测试方法的分离
    • 实现方法:

      • 1、用户定义变量

        • 配置方法1:配置元件中配置
          • 添加路径:测试计划——线程组——配置元件——用户定义的变量

          • 参数设置:
            • 参数名:参数值

          • 在HTTP取样器中应用:${参数名}

          • 线程组下配置的用户定义的变量,在线程组下生效,与测试计划中配置的变量冲突时,以线程组下的为准

        • 配置方法2:在测试计划中配置(全局生效)方法同上

      • 2、用户参数

        • 针对同一组参数,为不同用户访问时,分配不同的参数值

          • 使用用户定义的变量时,不同的用户在访问时,读取的参数值完全相同,如果希望每个用户在访问时的变量不同,可以使用用户参数。
          • 配置方法:
            • 添加位置:线程组——前置处理器——用户参数
            • 添加用户:可以添加多组用户(添加线程数,n)
            • 添加参数:针对每个用户添加多个参数

            • 添加HTTP请求,引用定义的变量名。格式为:${变量名}
      • 3、CSV数据文件设置

        • 使用用户参数时,每个用户可以取不同的数据,但是同一用户的多次循环时读取的数据是不变的。如果想让同一用户多次循环读取时的数据也不同,需要使用CSV数据文件设置的方式。
        • (1)定义CSV数据文件

        • (2)添加线程组
        • (3)配置CSV数据文件设置
          • 添加位置:线程组——配置元件——CSV数据文件设置
          • 参数配置

        • (4)添加HTTP请求

          • 引用参数值时,使用时CSV数据文件中定义的变量名
        • (5)查看结果树

      • 4、函数

        • 通过counter函数在生成动态变化的数值(自动生成不重复的数据,让每个用户每次循环都能取到不同的数据,且不需要提前定义)

        • 在HTTP取样器中,应用counter函数生成的函数字符串,就可以读取counter函数生成的数值。
          • 如果counter参数设置为:TRUE,则每个用户分别从1开始计算,每循环一次加1
          • 如果counter参数设置为:FALSE,则所有用户公用一个计数器,每发送一个请求时,取值加1
        • 步骤:
          • (1) 添加线程组,设置虚拟用户数和循环次数
          • (2)生成_counter函数
          • ( 3) 添加http请求,使用*counter函数 格式 :${_counter(FALSE,)}
          • (4)添加查看结果树
      • 练习:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/926720.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在线流程图软件哪个好?5款打工人必备的效率神器!

​流程图是可视化工具的一种,被广泛用于呈现和理解复杂的流程和工作流程。本篇文章我们将向你介绍5款优秀的在线流程图软件,助你提升工作效率,它们分别是:boardmix、Lucidchart、draw.io、Creately、Coggle。 在选择在线流程图软…

对numpy以及pandas中axis的理解

用线代的概念来理解轴,也就是dimension 在numpy中,最小的一维数组就可以看做是一个行列式,通常一个行列式写作如下形式 在numpy中就是这样的形式 anp.arange(4) #array([0, 1, 2, 3]) 对一个二维的矩阵,通常可以由两个行列式组…

用AI重构的钉钉,“钱”路在何方?

点击关注 文|郝 鑫,编|刘雨琦 钉钉2023年生态大会,离开了两年的无招,遇到了单飞9天的钉钉。 “做小钉钉、做好钉钉、做酷钉钉”,无招重申了钉钉的方向。 无招提到的三点,再加上“高质量增长”…

【Windows系统】资源管理器右键卡顿案例

问题 最近在使用办公电脑过程中,发现在Windows系统资源管理器中使用右键会出现卡顿现象。这是一台经常使用,工作日上班都会使用,以前没有这个问题。 出现问题的环境:windows版本:win10_x64(22H2&#xff…

Camunda 7.x 系列【27】手工任务 业务规则任务

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.10 本系列Camunda 版本 7.19.0 源码地址: 文章目录 1. 手工任务2. 业务规则任务1. 手工任务 Manual Task手工任务是定义在流程引擎之外的任务,流程引擎不需要了解,也不需要提供系统或用户界面的工作。…

iOS脱壳技术(二):深入探讨dumpdecrypted工具的高级使用方法

前言 应用程序脱壳是指从iOS应用程序中提取其未加密的二进制可执行文件,通常是Mach-O格式。这可以帮助我们深入研究应用程序的底层代码、算法、逻辑以及数据结构。这在逆向工程、性能优化、安全性分析等方面都有着重要的应用。 在上一篇内容中我们已经介绍了Clutc…

Mybatis的动态SQL分页及特殊字符应用

目录 ​编辑 前言: 1.mybatis的分页 1.1分页的应用场景 1.2分页的使用方式 2.mybatis中特殊字符处理 2.1mybatis中特殊字符介绍 2.2mybatis中特殊字符的使用方式 前言: 上篇我已经写了Mybatis动态之灵活使用,接着上篇写mybatis的分页…

Redis下载与安装

文章目录 Redis简介下载,安装和配置(cmd)图形化工具 Redis 简介 下载,安装和配置(cmd) 开启redis服务 1.在解压出来的文件夹中打开cmd 2.输入 redis-server.exe redis.windows.conf即可开启服务 可以看到…

Android 之 AlarmManager (闹钟服务)

本节引言: 本节带来的Android中的AlarmManager(闹钟服务),听名字我们知道可以通过它开发手机闹钟类的APP, 而在文档中的解释是:在特定的时刻为我们广播一个指定的Intent,简单说就是我们自己定一个时间, 然后…

Pycharm通过SSH配置centos上Spark环境

直接在shell进行pyspark进行编程,程序没有办法写得太长,而且我们希望能够实现一个及时给出结果的编程环境,可以使用pycharm连接centos上的spark,进行本地编程,同步到centos系统中运行程序,并把结果返回pych…

go:正确引入自己编写的包(如何在 Go 中正确引入自己编写的包)

前言 目录如下: 具体教程 1. 工作空间(我的是根目录)新建 go.work 文件 文件内容如下: go 1.21.0use (./tuchuang./tuchuang/testm ) 2. 添加go.mod文件 1. 包文件夹下 进入testm目录执行 go mod init testModule 2. 引用目…

web3d调试

web里嘛,Spector当然是首选 这个有一点点问题 我希望看见某个shader的执行耗时,这个无法做到诶 然后我查API,发现有个api用来query timestamp,然后兴致冲冲的把他写好了 然后发现报错需要开谷歌的一个设置,而且要在谷歌…

无用小程序之——论如何将导出为txt格式的QQ聊天记录进行合并

众所周知,QQ的PC端向我们提供了导出聊天记录的功能,并且允许我们导出为可读的文本文档(txt)格式,就像这样: 然后导出之后就是这样的(不要怪我啥都看不见,这已经是我能提供的最多的信…

MFC 硬件序列号

获取cpu序列号函数 uint64_t CpuId() { //获取CPU序列号int cpuInfo[4] { 0 };__cpuid(cpuInfo, 1);uint64_t serialNumber 0;if ((cpuInfo[3] & (1 << 3)) ! 0) {serialNumber static_cast<std::uint64_t>(_getwch()) << 32;}return serialNumber; …

2023年你需要知道的最佳预算Wi-Fi路由器清单

买新路由器?让我们帮助你挑选一些既有很多功能和性能,又经济实惠的产品。 购买Wi-Fi路由器并不一定要倾家荡产,尤其是如果你不需要一个提供数百Mbps速度的路由器。廉价路由器是一个很好的选择,它包含了许多功能,不会对钱包造成影响。 一、2023年在廉价Wi-Fi路由器中寻找…

754. 到达终点数字

754. 到达终点数字 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; 754. 到达终点数字 https://leetcode.cn/problems/reach-a-number/description/ 完成情况&#xff1a; 解题思路&#xff1a; 参考代码&#xf…

5个流程图模板网站,帮你轻松绘制专业流程图

在复杂的项目管理和团队协作中&#xff0c;流程图成为了一个必不可少的工具。从零开始创建流程图可能会很耗时&#xff0c;同时也需要一定的技能。使用模板可以让流程图方便制作又保持高颜值&#xff0c;降低制作的成本&#xff0c;一款模板众多、功能强大、具有丰富编辑工具的…

AP6315 DC单节锂电池充电IC 同步2A锂电芯片

概述 是一款面向5V交流适配器的2A锂离子电池充电器。它是采用1.5MHz固定频率的同步降压型转换器&#xff0c;因此具有高达90%以上的充电效率&#xff0c;自身发热量极小。包括完整的充电终止电路、自动再充电和一个达1%的4.2V预设充电电压&#xff0c;内部集成了防反灌保护、输…

2022年30m全国逐年土地覆被数据

1.研究背景 2023年8月,武汉大学杨杰和黄昕教授团队向公众更新发布了CLCD 2022年全国土地覆数据(V1.0.2)。而CLCD 2021年全国土地覆数据(V1.0.1)也是在去年8月向公众更新发布。 中国在过去几十年中经济和人口迅速发展,土地覆盖随之发生巨大变化,因此迫切需要对其进行连续…

第9天----【位运算进阶之----按位取反(~)】(附补码,原码讲解)

今天我们来谈谈按位取反这件事。 简单来说&#xff0c;按位取反就是先将一个数写成其二进制表达形式&#xff0c;然后1变0&#xff0c;0变1。下面就让我们展开深入地讨论吧&#xff01; 文章目录 一、预备知识&#xff1a;1. 原码&#xff1a;定义&#xff1a;优缺点&#xff…