Jmeter使用笔记

本文介绍了JMeter的安装步骤,包括配置JDK和下载JMeter。基础使用部分讲解了线程组、HTTP请求、信息头管理和Cookie管理器。还详细阐述了如何进行断言检查以及使用正则表达式提取数据。此外,文章还涉及了模拟并发测试、TPS和响应时间监听,以及解决乱码和保存问题的方法。
摘要由CSDN通过智能技术生成

Jmeter使用指南

一、Jmter安装

  1. 安装jdk并配置环境变量。

官网https://www.oracle.com/java/technologies/downloads/#java8下载jdk文件,后缀名为dmg格式,Windows环境下载exe文件。

配置环境变量具体可百度。

  1. 安装jmeter并配置成命令文件。

官网http://jmeter.apache.org/下载并安装后在安装目录下/bin/jmeter打开终端输入sh ~/apache-jmeter-5.4.1/bin/jmeter启动JMeter。

打开Mac的脚本编辑器,输入sh ~/apache-jmeter-5.4.1/bin/jmeter保存为文本文件后存放于桌面,并重名为 Jmeter.command。

用linux命令 chmod +x /Users/~/Desktop/Jmeter.command赋予可执行权限后再桌面双击即可打开Jmeter。

二、基础使用

  1. 线程组

常用的线程诅、setUp线程组、tearDown线程组。

setUp线程组:测试计划中进行初始化的线程组。

tearDown线程组:测试计划进行回收销毁的线程组。

线程组:即一个虚拟用户组,其中的线程数代表多少个虚拟用户,Rame-up时间为增长到指定线程数所需要的时间。

例如:1个线程组里面有10个请求,线程数为10个,跑完后得到10*10=100。

并发数:100;线程数:10;

2.http请求:

接口包含三要素请求地址/方式、请求参数和返回参数。

请求方式分为get和post。

get请求的请求参数用【参数】填写,其中的登录信息、编码方式Content-type可用httpCookie管理器。

post请求的请求参数用【消息体数据】进行填写,其中的登录信息、编码Content-type最好用http信息头管理器(否则可能会报错)

服务器地址和固定参数可以用变量,便于根据环境进行修改。

3.http信息头管理器(配置元件):

针对请求需要定义的规范,包括Accpet、User-Agent、Content-type、Cookie等。

4.httpCookie管理器:

对需要保存的信息以键值对的方式存储在Cookie中,且需要设置作用域。该域以下的请求都会带有Cookie。

获取Cookie中的值,在配置文件中meter.properties设置CookieManager.save.cookies=true保存Cookie后,Cookie会自动保存,如果需要获取cookie中的值,可使用${COOKIE_cookie名称}

5.断言及查看结果

断言常用的是响应断言,需要测试的字段一般是响应文本、响应头、请求头。

测试字段:

响应文本:响应文本信息,不包括响应头。

响应代码:对应http返回的响应码。

响应信息:匹配响应信息。

响应头:响应头信息。

模式匹配规则:
包括:如果文本中包含给定的正则表达式模式则为true

匹配:如果文本可以匹配给定的正则表达式则为true

Equals:如果整个文本等于给定的字符串(完全一模一样,大小写敏感)则为true。

Substring:如果文本包含模式字符串(大小写敏感),则为true

否:如果文本不包含或匹配给定文本,则为true

取样器分为主样器、子样器、主样器和子样器、要使用的变量名,一般默认主样器即可。

设置好断言后需要添加查看结果树,运行测试计划后查看结果树的断言结果。

三、正则表达式提取并跨线程使用

正则表达式是常用的一种后置处理器,用于提取变量并实现接口之间的关联。

引用名称:变量名称,线程内引用是${变量名}

正则表达式:() 括起来部分则是需要提取的部分。

            .  匹配除了换行以外的任何字符、

            * 重复某字符0次或更多次

            + 重复某字符1次或更多次

            ?  找到第一个匹配值后停止

            *? 重复任意次,但尽可能少重复

            +? 重复1次或更多次,但尽可能少重复

模板:用$$引用起来,例如$1$,表示多个正则表达式中第一个表达式()取到的值

匹配数字:0表示随机取值,-1表示所有值,1表示正则表达式取到的第一个值

缺省值:正则表达式匹配失败时的默认值

一个提取器提取多个值时,表达式有多个(),模板不用隔开 “$1$$2$” ,用一个变量接收,线程内使用时用变量_g1变量_g2即可。 

跨线程使用变量:

提取变量后在线程内使用BeanShell 后置处理程序,将变量${__setProperty(shareSign,${shareSign},)}存储为全局变量,然后跨线程使用时用引用全局变量${__P(shareSign,)}即可。

四、CSV数据提取器并模拟并发

如果需要模拟并发场景,则需要先创建好需要的测试数据文件,例如一般用csv文件或txt文件,如果是txt文件,多个参数用‘,’英文逗号隔开。

添加一个CSV数据文件设置,其中文件名直接浏览导入,文件编码用UTF-8,变量名称用‘,’隔开,文件中如果首行为参数名则选择忽略首行。分隔符用‘,’。

文件获取到的变量在线程内请求使用用{变量名}即可。

模拟并发场景还需要使用一个同步定时器,主要用于等待多少个线程数后同一时间请求,其中的模拟用户组的数量最好等于单个线程组的用户数,超时时间为超过多少时间后同时释放指定的的线程数,一般设置为0,该定时器会等待到指定数量,否则会一致等待。

五、TPS和响应时间监听器

TPS:吞吐量,指服务器每秒处理的事务数。其中的T在接口性能测试中指接口级,在业务中指每个业务和完整的业务流程。计算方式为 总处理请求数 / 总耗时 ),范围为RPS为单位。

响应时间:指请求从发出到接收到响应的总耗时,由网络传输耗时、服务处理耗时等多个部分组成,一般以ms为单位。

并发数:指在同一时间点同时请求服务的客户数量。

平均响应时间:指所有请求平均花费的时间

一般来说,当并发数增大时,吞吐率为上升,但当并发数达到某个边界值后,吞吐率则会下降。

Jmeter支持TPS监听和响应时间监听,需要下载第三方插件,网上下载plugins-manager.jar后放入Jmeter的安装目录下的lib/ext,然后重启后在选项中选择Plugins-Manager,选择Available Plugins中的jpgc - Standard Set插件。

六、实例说明

  1. 合作方要求某接口详情响应时间达到150ms,据往期推算高峰期接口回达到2W/秒,请规划需要多少台服务器资源?

性能基准=高峰期请求量/单体服务器承载量

评估报告应包括xx接口多少用户同时进行xx操作,包括消息成功率、平均响应时间、CPU使用率。

  1. 设置持续增加负载的负载场景,例如100个线程,每5秒增加20个进程直到100个进程,每个阶梯运行600秒,最后一个阶梯运行1000秒,最后每秒停止10个。

使用Stepping thread group线程组(逐渐加压线程组),不断加压。

3.在波浪型的压力测试场景中常用Ultimate thread group线程组,设置多个测试计划,按照时间轴顺序执行。

第一个任务:1000个线程在10秒内启动,持续运行1800秒,然后在10秒内结束运行;

第二个任务:1000个线程在第620秒的时候在10秒内启动完成,并运行1200秒,然后在10秒内结束运行;

第三个任务:1000个线程在第1240秒的时候在10秒内启动完成,运行600秒之后在10秒内结束运行;

七、常见问题

1.如果遇到乱码,可以在jmeter/bin目录下找到jmeter.properties文件,将#sampleresult.default.encoding=ISO-8859-1改为sampleresult.default.encoding=uft-8。

2.无法保存测试计划文件,一般是由于当前jmeter版本与系统不兼容导致,修改当前Jmeter的皮肤即可,不要选择系统黑色。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值