服务端性能测试——性能测试工具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.hqwc.cn/news/343530.html

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

相关文章

软件测试之项目立项与需求评审

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢软件测试面试题分享: 1000道软件测试面试题及答案📢软件测试实战项目分享: 纯接口项目-完…

【AI视野·今日NLP 自然语言处理论文速览 第七十二期】Mon, 8 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Mon, 8 Jan 2024 Totally 17 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers DeepSeek LLM: Scaling Open-Source Language Models with Longtermism Authors DeepSeek AI Xiao Bi, Deli Ch…

代码随想录二刷 |二叉树 | 二叉搜索树中的众数

代码随想录二刷 |二叉树 | 二叉搜索树中的众数 题目描述解题思路递归法非二叉搜索树的方式二叉搜索树的方式 迭代法 题目描述 501.二叉搜索树中的众数 给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数&…

第三节课 基于 InternLM 和 LangChain 搭建你的知识库作业

文章目录 笔记作业 笔记 基于书生浦语大模型应用开发范式介绍:https://blog.csdn.net/m0_49289284/article/details/135467197基于InternLM 和 LangChain 搭建你的知识库:Demohttps://blog.csdn.net/m0_49289284/article/details/135482658 作业 基础…

Casper Labs 与 IBM Consulting 合作,AI透明度、审计能力的新方案

​ “全新解决方案,旨在帮助企业更有效地管理训练数据,这些数据由不同的组织通过生成式人工智能系统产生” 企业区块链软件和服务提供商 Casper Labs 与 IBM Consulting 共同宣布,它们将联手推出新的解决方案,以帮助客户在其人工…

K8s:Pod生命周期

我们一般将pod对象从创建至终的这段时间范围称为pod的生命周期,它主要包含下面的过程: pod创建过程 运行初始化容器(init container)过程 运行主容器(main container) 容器启动后钩子(post st…

小程序微信登陆

小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。 登陆流程时序 说明: 1.调用wx.login()获取临时登陆凭证code,并传回开发者服务器 2.调用auth.code2Session接口换取 用户唯一标识 Ope…

昇腾910b部署Chatglm3-6b进行流式输出【pytorch框架】NPU推理

文章目录 准备阶段避坑阶段添加代码结果展示 准备阶段 配套软件包Ascend-cann-toolkit和Ascend-cann-nnae适配昇腾的Pytorch适配昇腾的Torchvision Adapter下载ChatGLM3代码下载chatglm3-6b模型,或在modelscope里下载 避坑阶段 每个人的服务器都不一样&#xff0…

C++(9)——内存管理

1. 内存分类: 在前面的文章中,通常会涉及到几个名词,例如:栈、堆。这两个词所代表的便是计算机内存的一部分 。在计算机中,对系统的内存按照不同的使用需求进行了区分,大致可以分为:栈 、堆、数…

解决uni-app小程序获取路由及路由参数

代码: this.id = this.$route.query.id;错误信息: 解决方案: // 获取query对象// #ifdef H5this.id = this.$route

OpenGl 19高级GLSL

一.GLSL的内建变量 在着色器中,需要当前着色器以外地方的数据的话,必须把数据传进来。之前我们是通过uniform类型和采样器来完成的。之外,GLSL还支持另外几个以gl为前缀的变量,提供更多读写数据的方式,比如说顶点着色…

第一次在RUST官方论坛上留言发布我的Rust板箱

第一次在RUST官方论坛上发帖子,有点紧张~地址在这里: 【My Rust Crate】obtains linux local information - The Rust Programming Language Forum (rust-lang.org)