Jmeter 测试使用基本组件结构

news2024/11/17 2:28:59

JMeter简介

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

JMeter安装

  • 下载位置
    • 官网https://jmeter.apache.org/ 2
    • binary可运行文件包
    • 官网下载规律 首页 → Download → binaries

JMeter运行

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

使用代理服务器录制请求

录制压测脚本(一)Web端

  • 压测对象 - http://www.baidu.com
  • 压测页面 - 百度首页,百度新闻
  • 步骤:
    • 访问百度首页
    • 单击进入“百度新闻”

脚本录制方法

  • 打开JMeter
  • 新建压测脚本
  • 添加“HTTP(S) Test Script Recoder”
  • 添加 Thread Group
  • 在 Thread Group中添加“Recordiing Controller”
  • 打开HTTP(S) Test Script Recorder
  • 设定 Port = 8088
  • 设定 Targer 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脚本的更改存储到磁盘
  • 打开浏览器,将浏览器的代理服务器地址指向https://locahost:8088
  • 开始录制
    • 单击HTTP(S) Test Script Recorder中的Start按钮,打开代理
    • 单击弹框中的确定按钮
    • JMeter的录制代理将会开启
    • 在对应的浏览器中访问百度首页
    • 进入百度新闻站点
    • 停止JMeter的代理服务
    • 可以看到对应的请求已被录制到JMeter中了
  • 回放验证
  • 添加 View Results Tree
  • View Results Tree 的用途:
    • 看Req/Resp详情
    • 只是为了检验,所以一个并发、一次循环即可
    • 单击开始运行按钮
    • 在View Results Tree中
    • 检查 请求/响应 是否都成功了

一、测试计划

  • 用来描述一个压力/性能测试脚本和场景设计的基本运行单元,使用JMeter进行测试的所有内容都是基于一个测试计划
  • 用户定义变量
  • 独立运行每个线程组
    • 不勾选:各个线程组并行、随机执行
    • 勾选:线程组按照前后顺序来执行
  • 主线程组运行完成之后运行tearDown线程组
  • 函数测试模式,比如保存响应数据或者样本数据,需要注意的是选择该功能非常磁盘空间
  • 添加文件或者jar包,常用于外部功能调用
  • Demo:测试计划

二、线程组

  • 线程组元件是任何一个测试计划的开始点,在一个测试计划中的所有元件都必须在某个线程组下,所有的任务都是基于线程组
  • 第一部分:在请求取样器执行错误时需要执行的下一步动作
  • 第二部分:线程属性
  • 第一部分:在请求取样器执行错误时需要执行的下一步动作
    • 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:循环次数
    • Samp user on each iteration:每次迭代都用相同的用户,勾选该选项则不同次迭代之间是串行执行,不勾选则为并行执行
    • Delay Thread creation until needed:当线程需要执行的时候,才会被创建。如果不选择这个选项,那么,在计划开始的时候,所有需要的线程就都被创建好了
    • Specify Thread lifetime:定义线程调度时间
      • Duration(seconds):持续时间(秒),在此选项填入N,说明这个计划,从某个开始时间算起,执行N秒后结束。(会忽略 结束时间 的选项)
      • Startup delay(seconds):启动延迟(秒),在此选项填入N,手动点击开始执行计划,然后延迟N秒后,计划才真正开始执行。

三、控制器

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

四、采样器/取样器

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

五、场景逻辑控制技术

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

六、监听器

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

七、定时器

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

八、断言元件

  • 断言的作用就是让JMeter程序判断预期结果和实际结果是否一致,从而判定请求是否成功
  • 常见断言:
    • 响应断言
    • 大小断言
    • Xpath断言
    • Json断言
      注:尽量少用断言,断言会消耗JMeter运算的性能,影响JMeter压测的结果

九、常用配置元件解析

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

十、前置处理器

  • 在取样器发送请求之前执行,做一些准备工作,如设置参数、环境变量等
  • 常见前置处理器举例:
    • Sampler Timeout前置处理器
    • BeanShell前置处理器

Sampler Timeout 前置处理器

  • 设定请求超时时间
  • 作用范围内的所有请求均生效
  • 单位:毫秒

BeanShell 前置处理器

  • 什么是BeanShell
    • 小型嵌入式Java源码解释器
    • 基本就是Java语言
  • Be按Shell前置处理器:在Sampler执行之前会被执行
  • 直接在JMeter的BeanShell处理器中写代码生成当前时间戳
    • 通过程序生成当前时间戳
    • 将时间戳值赋值给变量,然后传递给后续的请求样本

十一、后置处理器

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

十二、JMeter执行顺序

  • JMeter八大组件
  • 执行顺序

    image

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于单片机的灭火机器人设计

目 录 摘 要 I Abstract II 引 言 1 1 系统方案设计 4 1.1 方案论证 4 1.2 灭火机器人系统工作原理 4 2 系统硬件设计 6 2.1 单片机 6 2.2 火焰探测系统设计 8 2.3 灭火系统设计 8 2.4 循迹模块设计 9 2.5 电机驱动模块 10 3 系统软件设计 12 3.1 系统软件开发环境 12 3.2 系统…

防御保护 IPSEC VPPN实验

实验背景:FW1和FW2是双机热备 主备备份模式。 实验要求:在FW5和FW3之间建立一条IPSEC通道,保证10.0.2.0/24网段可以正常访问到192.168.1.0/24 IPSEC VPPN实验配置(由于是双机热备状态,所以FW1和FW2只需要配置FW1主设…

STM32标准库——(20)WDG看门狗

1.WDG简介 独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。窗口看门狗由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作 2.IWDG框图 它的结构和定时器是非常相似的&#xf…

打印机项目需求

打印机项目需求 工作情况如下 我拿着一张带有二维码的纸张对准“打印机的摄像头”“打印机的摄像头”解析我的二维码假如解析后的二维码内容是:24030924发送一个http请求:https://…/getMessage?code24030924外部服务器会返回一个json数据{‘地址’:‘…

Python编程实验六:面向对象应用

目录 一、实验目的与要求 二、实验内容 三、主要程序清单和程序运行结果 第1题 第2题 四、实验结果分析与体会 一、实验目的与要求 (1)通过本次实验,学生应掌握类的定义与对象的创建、类的继承与方法的覆盖; (2…

高级语言讲义2016计专(仅高级语言部分)

1.斐波那契序列的第n项可以表示成以下形式&#xff0c;编写一个非递归函数&#xff0c;返回该数列的第n项的数值 #include <stdio.h>int func(int n) {if(n1||n2)return 1;int p1,q1,num;for(int i3; i<n; i) {numpq;qp;pnum;}return num; } 2.在MXN的二维数组A中&am…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:LoadingProgress)

用于显示加载动效的组件。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 LoadingProgress() 创建加载进展组件。 从API version 9开始&#xff0c;该接口支持在ArkTS卡片中使…

k8s常用命令大全

k8s常用的命令 下面是一些常用的Kubernetes&#xff08;K8s&#xff09;命令&#xff0c;以及它们的简要说明。这些命令可以帮助您管理和操作Kubernetes集群中的资源。 集群管理命令&#xff1a; kubectl cluster-info: 显示集群的基本信息。 kubectl config use-context &l…

大语言模型如何充分理解人类自然语言指令

经过海量数据预训练后的语言模型虽然具备了大量的知识&#xff0c;但是由于其训练的目标仅是进行下一个词的预测&#xff0c;此时的模型还不能够理解并遵循人类自然语言的指令。指令微调(Instruction Tuning)&#xff0c;是指在已经训练好的语言模型的基础上&#xff0c;通过使…

【Vue+ElementUI】Table表格实现自定义表头展示+表头拖拽排序(附源码)

效果图 因项目采用的是Vue2&#xff0c;所以这个功能目前采用的是Vue2的写法。 Vue3请自行修改扩展代码&#xff1b;或收藏关注帖子&#xff0c;后续Vue3项目如有用到会在本帖子更新修改。 安装vuedraggable&#xff08;拖拽插件&#xff09; cnpm i vuedraggable先说用法&…

Mysql8的优化(DBA)

Mysql8的优化 1、Mysql的安装优化1.1 修改配置参数&#xff08;命令行、配件文件&#xff09;1.1.1 命令行修改配置参数1.1.2 参数持久化1.1.3 Mysql多实例启动&#xff0c;以及配置密码文件 1.2 查询表的相关参数&#xff0c;以及表空间管理 2、Mysql高级优化&#xff08;SQL&…

使用Opencv库直接进行人脸检测

import cv2abs_path cv2.__file__ xml_path abs_path.rsplit("/",1)[0] "/data/haarcascade_frontalface_default.xml"# 加载人脸检测器 face_cascade cv2.CascadeClassifier(xml_path)# 加载图像 img cv2.imread(/media/datasets/face/liuyigei_duo.…

逆向分析 FSViewer 并写出注册机

逆向分析 FSViewer 并写出注册机 FSViewer是一款老牌的图片管理查看编辑软件, 个人使用免费, 商用收费 本文将逆向分析FSViewer 7.5版本的注册算法并编写注册机 0. 前言 最近在整理之前的资料, 发现了一篇几年前刚学逆向那会儿写的文章, 是跟着看雪一位大牛的文章做的, 但逆向…

三井住友保险中国区信息技术部负责人陈婧,将出席“ISIG-RPA超级自动化产业发展峰会”

3月16日&#xff0c;第四届「ISIG中国产业智能大会」将在上海中庚聚龙酒店拉开序幕。本届大会由苏州市金融科技协会指导&#xff0c;企智未来科技&#xff08;RPA中国、AIGC开放社区、LowCode低码时代&#xff09;主办。大会旨在聚合每一位产业成员的力量&#xff0c;深入探索R…

Linux:预备

计算机结构基础 操作系统: 内核 (管理软硬件) shell(给用户使用操作系统的方式) 操作系统的目标 对硬件抽象 原因:操作系统是对软硬件资源管理的应用软件抽象:内存管理, 进程管理, 文件管理, 驱动管理软件:驱动程序(给软件提供访问硬件的软件)硬件:磁盘(对应文件), 网卡等隔离…

【C++】什么是类与对象?

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:C ⚙️操作环境:Visual Studio 2022 面向对象概述 面向对象是一种符合人类思维习惯的编程思想。现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系。在程序中使用对象来映射现实中的事物,使用对象的关…

基于SpringBoot+Vue+ElementUI+Mybatis前后端分离管理系统超详细教程(四)——前后端数据交互

经过前面几个章节的学习我们掌握了&#xff1a; 1、如何使用Vue快速搭建前端工程化项目&#xff0c;并结合elementUI优化了界面&#xff1b; 基于SpringBootVueElementUIMybatis前后端分离管理系统超详细教程&#xff08;一&#xff09; 基于SpringBootVueElementUIMybatis前后…

软件测试入门

文章目录 一、入门1. 软件2. 软件基本组成3. 软件产生过程4. 软件测试5. 软件测试目的&#x1f3c6; 小结 二、测试主流技能1. 功能测试2. 自动化测试3. 接口测试4. 性能测试&#x1f3c6; 小结 三、测试分类1. 按测试阶段划分2. 按代码可见度划分&#x1f3c6; 小结 三、质量模…

信息系统项目管理师003:信息化(1信息化发展—1.1信息与信息化—1.1.3 信息化)

文章目录 1.1.3 信息化1.信息化内涵2.信息化体系3.信息化趋势 要点总结 1.1.3 信息化 信息化是一个过程&#xff0c;与工业化、现代化一样&#xff0c;是一个动态变化的过程。信息化是指培养、发展以计算机为主的智能化工具为代表的新生产力&#xff0c;并使之造福于社会的历史…

通过sqoop把hive数据到mysql,脚本提示成功,mysql对应的表中没有数

1、脚本执行日志显示脚本执行成功&#xff0c;读写数量不为0 2、手动往Mysql对应表中写入数据十几秒后被自动删除了 问题原因&#xff1a; 建表时引擎用错了&#xff0c;如下图所示 正常情况下应该用InnoDB