Jmeter详解

Blazemeter

界面详解

image-20230505225046209

image-20230505232121445

  • Disable Browser Cache:禁用浏览器缓存。如果勾选了这个选项,BlazeMeter会在录制脚本时自动添加一个HTTP Cookie Manager来确保请求不使用浏览器缓存

  • Wipe Service Workers:清除Service Workers。如果您的应用程序使用了Service Workers,则勾选此选项可以确保录制的脚本不受Service Workers干扰

  • Record Ajax Requests:记录Ajax请求。如果勾选了这个选项,BlazeMeter会自动记录所有Ajax请求并将其添加到录制的脚本中

  • Update Settings Before Running Test:在运行测试之前更新设置。如果勾选了此选项,则在运行测试之前,BlazeMeter将更新所有设置以反映最新更改

  • Randomize recorded think times:随机化思考时间。如果勾选了这个选项,BlazeMeter会自动为录制的脚本中的每个事务添加一个随机思考时间(Think Time),以模拟用户在执行操作之间进行思考或等待的情况

Requests to Record

image-20230505230717727

  • only top-level requests: 该选项只会记录顶级请求,即页面加载期间发出的请求。这些请求包括HTML、CSS、JavaScript文件等。子请求,如Ajax请求或嵌套在页面中的图片、视频等资源将不被记录。这个选项可以用于快速创建基本测试脚本,而无需处理所有子请求

  • top-level requests and the following: 该选项将记录所有网络请求,包括顶级和子级请求,如Ajax、嵌套资源等。这个选项可以用于创建更详细的测试脚本,以模拟用户与应用程序之间的所有交互

  • 区别:两个选项之间的主要区别在于录制的范围。如果您只需要测试应用程序的基本功能,则可以使用“仅记录顶级请求”选项。如果您需要测试更详细的交互,则应选择“记录所有请求”选项

Jmeter

参数化

1、用户定义的变量

调用格式:${变量名}

  • 添加元件

image-20230507140611747

  • 配置元件

image-20230507142946888

  • 引用变量

image-20230507143107912

  • 执行查看结果树

image-20230507143209210

2、CSV数据文件设置

Demo

百度点名

  • 导入JMX文件

  • 创建CSV文本文件

image-20230505233122087

  • 添加CSV Data Set Config元件

image-20230505232533686

  • 配置CSV Data Set Config元件

image-20230505234303117

  • 使用参数

image-20230505235401526

  • 设置迭代次数

image-20230505235927079

  • 执行测试计划查看结构树

image-20230506000632729

3、用户参数

  • 添加用户参数元件

image-20230507132706317

  • 配置元件

image-20230507133137433

  • 使用参数—与CSV相同

  • 设置迭代次数

image-20230507133456620

  • 执行测试计划查看结构树

image-20230507133531695

4、函数

常见函数

counter

counter计时器函数:TRUE,每个用户有自己的计数器;FALSE,使用全局计数器

  • 选择函数模型

image-20230507134205418

  • 生成变量

image-20230507134521951

  • 设置线程属性

image-20230507134709508

  • 执行查看结果树

image-20230507134814388

  • 更改为flase查看结果树

image-20230507134859269

Random

Random随机数函数:参数1:一个范围内的最小值;参数2:一个范围内允许的最大值

  • 填入范围值

image-20230507135215651

  • 执行查看结果树

image-20230507135335002

time

time获取当前时间函数:获取时间戳,但是可以用格式转换

  • 填入时间格式

image-20230507135631476

  • 执行查看结果树

image-20230507140059546

数据库

  • 导入mysql-jdbc

image-20230507164426268

  • 添加元件

image-20230507164605605

  • 配置元件

image-20230507165229513

  • 添加JDBC请求

image-20230507165335653

  • 配置属性

image-20230507165642233

  • 执行查看结果树

image-20230507165725246

引用数据库操作

  • 取变量名

image-20230507171941602

  • 添加调试取样器

image-20230507172042960

  • 执行查看变量名

image-20230507172223286

  • 新建http请求

image-20230507172411087

  • 请求成功

image-20230507172726267

断言

响应断言

image-20230507175727315

响应文本
  • 设置断言

image-20230507180002525

  • 执行查看结果树

image-20230507180140461

  • 更换文本

image-20230507180232964

  • 再次执行报错

image-20230507180303322

响应代码
请求方式 要素1 (定位资源) 要素2 (提交的数据) 要素3 (响应的数据)
URL + GET 一般以键值对格式提交数据 状态码:200响应体:单条或多条查询信息
URL + POST 以键值对或JSON格式提交数据 状态码:201(或200)响应体:新增后的数据
URL + PUT 以键值对或JSON格式提交数据 状态码:201(或200)响应体:修改后的数据
URL + DELETE 一般以键值对格式提交数据 状态码:204 响应体:无
  • 判断状态码

image-20230507181504294

  • 执行查看结果树

image-20230507181557774

  • 更换状态码

image-20230507181701977

  • 失败

image-20230507181726775

  • 选项—或者

image-20230507181938809

  • 成功

image-20230507182035028

大小断言

  • 设置断言

image-20230507184500677

  • 断言验证方法

image-20230507184156476

控制器

IF逻辑控制器

作用:允许您根据某些条件只运行特定的请求。如果条件为真,则执行该请求,否则将跳过该元素并继续执行测试计划中的下一个元素。

优点:可以根据特定条件动态地调整测试计划,以便更好地模拟真实场景。

缺点:如果有多个条件需要判断,则需要多个if逻辑控制器或者嵌套if逻辑控制器,导致测试计划复杂度增加。

  • 添加用户定义的变量

image-20230507190830985

  • 添加HTTP请求并增加IF控制器

image-20230507191036489

  • 编写IF控制器判断条件

image-20230507191611697

  • 执行结果

image-20230507191716755

  • 更改用户输入的变量

image-20230507191754765

  • 执行结果

image-20230507191900344

ForEach逻辑控制器

作用:允许您迭代一组变量,并为每个值执行一组请求。这个控制器通常与CSV数据文件或用户定义的变量一起使用,以便在每次循环迭代时使用不同的值。

优点:可以方便地对多个变量进行操作,并且可以在循环过程中修改变量值。

缺点:如果需要对大量数据进行操作,则可能会导致性能问题。

  • 添加HTTP请求并增加ForEach控制器

image-20230507194155606

  • 增加并编辑用户定义的变量

image-20230507193727907

  • 执行并查看结果树

image-20230507194250242

  • 注意点

image-20230507194549307

循环逻辑控制器

作用:允许您重复执行一组请求,直到达到指定的循环次数或条件。这个控制器通常与其他逻辑控制器结合使用,以便在特定情况下重复执行请求。

优点:可以轻松地重复执行相同的步骤,并且可以设置循环次数或者条件。

缺点:如果需要执行的步骤较多,则可能会导致测试计划执行时间过长。

image-20230507195833411

关联

JMeter中的正则表达式提取器和XPath提取器都是用于从服务器响应中提取特定数据的工具

JSON提取器

使用JSON格式来定位服务器响应中的特定节点,并将其提取出来

  • 添加元件

image-20230509110122550

  • 配置元件

image-20230509110749172

  • 引用变量

image-20230509110608437

  • 查看结果树–被引用的请求

image-20230509110841722

  • 查看结果树–引用的请求

image-20230509110945900

XPath提取器

使用XPath语法来定位服务器响应中的特定节点,并将其提取出来

  • 添加元件

image-20230507235651029

  • 配置元件

image-20230508000125595

  • 填入变量

image-20230508000309903

正则表达式提取器

使用正则表达式来匹配服务器响应中的特定文本,并将其提取出来

  • 配置参数

image-20230508004613726

跨越线程组传值

  • 添加取样器

image-20230508011615671

  • 获取全局变量的字符串

image-20230508011514424

  • 设置全局变量

image-20230508011846174

  • 引用变量

image-20230508012953865

  • 注意点

image-20230508014703242

  • 执行查看结果

image-20230508014116018

高并发

Demo

同一时刻100个用户访问网站,统计高并发情况下平均响应时间及错误率

  • 添加定时器

image-20230508143100384

  • 设置相关参数

image-20230508143240450

  • 添加聚合报告

image-20230508142412686

  • 设置线程数

image-20230508143351902

  • 执行查看聚合报告(单位:ms)

image-20230508144022380

高频率

Demo

一个用户以20QPS的频率访问网站,持续15秒,统计服务器响应时间

  • 添加定时器

image-20230508142322137

  • 添加聚合报告

image-20230508142412686

  • 计算每分钟的吞吐量

image-20230508142509776

  • 设置单用户循环次数

image-20230508142544468

  • 查看聚合报告的平均响应时间(单位:ms)

image-20230508142638006

分布式

JMeter的分布式测试是通过将负载分散到多个计算机上来模拟高并发用户访问的一种方式

  • 不同的测试机上安装Jmeter
  • 配置基础环境(统一操作系统、JDK、Jmeter…)
  • 控制机与执行机如何通信?端口号
  • 在控制机中的配置文件中添加所有其他计算机的IP地址或主机名

image-20230508150921393

  • 控制机与执行机都得设置远程访问相关属性

image-20230508151402414

  • 打开控制机与所有执行机的jmeter.bat的命令

  • 远程控制执行机

image-20230508152346177

生成图形化测试报告

在Jmeter安装目录下的bin目录进入命令行

命令:jmeter -n -t 脚本文件 -l 日志文件 -e -o 目录
-n 无图形化运行
-t 被运行的脚本
-l 将运行信息写入日志文件
-e 生成测试报告
-o 指定报告输出目录
  • 将JMX文件放入bin目录中

  • 进入命令行生成报告

image-20230508192224214

  • 进入目录查看文件

image-20230508192334925

  • 打开html文件查看报告

image-20230508192410798

posted @ 2023-05-08 22:58  璀璨如歌  阅读(325)  评论(0)    收藏  举报