深度图文详解带你入门Jmeter

Jmeter学习笔记

前言

  • 学习环境为本地演式环境,如果需要,请在评论区留言

JDK安装及配置

Jmeter安装

本地演式环境

  • 打开文件目录运行cmd,执行以下命令:java -jar postman-API.jar
  • 本地IP:192.168.6.168
  • 端口:8085
    image-20240407204924673# Jmeter界面调整
    image-20240315153745614## 界面调整
  • 选项—放大/缩小
    image-20240315151133210## 参数调整
  • 找到 jmeter 目录,打开文件:D:\Program Files (x86)\apache-jmeter-5.6\bin\jmeter.properties
  • 参数调整,并保存
  • 重启JMeter,效果才能生效
  • 选项—外观—Windows
  • PS: 参数前的#号要删除,否则会不会生效
    image-20240315151404205### 汉化
language=zh_CN

image-20240315151818018### 界面比例

jmeter.hidpi.mode=true
jmeter.hidpi.scale.factor=2.5

image-20240315151908498### BodyData消息体

jsyntaxtextarea.font.family=Hack
jsyntaxtextarea.font.size=35

image-20240315153242232### 工具栏大小

# 默认大小:22x22
# 可用大小:22x22, 32x32, 48x48
jmeter.toolbar.icons.size=48x48

image-20240315153553923### 左侧树结构

默认大小:19x19
可用大小:19x19, 24x24, 32x32, 48x48
jmeter.tree.icons.size=32x32

image-20240315153547157

测试计划

  • Jmeter测试计划其实就是一个测试用例,测试用例中包含了操作步骤,比如先登录,才能查看个人信息

线程组

  • 线程组:简单来说就是一个线程集合,线程组的出现是为了更方便地管理线程。
  • setUp线程组:最优先执行的线程组(相较于普通线程组而言)
  • tearDown线程组:最后执行的线程组(相较于普通线程组而言)
    image-20240408102715666
    image-20240408102848726

取样器

  • 定义: 用于发送请求

HTTP请求

  • 测试计划—线程组----HTTP请求!!注意是在组程中添加HTTP请求!!
    image-20240408102111277
  • 必备填写信息如下图所示,根据实际需求进行填写
    image-20240408114623209

结果树

  • 会将请求结果以树的形式展示出来
  • 线程—>监听器—>查看结果树
    image-20240408102422061
  • 返回的是token信息与接口需求文档要求符合
    image-20240408141645174

HTTP请求默认配置

  • 如果多个HTTP请求存在大量相同的配置,可以通过HTTP请求默认值简化HTTP请求相关的配置
  • 测试计划—>配置元件—>HTTP请求默认配置
    image-20240408102932938
    image-20240408142816045

HTTP信息头管理器

  • HTTP信息头管理器:当我们发送的请求,需要传递JSON数据,则需要设置传递数据的格式
    image-20240408103202583
Content-Type: application/json;chartset=utf-8

image-20240408103227006

定时器

固定定时器

  • 定时器执行优先级高于取样器
  • 说明:在每一个线程执行前延迟固定时间
  • 当前接口运行两次,且每次会间隔5秒,如图所示
  • 测试计划—>定时器—>固定定时器
    image-20240411100141692

测试活动

  • 说明:在每一个线程执行后延迟固定时间
  • 线程组—>取样器—>测试活动
    image-20240411103223564

接口数据关联

使用场景

  • A接口/B接口:登录接口/个人信息接口
    • 要求:B接口需要使用到A接口返回的token数据,才可以查看到个人信息接口的数据
    • 解决方法:提取返回数据中的token数据

全局变量

  • 使用元件:用户定义的变量,适用场景:不经常变动的数据,如端口等

  • 测试计划—>配置元件—>用户定义的变量

image-20240411094642602

定义全局变量

image-20240411094738322

调用变量

  • ${var}
    image-20240411094845322

局部变量

  • 注意:是在同一个程线程组使用

提取变量

  • 线程—>后置处理器—>JSON提取器,将token的值提取出来
    image-20240408144240951
$.token

image-20240408144520841image-20240408144859388
通过调式取样器查看,是否提取token成功

  • jmeter 属性:是否查看jmeter属性,默认不展示(false)
  • jmeter variables:是否查看运行时变量,包括自定义变量、脚本运行时添加的变量等,默认展示(true)
  • 系统属性:是否查看系统属性,默认不展示(false)
    image-20240408145018114
  • 查看取样器是否提取出指定的值,且该值只能当前线程中使用
    image-20240408145127038

调用变量

  • 注:登录请求接口和个人信息接口都在用户组1内,提取的变量可以在同一个线程组内使用!!!!
  • 调用语法:${var}

image-20240410155128449

  • 如果不是在同一个线程组内,则不能直接进行调用,需要将提取的变量设置成全局的变量才可以进行调用
    image-20240410155331979

跨线程全局变量

  • 上面讲了,局部的变量只能在同线程内使用,不能跨线程使用,有些不符合实际工作需求,就需要跨线程组使用
  • 登录用户和

提取数据

  • 登录用户,使用json提取器提取token
    image-20240412174434732

函数助手设置全局变量

  • 按图操作
    image-20240412174757330
  • 登录线程创建BeanShell取样器,将值放入
    image-20240412175002210
    image-20240412175019012

调用变量

  • 在其它线程中调用该属性
${__property(login_token)}
  • 自行替换括号内的值:login_token
    image-20240412175052667
  • 查看请求结果
    image-20240412175232207

json提取网

CSV参数化

  • 参数化:动态的获取、设置或生成数据,是一种由程序驱动代替人工驱动的数据设计方案,提交脚本的编写效率以及编写质量。作用和HTTP默认值,类似,都是为了简化书写,通过参数化,我们可以较少配置
  • 以下四种方式实现参数化:
    • 用户定义的变量
    • CSV数据文件设置(常用)
    • 用户参数
    • 函数

方法①:用户定义变量

  • 测试计划—>配置元件—>用户定义的变量
  • 适用于不经常变动的变量,如IP地址/端口
    image-20240408103724823
  • 现在我们的取样器中的请求路径, 相当于配置了一个全局变量
    • 使用${url}替代192.168.6.168
    • 使用${port}替代8085端口号
      image-20240408112350049

方法②:CSV数据文件设置

  • 先准备一个CSV数据文件,注意该文件一定要是UTF-8编码格式,否则会出现乱码现象(详情参考信息头管理器)
  • xxx.csv和xxx.txt两种文件后缀格式都可以,但要求内容必须是csv格式内容!!!
    CSV格式展示
    image-20240408135131937
    测试计划—>配置元件—>CSV Date Set Config
    image-20240408103924704
  • 配置CSV数据文件设置:(变量名要和上cvs.txt文件中数据保持一致)
    image-20240408112803841

方法③:函数

  • 目前取出的token只能在线程组内使用, 要想跨线程组调用,需将他存入系统变量,这里需要使用Beanshell后置处理程序
  • 将token值在jmter中进行调用,调用语法:$Variable
    image-20240408150957327
  • 这时需要用到jmeter内置函数__setProperty(tool–函数助手对话框–选择setProperty)
    image-20240408154127081
    image-20240408154023405
  • ​ 测试计划—>添加—>非测试元件—>属性显示
    image-20240408154355617
  • 执行后再查看token是否设置全局变量成功,如图所示则表示成功
    image-20240408154608412

调用变量

语法:	${var},即${token}

断言

  • 断言就是对响应结果进行判断,是否符合预期,这就是断言
  • 界面中是所有断言方式,根据实际实际选
    image-20240409112759826

JSON断言

  • 重点:你要检查哪个请求,就把断言放在对应的请求下一级
  • 当前JSON断言是对应的个人信息
    • 错误则会弹出错误信息
  • 线程—>断言—>JSON断言

image-20240409112657323

  • 断言结果查看
    image-20240409113020574

录制

  • 录制的原理,就是通过抓包的机制,类似同Fiddler一样
  • 当前使用的火狐浏览器

配置录制环境

  • Jmeter提供了录制浏览器的请求方法,使用的代理抓包机制

    • 确保HTTP默认请求服务器IP和录制IP一致

在这里插入图片描述

  • 在整个测试计划下面添加HTTP代理服务器
  • 在线程组添加逻辑控制器—录制控制器
    image-20240409160242988
  • 常用过滤器设置
  • ..(js|css|PNG|jpg|ico|png|gif).
    image-20240409160137998

火狐浏览器配置

  • 其它浏览器请自行查看
    image-20240409153511629

开始录制

  • 点击启动按钮,开始进行录制
    image-20240409161647437
  • 自定义事务名称
    image-20240409161833889

清除录制记录

  • 选择录制控制器,点击右边的Clear,如图所示
    image-20240409161857931

执行压力测试

界面执行

  • HTTP请求—>监听器—>聚合报告
    image-20240411152507964
  • 查看聚合报告
    image-20240411152543476

执行命令

  • 使用命令行执行命令
D:\Program Files (x86)\apache-jmeter-5.6\bin\jmeter -n -t 脚本路径及名称.jmx -l 日志名.jtl
    
D:\Program Files (x86)\apache-jmeter-5.6\bin\jmeter -n -t 脚本路径及名称.jmx -l 日志名.jtl

统计报表

  • 日志名命令行运行结果的名字一致
  • 注意:-o后面的目录一定要不存在或内容为空,否则会报错
  • report为目录
D:\Program Files (x86)\apache-jmeter-5.6\bin\jmeter -g 日志名.jtl -o report
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上开始

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值