当前位置: 首页 > news >正文

服务端性能测试——性能测试工具JMeter-L1

第一遍没学懂,后续文章会更新~ 

目录:

  1. 1.JMeter介绍与安装
  2. Meter简介
  3. JMeter安装
  4. 2.JMeter的运行
  5. JMeter运行、界面功能简介
  6. 3.使用代理服务器录制请求
  7. 录制压测脚本(一)Web端
  8. 脚本录制方法
  9. 4.测试计划
  10. 5.线程组
  11. 6.控制器
  12. 7.JMeter采样器/取样器
  13. 8.JMeter场景逻辑控制技术
  14. 9.JMeter监听器
  15. 10.JMeter定时器
  16. 11.JMeter断言元件的使用
  17. 12.JMeter常用配置元件剖析
  18. 13.JMeter前置处理器
  19. 前置处理器
  20. SampleTimeout前置处理器
  21. Beanshell前置处理器
  22. 14.JMeter后置处理器
  23. 15.JMeter执行顺序
  24. 16.JMeter虚拟用户管理
  25. 17.HTTP请求属性设置
  26. 18.HTTPcookie设置
  27. Cookiemanager
  28. 19.HTTP信息头管理器
  29. Headermanager
  30. 20.HTTP请求设置
  31. 21.监听器与测试结果
  32. Listener&测试结果

1.JMeter 介绍与安装

Meter简介
  • Apache组织开发的开源免费压测工具
  • 纯Java程序,跨平台性强
  • 源程序可以从网上下载高可扩展性
  • 可对服务器、网络或对象模拟巨大的负载,进行压力测试可以用于接口测试
  • 支持分布式、多节点部署
JMeter 安装 

下载位置:

  • 官网 https://jmeter.apache.org/
  • binary 可运行文件包
  • 官网下载规律 首页 -> Download -> binaries
  • JMeter 安装方法: 直接解压
  • Demo: JMeter 官网寻找安装包,下载,解压

2.JMeter 的运行

JMeter 运行、界面功能简介
  • 运行环境要求:java运行时环境
  • 运行方法:命令行直接启动 $jmeter_home/bin/jmeter.sh
  • 常规的菜单功能:新建、保存、查询、配置、帮助 等
  • 压测运行相关:开始运行、停止运行、远程运行、停止远程运行 等
  • 设定外观长相更改
  • 配置语言,不过建议用英语(个人体会中文翻译的有点晕)
  • Demo – JMeter 界面操作、外观、语言

3.使用代理服务器录制请求

录制压测脚本(一)Web 端
  • 压测对象 - http://news.baidu.com
  • 压测页面 – 百度首页,百度新闻
  • 步骤:
    • 访问百度首页
    • 单击进入“百度新闻”
  • 操作手段: 录制回放,上手容易,入门学习的好手段
脚本录制方法 
  • 打开 JMeter
  • 新建压测脚本
  • 添加 “HTTP(S) Test Script Recorder”

  • 添加“Thread Group”

  • 在 Thread Group中添加“Recording Controller” 

  • 打开 HTTP(S) Test Script Recorder
  • 设定 Port = 8088
  • 设定 Target Controller = Test Plan > Tread Group > Recording Controller

  • 在 Requests Filtering 添加“include”与 “Exclude”URL 正则匹配表达式
  • 目的:避免录制过多没必要的请求
  • Include: .*\.(baidu\.com).*
  • Exclude:.*\.(js|css|PNG|jpg|ico|png|gif).*

  • 关于链接过滤的几点说明
  • exclude 去掉一些诸如图片、js、css 等静态请求,这些静态资源一般会 单独存放,不会占用服务器运算资源所以压测的时候可以不测试这些资源
  • include 包含内容,只抓取百度URL的内容,不抓其他的网站的内容
  • 正则表达试匹配原理快速入门说明见下页图片说明(菜鸟教程)

  • 单击保存按钮,命名文件名,将对 JMeter 脚本的更改存储到磁盘
  • 打开浏览器,将浏览器的代理服务器地址指向 http://localhost:8088 

  • 单击HTTP(S) Test Script Recorder中的Start按钮,打开代理
  • 单击弹框中的确定按钮
  • JMeter的录制代理将会开启 

  • 在对应的浏览器中访问百度首页
  • 进入百度新闻站点
  • 停止JMeter的代理服务
  • 可以看到对应的请求已被录制到JMeter中了

 

  • Demo – JMeter 脚本的录制过程,过滤资源的对比展示
  • 回放验证
  • 添加 View Results Tree
  • View Result Tree 的用途: 看Req /Resp 详情 

  • 只是为了检验,所以一个并发、一次循环即可
  • 单击开始运行按钮 

  • 在 View Result Tree 中
  • 检查 请求/响应 是否都成功了 

  • JMeter 压测回放,检查脚本的正确性 

4.测试计划

  • 用来描述一个压力/性能测试脚本和场景设计的基本运行单元, 使用JMeter进行测试 的所有内容都是基于一个测试计划
  • 用户定义变量

  • 独立运行每个线程组
    • 不勾选:各个线程组并行、随机执行
    • 勾选:线程组按照前后顺序来执行
  • 主线程组运行完成之后运行tearDown线程组
  • 函数测试模式,比如保存响应数据或者样本数据,需要注意的是选择该功能非常磁盘 空间
  • 添加文件或者jar包,常用于外部功能调用
  • Demo: 测试计划 

5.线程组

  • 线程组元件是任何一个测试计划的开始点,在一个测试计划中的所有元件 都必须在某个线程组下,所有的任务都是基于线程组。
  • 第一部分:在请求取样器执行错误时需要执行的下一步动作
  • 第二部分:线程属性

  • 第一部分:在请求取样器执行错误时需要执行的下一步动作
    • Continue:继续执行接下来的操作
    • Start Next Loop:忽略错误,执行下一个循环
    • Stop Thread:退出该线程(不再进行此线程的任何操作)
    • Stop Test:等待当前执行的采样器结束后,结束整个测试
    • Stop Test Now:直接停止整个测试
  • 第二部分:线程属性
    • Number of Thread (users):线程数,模拟的用户数量
    • Ramp-up Period(in seconds):达到指定线程数所需要的时间。举例:线程数设置 为50,此处设置为5,那么每秒启动的线程数 => 线程数50/5 = 10
    • Loop Count: 循环次数
    • Same user on each iteration:每次迭代都用相同的用户, 勾选该选项则不同次迭代 之间是串行执行,不勾选则为并行执行。
    • Delay Thread creation until needed:当线程需要执行的时候,才会被创建。如果不 选择这个选项,那么,在计划开始的时候,所有需要的线程就都被创建好了 
    • Specify Thread lifetime:定义线程调度时间
    • Duration (seconds): 持续时间(秒), 在此选项填入N,说明这个计划, 从某个开始时间算起,执行N秒后结束。(会忽略 结束时间 的选项)
    • Startup delay (seconds): 启动延迟(秒),在此选项填入N,手动点击 开始执行计划,然后延迟N秒后,计划才真正开始执行。

6.控制器

  • 种类丰富
  • 为请求执行提供不同的逻辑控制
  • 介绍几个常用的逻辑控制器
    • 事务控制器 Transaction Controller
    • 条件控制器 If Controller
    • 循环控制器 Loop Controller
    • 随机控制器 Random Controller

7.JMeter 采样器/取样器

  • 采样器(取样器): 模拟用户操作,向服务器发出请求的组件;
  • 采样器作用:向服务器发送请求,记录响应信息与响应时间;
  • 常用采样器讲解:
    • HTTP Request Sampler
    • Debug Sampler
    • BeanShell Sampler

8.JMeter 场景逻辑控制技术

  • 利用JMeter 逻辑控制器
  • 实现测试业务流程中的逻辑变化
  • 模拟实际业务场景

  • 场景逻辑控制技术

9.JMeter 监听器

  • 用来动态的监控JMeter执行测试的过程,实时查看测试结果;
  • 常用监听器:
    • 查看结果树
    • 聚合报告
    • 后端监听器

10.JMeter 定时器

  • 顾名思义,定时器是用来控制采样器发出请求开始时间的组件
  • 常见定时器:
    • 固定定时器
    • 高斯随机定时器
    • 吞吐量定时器
    • 并发定时器

11.JMeter 断言元件的使用

  • 断言的作用就是让 JMeter 程序判断预期结果和实际结果是否一致,从而 判定请求是否成功
  • 常见断言:
    • 响应断言
    • 大小断言
    • XPath 断言
    • Json 断言

12.JMeter 常用配置元件剖析

  • 配置元件的用途
  • 常见的配置元件
  • 配置元件的执行顺序
  • 配置元件的作用范围
  • 配置元件执行结果的查看

13.JMeter 前置处理器

前置处理器 
  • 在取样器发送请求之前执行,做一些准备工作,如设置参数、环境变量等
  • 常见前置处理器举例:
    • Sample Timeout 前置处理器
    • BeanShell 前置处理器
Sample Timeout 前置处理器 
  • 设定请求超时时间
  • 作用范围内的所有请求均生效
  • 单位:毫秒
Beanshell 前置处理器
  • 什么是Beanshell
  • 小型嵌入式 Java 源码解释器
  • 基本就是 Java 语言
  • BeanShell前置处理器:在Sampler 执行之前会被执行
  • 直接在JMeter的Beanshell处理器中写代码生成当前时间戳
  • 通过程序生成当前时间戳
  • 将时间戳值赋值给变量,然后传递给后续的请求样本 

14.JMeter 后置处理器

  • 后置处理器主要用于取样器执行后的提取数据操作;
  • 常见的后置处理器:
    • Json 数据提取器
    • 正则表达式数据提取器
    • XPath 数据提取器

15.JMeter 执行顺序

  • JMeter 八大组件
  •  执行顺序
  • 线程组->定时器->控制器->前置处理器->配置原件->采样器->后置处理器->断言->监听器

 

16.JMeter 虚拟用户管理

~

17.HTTP 请求属性设置

~

18.HTTP cookie 设置

Cookie manager 
  • 自定义cookie
  • 配置项 

19.HTTP 信息头管理器

Header manager
  • 自定义header 变量
  • Header变量值的带入

20.HTTP 请求设置

21.监听器与测试结果

Listener & 测试结果
  • Listener 种类多样
  • 展示 & 调试测试结果

相关文章:

服务端性能测试——性能测试工具JMeter-L1

第一遍没学懂,后续文章会更新~ 目录: 1.JMeter介绍与安装Meter简介JMeter安装2.JMeter的运行JMeter运行、界面功能简介3.使用代理服务器录制请求录制压测脚本(一)Web端脚本录制方法4.测试计划5.线程组6.控制器7.JMeter采样器/取…...

C# OpenCvSharp DNN FreeYOLO 目标检测

目录 效果 模型信息 项目 代码 下载 C# OpenCvSharp DNN FreeYOLO 目标检测 效果 模型信息 Inputs ------------------------- name:input tensor:Float[1, 3, 192, 320] --------------------------------------------------------------- Outp…...

U盘启动安装win11遇到缺少计算机所需的介质驱动程序问题

一、使用U盘制作启动盘遇到问题 下载了windows原版镜像,验证了md5,确保文件没有损坏。使用ultroiso制作u盘启动盘,开始安装后出现下图的报错: 在网上搜索解决方案,主要有以下几种: 安装的时候&#xff0c…...

正则表达式、文件访问(Python实现)

一、主要目的: 1.了解正则表达式的基本概念和处理过程。 2.掌握使用正则表达式模块 Re 进行字符串处理的方法。 3.了解文件的基本概念和类型。 4.掌握在 Python 中访问文本文件的方法和步骤。 5.熟悉在 Python 中访问二进制文件的方法和步骤。 二、主要内容和结…...

ES高级查询

ES中提供了一种强大的检索数据方式,这种检索方式称为Query DSL,这种方式的丰富查询语法让ES检索变得更强大,更简洁。 1.常见查询 1.1查询所有[match_all] match_all关键字:返回索引中的全部文档。 GET /products/_search { &…...

RT-Thread入门笔记6-空闲线程及两个常用的钩子函数

空闲线程 空闲线程是一个比较特殊的系统线程,它具备最低的优先级。当系统中无其他就绪线程可运行时,调度器将调度到空闲线程。 空闲线程还负责一些系统资源回收以及将一些处于关闭态的线程从线程调度列表中移除的动作 空闲线程在形式上是一个无线循环结…...

网络正常运行时间监控工具

正常运行时间是衡量系统可靠性的指标,表示为机器工作和可用时间的百分比。当提到 IT 网络时,正常运行时间是衡量网络设备、网站和其他服务的可用性的指标。网络正常运行时间通常以百分位数来衡量,例如“五个 9”,这意味着系统在 9…...

DEJA_VU3D - Cesium功能集 之 112-获取圆节点(1)

前言 编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合,有自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小140个左右的功能,后续也会不断的追加,所以暂时打算一周2-3更的样子来更新本专栏(每篇博文都会奉上完整demo的源代码…...

Matlab 建文件夹保存本次仿真图表数据和参数

文章目录 前言代码 前言 有时候跑的仿真参数非常多,保存结果的时候需要把仿真参数和数据一起保存,为方便起见,查了一下怎么建文件夹自动保存本次仿真图表数据和参数,再也不用担心忘记结果是什么参数跑出来的了~ 代码 % 定义变量…...

@JsonFormat与@DateTimeFormat

JsonFormat注解很好的解决了后端传给前端的格式,我们通过使用 JsonFormat可以很好的解决:后台到前台时间格式保持一致的问题 其次,另一个问题是,我们在使用WEB服务的时,可 能会需要用到,传入时间给后台&am…...

半监督学习 - 自训练(Self-training)

什么是机器学习 半监督学习中的自训练(Self-training)是一种利用已标记数据和未标记数据进行模型训练的方法。以下是自训练的详细教程: 步骤一:准备数据集 标记数据集: 收集和标记一小部分数据,用于有监…...

outlook邮件群发单显技巧?群发怎么单显?

outlook邮件群发单显如何设置?QQ邮箱怎么群发单显? 在群发邮件时,如何让每个收件人只看到自己的名字,而不是其他人的名字,这就涉及到所谓的“单显”技巧。下面蜂邮EDM就为大家揭秘Outlook邮件群发单显的奥秘。 outlo…...

【REST2SQL】07 GO 操作 Mysql 数据库

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 【REST2SQL】06 GO 跨包接口重构代码 MySQL是一个关系型数据库管理系统&#xf…...

[UI5] ODATA V4中的CRUD

文章目录 前言一、Read二、Create三、Update四、Delete 前言 ODATA V4在CRUD方面与V2截然不同。 这篇文章简单介绍V4中是如何进行CRUD操作 一、Read Model不再有read方法, 一般是把Path绑定到View中进行读取, 如果需要额外的读取数据,可使用…...

js封装根据年月日获取星座效果demo(整理)

//根据年月日获取星座 function getZodiacSign(dateString) {// 用法:const dateStr 2024-01-11;// const zodiacSign getZodiacSign(dateStr);const date new Date(dateString);const month date.getMonth() 1;const day date.getDate();if ((month 1 && day &…...

Vue.js设计与实现阅读-2

Vue.js设计与实现阅读-2 1、前言2、框架设计的核心要素2、1 提升用户体验2、2 控制代码体积2、3 Tree-Shaking2、4 特性开关2、5 错误处理 1、前言 上一篇我们了解到了 命令式和声明式的区别,前者关注过程,后者关注结果了解了虚拟dom存在的意义&#x…...

GEM5 McPAT教程:源代码解读McPAT NoC功耗 arbiter部分

简介 McPAT用的很多,大多只是写个python或perl脚本替换xml文件.没有深入到为什么xml脚本这些值要换,以及这写填进去xml的值是怎么影响计算的.本问从源代码一步步读下来,解释每一步是如何计算的. power 构成: 动态功耗其实更相关于energy McPAT的power 核心是两类,动态和静态…...

使用组合框QComboBox模拟购物车

1.组合框: QComboBox 组合框:QComboBox 用于存放一些列表项 实例化 //实例化QComboBox* comboBox new QComboBox(this);1.1 代码实现 1.1.1 组合框的基本函数 QComboBox dialog.cpp #include "dialog.h" #include "ui_dialog.h"Dialog::Dialog…...

云服务器十大服务商——云服务器哪家好用

云服务器哪家便宜?2024最新整理你要的都在这!头部云厂商阿里云、腾讯云、华为云、京东云、UCloud等都在降价,阿腾云atengyun.com分享2024年云服务器租用价格给你惊喜! 便宜云服务器阿里云腾讯云华为云 2024年便宜云服务器汇总&…...

SQL DML

# DML—添加数据 1.给指定字段添加数据 INSERT INTO表名(字段名1,字段名2,...)VALUES(值1,值2...); 2.给全部字段添加数据 INSERT INTO表名VALUES(值1,值2,...); 3.批量添加数据 INSERT INTO表名(字段名1,字段名2,...)VALUES(值1,值2..…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制&#xff0…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...

rknn toolkit2搭建和推理

安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 ,不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源(最常用) conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...

手动给中文分词和 直接用神经网络RNN做有什么区别

手动分词和基于神经网络(如 RNN)的自动分词在原理、实现方式和效果上有显著差异,以下是核心对比: 1. 实现原理对比 对比维度手动分词(规则 / 词典驱动)神经网络 RNN 分词(数据驱动&#xff09…...