热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

性能测试——Jmeter基本用法概述

Jmeter基本用法概述Jmeter:Apache组织开发的基于Java的性能测试工具Jmeter基本用法概述一、Jmeter安装与配置二、Jmeter文件目录介绍(*表

Jmeter基本用法概述

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

  • Jmeter基本用法概述
    • 一、Jmeter安装与配置
    • 二、Jmeter文件目录介绍(*表示常用)
    • 三、Jmeter元件
    • 四、Jmeter断言
    • 五、Jmeter关联
    • 六、Jmeter脚本录制
    • 七、Jmeter逻辑控制器
    • 八、Jmeter定时器
    • 九、Jmeter分布式测试
    • 十、Jmeter监听器——报告

一、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、正则表达式提取器

看个例子:

.*?

其中:

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

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]

推荐阅读
  • java日志框架详解
    Java日志框架详解1.常用日志框架1.1Java常用日志框架类别1.2Java常用日志框架历史1.3两大日志接口阵营1.3.1基于CommonsLogging接口实现的常用日志框 ... [详细]
  • 基本信息|根源_SpringBoot 监控统计:SQL监控慢SQL记录Spring监控去广告
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了SpringBoot监控统计:SQL监控慢SQL记录Spring监控去广告相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 开发笔记:MyBatis03:ResultMap及分页
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了MyBatis03:ResultMap及分页相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Springboot的日志管理&Springboot整合Junit测试&Springboot中AOP的使用
    Springboot的日志管理springboot无需引入日志的包,springboot默认已经依赖了slf4j、logback、log4j等日志。我习惯用slf4j,下面就用sl ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了sqlserver云存储和本地存储的区别,云存储是将数据存储在网络上,方便查看和调用;本地存储是将数据存储在电脑磁盘上,只能在存储的电脑上查看。同时提供了几种启动sqlserver的方法。此外,还介绍了如何导出数据库的步骤和工具。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 解决php错误信息不显示在浏览器上的方法
    本文介绍了解决php错误信息不显示在浏览器上的方法。作者发现php中的各种错误信息并不显示在浏览器上,而是需要在日志文件中查看。为了解决这个问题,作者提供了一种解决方式:通过修改php.ini文件中的display_errors参数为On,并重启服务。这样就可以在浏览器上直接显示php错误信息了。 ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • .htaccess文件 ... [详细]
  • log4j相关
    Log4j的类图Logger-日志写出器,供程序员输出日志信息Appender-日志目的地,把格式化好的日志信息输出到指定的地方去ConsoleAppe ... [详细]
  • 本文出自:web应用用cronolog分割tomcat的catalina.out文件#wgethttp:cronolog.orgdownloadcronolog-1. ... [详细]
  • 将内网IP虚拟成外网能够访问的域名
    应用场景:微信开发时经常需要回调地址,下面对微信需要的回调地址啰嗦几句回调地址(回调接口):(微信通过你的发送的请求(比如授权,支付等),响应给你的信息,但是他不知道怎么返回给 ... [详细]
author-avatar
newphper
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有