一、JMeter概述
JMeter是通过中间代理,监控和收集并发客户端发出的指令,把他们生成脚本,再发送到应用服务器,再监控服务器反馈结果的一个过程。
二、安装并运行JMeter
1.安装包管理工具brew
brew 是 Mac 下的一个包管理工具,类似于 centos 下的 yum,可以很方便地进行安装/卸载/更新各种软件包,可以用来快速搭建各种本地环境。
终端下输入如下命令即可安装。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew的使用可以参考官网:https://brew.sh/index_zh-tw.html
2.安装java环境
1.JMeter是Apache组织开发的基于Java的压力测试工具,因此想要使用jmeter必须先配置好java环境。
终端下输入如下命令即可安装:
brew cask install java
2.mac下安装jmeter:终端下输入命令:brew install jmeter
3.运行jmeter:终端下输入命令jmeter
运行成功后进入jmeter图形界面
可以通过菜单设置语言
三、JMeter主要功能
JMeter是以元件(也叫元素、组件)来组织它的功能模块的,也就是说你在测试中要使用的所有功能都有对应的元件来支撑。
下面这篇教程可以让你快速了解JMeter的各种元件,但是比较笼统。 这是一篇笼统介绍所有JMeter元件的教程
进行一次最简单的测试必须包括的元件也有:测试计划、线程组、取样器(http请求)、监听器(查看结果树)、断言(响应断言)、配置元件(HTTP Cookie管理器,用户定义的变量)下面依次详细介绍。
1、测试计划,
- 1).用户定义的变量,测试计划的全局变量
- 2).测试计划下如果多个线程组,默认并行,勾选后则顺序执行
- 3).运行完TearDown线程组关闭整个线程。
- 4).勾选之后则会保留采样的数据(查看结果树采样的数据,见采样器部分)到采样器配置的文件中。可能会影响压测线程本身的性能,不建议使用。
- 5).导入jar包
2、线程组
- 添加线程组:
- 线程组分三种,常规线程组,初始化线程组,结束后清理线程组。
- 一个测试计划可以添加多个线程组
- 线程数:表示并发用户数
- ramp-up时间:延迟启动时间
- 循环次数:线程组的循环次数
- 持续时间:表示脚本持续运行的时间,以秒为单位,比如如果你要让用户持续不断登录1个小时,你可以在文本框中填写3600。如果在1小时以内,结束时间已经到达,它将会覆盖结束时间,继续执行。 (即可以表示成优先级比结束时间高,如果持续时间比结束时间先到了,那么就将停止线程)
- 启动延迟:表示脚本延迟启动的时间,在点击启动后,如果启动时间已经到达,但是还没有到启动延迟的时间,那么,启动延迟将会覆盖启动时间,等到启动延迟的时间到达后,再运行系统。
PS:如果要设置线程组定时跑5分钟,那么直接在线程组中设置持续时间为300s即可,不用管启动时间或结束时间
注意:如果我们需要用到调度器来设定持续时间,如果线程数不够多到持续时间结束,我们就必须将循环次数勾选为永远,特别地,如果线程组里面有其他的循环,我们也需将该循环次数勾选为永远(如我上面录制的脚本中的Step1也是一个循环,需要将永远勾选),否则,按我如上配置,将永远去掉勾选,文本里填1,那么无论你将持续时间启动时间结束时间等设置多少,系统运行1000次后,将会停止不再运行。
3.取样器(HTTP请求)
- 添加取样器
- 协议:协议类型
- 服务器名称或IP:域名或者ip
- 端口号:端口号,默认80
- 方法:请求方法
- 路径:请求url
- 参数:key-value形式参数
- 消息题数据:json格式参数
- 文件上传:上传文件
4.配置元件(HTTP Cookie管理器,用户定义的变量)
- 添加HTTPCookie管理器
- 添加用户自动移的变量
- key-value形式添加变量(此变量为局部变量,可以在对应线程组内使用,使用规则${key})
5.断言(响应断言)
- 添加响应断言
6.监听器(查看结果树,断言结果)
- 添加查看结果树
- 添加断言结果
四、参数化
- 添加配置元件-csv数据文件设置
参数化文件使用CSV文件,即逗号分隔值,
文件名:填写参数化配置文件绝对的地址
变量名称,即每一列数据的变量名
遇到文件结束符再次循环,http请求结束后继续执行下一组数据
五、关联
在某些业务场景中b接口需要的内容是a接口返回的,对a接口设置正则表达式,提取想要的值,在b接口中引用。
使用关联首先在取样器下添加-后置处理器-正则表达式提取器
- 引用名称:即变量名称,调用方法与变量一致,即${引用名称}
- 正则表达式:根据上下文获取需要的数据,()内的数据即变量的数据,()左边两边是你取值的边界
- 模版:表示将解析到的第几个值赋予给引用名称,需要用$$引用起来
- 匹配数字:如果你的模版匹配到了多个值,0代表随机,1代表全部,如果你想使用匹配到的第一个值,即${引用变量_g1},第二个值即${引用变量_g2}
- 缺省值:如果没有匹配到的默认值。