zoukankan      html  css  js  c++  java
  • 性能测试——Jmeter基本用法概述

    Jmeter基本用法概述

    Jmeter:Apache组织开发的基于Java的性能测试工具

    一、Jmeter安装与配置

    1、下载

    官方下载地址:https://jmeter.apache.org/download_jmeter.cgi

    image

    下载完解压即可

    2、环境变量

    配置完JDK无需额外配置

    3、启动验证

    进入bin目录,找到jmeter.bat并运行

    image

    能正常显示以下软件界面即安装成功

    image

    注意:关闭弹出的命令行界面同时会关闭jmeter

    二、Jmeter文件目录介绍(*表示常用)

    1、/bin目录——常用文件介绍;包含启动、配置等相关命令

    examples:目录下包含Jmeter使用实例

    ApacheJMeter.jar:Jmeter源码包

    jmeter.bat:windows下启动文件*

    jmeter.sh:Linux下启动文件*

    jmeter.log:Jmeter运行日志文件*

    log4j.conf:Jmeter日志配置管理

    jmeter.properties:Jmeter配置文件*

    jmeter-server.bat:windows下启动负载生成器服务文件*

    jmeter-server:Linux下启动负载生成器服务文件*

    shutdown.cmd:windows下jmeter关闭文件

    stoptest.cmd:windows下jmeter测试停止文件

    2、/docs目录——Jmeter帮助文档(官方本地文档目录;包含有框架类、无框架类、常量值、不建议使用列表、帮助文档、索引、框架综述等等)

    /api/index.html:api接口文档*

    3、/extras目录——辅助库;提供了对Ant的支持文件,可也用于持续集成

    4、/lib目录——核心库;存放Jmeter依赖的jar包,同时安装插件也放于此目录

    5、/licenses目录——软件许可文件,不用管

    6、/printable_docs目录——可打印版本文档目录

    /usermanual/get-started.html:Jmeter入门文档

    /usermanual/index.html:Jmeter用户手册,非常详细*

    /usermanual/component_reference.html:常用到的核心元件帮助文档*

    7、LICENSE——许可说明

    8、NOTICE——简单信息说明

    9、README.md——官方基本介绍

    三、Jmeter元件

    组件:实现某个功能的基本单位(类似于方法)

    元件:多个类似功能组件的容器(类似于类)

    1、常见类型

    • 取样器:作用于线程组,用于发送请求
    • 逻辑控制器:控制语句执行顺序,类似python中的逻辑控制语句
    • 前置处理器:请求发送前执行,类似于setup
    • 后置处理器:请求后执行,类似于teardown
    • 断言:对响应结果进行匹配,类似于assert
    • 定时器:等待一定时间,类似于sleep()
    • 测试片段:封装的一段代码,供脚本调用,类似于工具类
    • 配置元件:对参数进行赋值,类似于参数化
    • 监听器:查看脚本运行结果,类似于python调试窗口的结果打印

    2、作用域

    根据测试计划中的树形结构确定,子节点作用于父节点,核心元件是取样器,对于父节点非取样器的组件,对父节点下的取样器都起作用

    3、线程组

    模拟多人操作,相当于test suite,线程数表示模拟的用户数

    在测试计划下勾选独立运行每个线程组后将串行执行,否则默认并行执行

    分类:

    • 线程组
    • setup线程组:在所有线程组之前执行
    • teardown线程组:在所有线程组之后执行

    属性:

    • 线程数:模拟用户数量进行操作
    • ramp-up time:模拟操作全部执行耗费的时间
    • 循环次数:操作重复执行的次数,其中永远选择框通常与调度器和延迟创建线程知道需要配合使用
    • 调度器:对循环进行控制,其中持续时间通常与永远循环配合使用,延迟时间表示延后指定时间再执行
    • 延迟创建线程直到需要:默认一次性为线程组分配资源,勾选后仅在创建线程时分配资源

    4、添加自定义变量

    • 通过线程组-添加-配置元件-用户定义的变量(作用域:线程组)
    • 通过测试计划添加(作用域:全局)

    5、为不同用户添加不同参数

    • 方式一:线程组-添加-前置处理器-用户参数

    其中:变量表示参数的个数,用户表示参数组的个数

    • 方式二:线程组-添加-配置元件-csv数据文件设置

    其中:除忽略首行改为True外其余保持默认

    变量名称设置后可以在测试计划的各种节点进行引用

    • 方式三:工具栏函数助手对话框-counter-生成

    其中:生成函数后直接将函数做为变量值赋给请求参数

    四、Jmeter断言

    1、响应断言

    方式:测试计划-线程组-HTTP请求-添加-响应断言

    image

    2、json断言

    方式:测试计划-线程组-HTTP请求-添加-JSON断言

    image

    3、断言持续时间

    对从发出请求到接受响应所需要的时间进行断言

    方式:测试计划-线程组-HTTP请求-添加-断言持续时间

    image

    五、Jmeter关联

    当请求之间存在依赖关系,如一个请求的入参是另一个请求的响应,这时候就需要用到关联处理。

    常用的关联方法:

    • 正则表达式提取器
    • XPath提取器
    • JSON提取器

    1、正则表达式提取器

    看个例子:

    <title>.*?<title>

    其中:

    • .:是通配符,代表任何字符(除换行回车)
    • *:代表前面的字符出现一次或多次
    • ?:非贪婪匹配,找到左边界后,只要有匹配的右边界就停止继续查找;再次查找左右边界
    • .*:从左边界开始到最后一个右边界为止,中间的所有字符都会被匹配

    Jmeter中的正则表达式提取器:

    方式:测试计划-线程组-HTTP请求-添加-后置处理器-正则表达式处理器

    image

    2、XPath提取器

    适用于响应体格式为HTML的请求

    方式:测试计划-线程组-HTTP请求-添加-后置处理器-XPath提取器

    image

    3、Json提取器

    适用于响应体格式为Json的请求

    方式:测试计划-线程组-HTTP请求-添加-后置处理器-Json提取器

    image

    4、跨线程组关联

    当有依赖关系的不同请求分别位于不同线程组时,不能用提取器来传递参数,而要通过Jmeter属性来传递

    六、Jmeter脚本录制

    方式:

    • 测试计划-添加-线程组
    • 测试计划-添加-非测试元件-HTTP代理服务器,更改目标控制器的值为测试计划>线程组
    • 测试计划-添加-配置元件-HTTP Cookie管理器(无需设置)
    • 调整本机的代理服务器地址和端口为接口地址
    • 开始录制

    image

    七、Jmeter逻辑控制器

    用于控制脚本执行逻辑

    1、IF逻辑控制器

    方式:测试计划-线程组-添加-逻辑控制器-如果(if)控制器

    2、循环控制器

    方式:测试计划-线程组-添加-逻辑控制器-循环控制器

    3、ForEach控制器

    方式:

    • 新建线程组并添加HTTP请求
    • 测试计划-线程组-HTTP请求-添加-后置处理器-正则表达式处理器(任意处理器均可)
    • 再次新建线程组并添加HTTP请求(用于调用ForEach控制器返回的参数)
    • 添加ForEach控制器,方式:测试计划-线程组-添加-逻辑控制器-ForEach控制器(用于接收上一个请求后置处理器返回的参数)

    image

    八、Jmeter定时器

    1、同步定时器(Synchronizing Timer)

    SyncTimer的作用是阻塞线程,直到阻塞到指定的N个线程后再释放它们,用于执行大数据量的并发请求

    方式:测试计划-线程组-HTTP请求-添加-定时器-Synchronizing Timer

    image

    2、常数吞吐定时器(Constant Throughput Timer)

    作用:让Jmeter按指定的吞吐量(以每分钟样本数为单位)执行。吞吐量的计算范围可指定为当前线程、线程组和整个测试计划

    image

    九、Jmeter分布式测试

    当性能测试需要模拟的负载规模过大,超出了单台测试机的硬件性能时,使用多台测试机联合模拟负载,这就是分布式测试。

    主机(Master)——代理机(Slave,可以有多个)——被测系统(Target)

    其中主机负责分发任务并汇总响应结果,代理机负责执行主机分发的任务并对响应进行处理

    image

    注意事项:

    • 关闭测试机上的防火墙
    • 所有主机、测试机和被测系统应当位于同一局域网内
    • 主机和测试机上Jmeter和JDK的版本保持一致
    • 关闭Jmeter中的RMI SSL开关

    十、Jmeter监听器——报告

    1、聚合报告

    image

    重点关心的性能指标

    • 响应时间:观察最大最小值的波动范围
      • 波动大:以90%的响应时间做为最终性能响应时间结果
      • 波动小:以平均响应时间作为最终性能响应时间结果
    • 错误率
    • 吞吐量

    2、HTML报告

    生成HTML格式的Jmeter报告

    方式:

    • 进入Jmeter的/bin目录
    • 执行命令:jmeter -n -t [jmx file] -l [result file] -e -o [html report folder]
  • 相关阅读:
    将Nginx添加到windows服务中
    springboot使用redis管理session
    GIT常用命令
    阻止360、谷歌浏览器表单自动填充
    谈谈对Spring IOC的理解
    同一个Nginx服务器同一端口配置多个代理服务
    LeetCode 653. Two Sum IV
    109. Convert Sorted List to Binary Search Tree(根据有序链表构造平衡的二叉查找树)
    108. Convert Sorted Array to Binary Search Tree(从有序数组中构造平衡的BST)
    LeetCode 236. Lowest Common Ancestor of a Binary Tree(二叉树求两点LCA)
  • 原文地址:https://www.cnblogs.com/silentor/p/14725449.html
Copyright © 2011-2022 走看看