服务端性能测试——性能测试工具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 种类多样
  • 展示 & 调试测试结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/237309.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ Builder XE关于TDateTime批量加减时间TTimerPiker的设置

void __fastcall TForm3::Button3Click(TObject *Sender) { TDateTime *DT new TDateTime(); //new TDateTime类型变量 *DTTPicker1->Time; //加 1 小时: DT (double)DT 1/24; //加 1 分钟: DT (double)DT 1/(24*60); //加 1 秒钟: DT (double)DT 1/(24*60*60); …

Unity对应SDK和NDK版本的对照表

官网:Unity - Manual: Android environment setup 本人安装的是2022版本长期支持版本2022.3.15f1c1 安装Java的JDK环境就不在这里展开了,就记录下对Android SDK的设置,要与Unity的版本对应,否则会出现很多莫名奇妙的问题。 打开…

深入了解网络流量清洗--使用免费的雷池社区版进行防护

​ 随着网络攻击日益复杂,企业面临的网络安全挑战也在不断增加。在这个背景下,网络流量清洗成为了确保企业网络安全的关键技术。本文将探讨雷池社区版如何通过网络流量清洗技术,帮助企业有效应对网络威胁。 ![] 网络流量清洗的重要性&#x…

【服务器数据恢复】FreeNAS+ESXi数据恢复案例

服务器数据恢复环境: 一台服务器,虚拟化系统为esxi,上层使用iSCSI的方式实现FC SAN功能,iSCSI通过FreeNAS构建。 FreeNAS采用了UFS2文件系统,esxi虚拟化系统里有3台虚拟机:其中一台虚拟机安装FreeBSD系统&a…

MySQL-多表查询

🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页:小小恶斯法克的博客 🎈该系列文章专栏:重拾MySQL 🍹文章作者技术和水平很有限,如果文中出现错误&am…

Explain详解与索引最佳实践

听课问题(听完课自己查资料) type中常用类型详细解释 null <- system <- const <- er_ref <- ref <- range <- index <- all Explain 各列解释 EXPLAIN SELECT* FROMactorLEFT JOIN film_actor ON actor_id actor.id; 1. id 代表执行的先后顺序 比如…

ffmpeg[学习(四)](代码实现) 实现音频数据解码并且用SDL播放

0、作者杂谈 CSDN大多数都是落后的&#xff0c;要么是到处复制粘贴的&#xff0c;对于初学者我来说困惑了很久&#xff0c;大多数CSDN文章都是使用旧的API &#xff0c;已经被否决了&#xff0c;于是我读一些官方文档&#xff0c;和一些开源项目音视频的输出过程&#xff0c;写…

React Hooks中useState的介绍,并封装为useSetState函数的使用

useState 允许我们定义状态变量&#xff0c;并确保当这些状态变量的值发生变化时&#xff0c;页面会重新渲染。 useState 返回值 const [state, setState] useState(initialState);useState 返回一个长度为 2 的数组。通常&#xff0c;我们这样定义状态变量&#xff1a; co…

ActiveMQ反序列化RCE漏洞复现(CVE-2023-46604)

漏洞名称 Apache ActiveMQ OpenWire 协议反序列化命令执行漏洞 漏洞描述 Apache ActiveMQ 是美国阿帕奇&#xff08;Apache&#xff09;软件基金会所研发的一套开源的消息中间件&#xff0c;它支持Java消息服务、集群、Spring Framework等。 OpenWire协议在ActiveMQ中被用于…

C语言如何提高程序的可读性?

一、问题 可读性是评价程序质量的一个重要标准&#xff0c;直接影响到程序的修改和后期维护&#xff0c;那么如何提高程序的可读性呢? 二、解答 提高程序可读性可以从以下几方面来进行。 &#xff08;1&#xff09;C程序整体由函数构成的。 程序中&#xff0c;main()就是其中…

ArchVizPRO Interior Vol.8 URP

ArchVizPRO Interior Vol.8 URP是一个在URP中制作的建筑可视化项目。这是一个完全可导航的现代公寓,包括一个带开放式厨房的客厅、休息区、两间卧室和两间浴室。从头开始构建每一个细节,这个室内有130多件家具和道具、自定义着色器和4K纹理。所有家具和道具都非常详细,可以在…

使用 C++/WinRT 创作 API

如果 API 位于 Windows 命名空间中 这是你使用 Windows 运行时 API 最常见的情况。 对于元数据中定义的 Windows 命名空间中的每个类型&#xff0c;C/WinRT 都定义了 C 友好等效项&#xff08;称为投影类型 &#xff09;。 投影类型具有与 Windows 类型相同的完全限定名称&…

【.NET Core】Lazy<T> 实现延迟加载详解

【.NET Core】Lazy 实现延迟加载详解 文章目录 【.NET Core】Lazy<T> 实现延迟加载详解一、概述二、Lazy<T>是什么三、Lazy基本用法3.1 构造时使用默认的初始化方式3.2 构造时使用指定的委托初始化 四、Lazy.Value使用五、Lazy扩展用法5.1 实现延迟属性5.2 Lazy实现…

【LeetCode:30. 串联所有单词的子串 | 滑动窗口 + 哈希表】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

K8S后渗透横向节点与持久化隐蔽方式探索

前言 通常在红蓝对抗中&#xff0c;我们可能会通过各种方法如弱口令、sql注入、web应用漏洞导致的RCE等方法获得服务器的权限&#xff1b;在当前云原生迅猛发展的时代&#xff0c;这台服务器很可能是一个容器&#xff0c;在后续的后渗透由传统的提权变为容器逃逸&#xff0c;内…

【MySQL】导入导出SQL脚本及远程备份---超详细介绍

目录 前言&#xff1a; 一 navcat导入导出 1.1 导入 1.2 导出 二 mysqldump 导入导出 2.1 导入 2.2 导出 三 load data infile命令导入导出 3.1 导入 3.2 导出 四 远程备份 五 思维导图 前言&#xff1a; 随着当今企业发展&#xff0c;数据库的数据越来越多&…

POI:对Excel的基本写操作 整理1

首先导入相关依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><!--xls(03)--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.2</version></depend…

Java副本的概念

在Java中&#xff0c;"副本"&#xff08;copy&#xff09;一词可以用于描述不同的概念&#xff0c;具体取决于上下文。以下是两个常见的用法&#xff1a; 对象的副本&#xff1a;在Java中&#xff0c;当你创建一个对象并将其赋值给另一个变量时&#xff0c;实际上是创…

electron自定义窗口和右键菜单样式

前言 electron默认沿用系统UI&#xff0c;并没有提供很多接口供使用者定制样式&#xff0c;如果想要完全自定义的样式&#xff0c;目前我能想到的方案只能是通过前端自定义样式&#xff0c;然后通过进程通信来实现系统基础功能&#xff1a;最大/小化、关闭、拖动窗口等。 效果…

迈入AI智能时代!ChatGPT国内版免费AI助手工具 peropure·AI正式上线 一个想法写一首歌?这事AI还真能干!

号外&#xff01;前几天推荐的Peropure.Ai迎来升级&#xff0c;现已支持联网模式&#xff0c;回答更新更准&#xff0c;欢迎注册体验&#xff1a; https://sourl.cn/5T74Hu 相信很多人都有过这样的想法&#xff0c;有没有一首歌能表达自己此时此刻的心情&#xff1a; 当你在深…