• 性能测试——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]
  • 相关阅读:
    【python cookbook】【数据结构与算法】12.找出序列中出现次数最多的元素
    [转]ASP.NET MVC 5
    [转]ASP.NET MVC 5 学习教程:快速入门
    Using XSLT and Open XML to Create a Word 2007 Document
    如何在VS2010中更好的编写JavaScript代码
    [转]这五种方法前四种方法只支持IE浏览器,最后一个方法支持当前主流的浏览器(火狐,IE,Chrome,Opera,Safari)
    [转]C# 超高速高性能写日志 代码开源
    windows 2003 发布遇到问题---分析器错误消息: 未能加载类型“YWPT.MvcApplication”。
    将Oracle数据库转换为SQL Server
    SQLServer2008导出表数据为SQL脚本
  • 原文地址:https://www.cnblogs.com/silentor/p/14725449.html
Copyright © 2020-2023  润新知