热门标签 | 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]

推荐阅读
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • java日志框架详解
    Java日志框架详解1.常用日志框架1.1Java常用日志框架类别1.2Java常用日志框架历史1.3两大日志接口阵营1.3.1基于CommonsLogging接口实现的常用日志框 ... [详细]
  • asp.net 有什么框架,有什么技术
    原文地址:http:www.cnblogs.comvirusswbarchive201201102318169.html文章写的很好,转载一些到自己的博 ... [详细]
  • import?java.io.IOException;import?java.io.InputStream;import?java.util.Properties;impor ... [详细]
  • 开发笔记:MyBatis03:ResultMap及分页
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了MyBatis03:ResultMap及分页相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
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社区 版权所有