JMeter性能测试(上)

一、基础简介

界面

  • 打开方式

    • 双击 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.hqwc.cn/news/82279.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[MySQL]主从服务器布置

配置主服务器 配置文件 /etc/my.cnf 在[mysqld]下进行配置 log_binON //启动二进制日志 log-bin mysql-bin //启用二进制日志,用于记录主服务器的更新操作 server-id 1 // 用来表示mysql服务id,保证集成环境中的唯一性 , 范围 [1,2^32) read-only0 // 1表示只…

基于XL32F003单片机的可控硅调光方案

可控硅调光是一种用于调节电源输出电压的技术,被广泛应用于各种场景。它主要通过改变波形的导通角度来调节输出电压的大小,从而实现对照明设备亮度的控制。在照明市场占据了很大的调光市场。 可控硅调光的兼容性强,应用范围广。例如&#xff…

基于FPGA视频接口之HDMI2.0编/解码

简介 为什么要特别说明HDMI的版本,是因为HDMI的版本众多,代表的HDMI速度同样不同,当前版本在HDMI2.1速度达到48Gbps,可以传输4K及以上图像,但我们当前还停留在1080P@60部分,且使用的芯片和硬件结构有很大差别,故将HDMI分为两个部分说明1080@60以下分辨率和4K以上分辨率(…

Linux-环境变量

文章目录 常见环境变量查一个环境变量系统调用接口getenv 什么是环境变量?命令行参数向量表两张核心向量表 结论证明一下子进程继承了父进程的环境变量?export将本地变量变成环境变量 本地变量&&内建命令本地变量:只会在本BASH内部有…

iis站点备份以及端口号查找

文件地址 %windir%\system32\inetsrv\config

科技赋能,教育革新——大步迈向体育强国梦

在 "全民健身"、"体育强国建设"战略的推进下,体育考试成绩被纳入重要升学考试且分值不断提高,体育科目的地位逐步上升到前所未有的高度,在此趋势下,体育教学正演变出更多元化、个性化的需求。然而现实中却面临…

Mybatis (3)-----分页的运用

目录 一、分页查询 二,特殊的字符处理 三、总结 前言:在我们上篇已经学的动态sql的基础上,今天继续讲解关于maybatis的分页,特殊的字符处理。希望这篇博客可以帮助到大家哦! 一、分页查询 为什么要重写mybatis的分…

邀请函 | 区块链如何助力建设“健康中国”?ESG系列研讨会“医疗”专场来袭!

党的十九大报告指出,要全面实施健康中国战略,为人民群众提供全方位全周期健康服务。今年7月,国家卫生健康委等六部门联合印发了《深化医药卫生体制改革2023年下半年重点工作任务》,明确指出要开展全国医疗卫生机构信息互通共享三年…

合宙Air724UG LuatOS-Air LVGL API--对象

对象 概念 在 LVGL 中,用户界面的基本构建块是对象。例如,按钮,标签,图像,列表,图表或文本区域。 属性 基本属性 所有对象类型都共享一些基本属性: Position (位置) Size (尺寸) Parent (父母…

Ubuntu18.04 交叉编译curl-7.61.0

下载 官方网址是:curl 安装依赖库 如果需要curl支持https协议,需要先交叉编译 openssl,编译流程如下: Ubuntu18.04 交叉编译openssl-1.1.1_我是谁??的博客-CSDN博客 解压 # 解压: $tar -xzvf curl-7.61.…

QT TLS initialization failed问题(已解决) QT基础入门【网络编程】openssl

问题: qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed 这个问题的出现主要是使用了https请求:HTTPS ≈ HTTP + SSL,即有了加密层的HTTP 所以Qt 组件库需要OpenSSL dll 文件支持HTTPS 解决: 1.加入以下两行代码获取QT是否支持opensll以…

基于matlab的lorenz混沌系统仿真与分析

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..................................................................................... l…