Jmeter 测试使用基本组件结构

news/2024/5/14 2:28:33/文章来源:https://blog.csdn.net/wl18271672781/article/details/136575370

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.luyixian.cn/news_show_998990.aspx

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

相关文章

Java中SpringBoot四大核心组件是什么

一、Spring Boot Starter 1.1 Starter的应用示例 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency><groupId>org.mybatis.sprin…

深度学习与人类的智能交互:迈向自然与高效的人机新纪元

引言 随着科技的飞速发展&#xff0c;深度学习作为人工智能领域的一颗璀璨明珠&#xff0c;正日益展现出其在模拟人类认知和感知过程中的强大能力。本文旨在探讨深度学习如何日益逼近人类智能的边界&#xff0c;并通过模拟人类的感知系统&#xff0c;使机器能更深入地理解和解…

高级语言讲义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…

瑞_23种设计模式_模板方法模式

文章目录 1 模板方法模式&#xff08;Template Pattern&#xff09; ★ 钩子函数1.1 介绍1.2 概述1.3 模板方法模式的结构1.4 模板方法模式的优缺点1.5 模板方法模式的使用场景 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代码实现 4 JDK源码解析&#xff08;InputStre…

【测试工具系列】压测用Jmeter还是LoadRunner?还是其他?

说起JMeter&#xff0c;估计很多测试人员都耳熟能详。它小巧、开源&#xff0c;还能支持多种协议的接口和性能测试&#xff0c;所以在测试圈儿里很受欢迎&#xff0c;也是测试人员常用的工具&#xff0c;但是在企业级性能场景下可能会有性能瓶颈&#xff0c;更适合测试自己使用…

Grafana二次开发环境搭建

1 Grafana环境搭建 1.1 搭建后端服务 下载windows安装版文件grafana.com 1&#xff09;选择版本号&#xff1a;此处我选的8.3.3版本 2&#xff09;安装完成后&#xff0c;请记住安装目录 &#xff0c;我的是在 D:\software\Gragana833 安装完成后会自动运行, 3&#xff09;此…

2024年软考重大改革

中国计算机技术职业资格网 考试日期 考试级别 考试资格名称 5月25日至28日 高级 系统分析师 系统架构设计师 信息系统项目管理师 中级 软件设计师 网络工程师 软件评测师 电子商务设计师 嵌入式系统设计师 数据库系统工程师 信息系统管理工程师 初级 程序员 …

MySQL之体系结构和基础管理

前言 本文以linux系统的MySQL为例详细介绍MySQL的体系结构&#xff0c;因为在实际生产环境中MySQL的运行环境都是linux系统。同时介绍MySQL的基础管理&#xff0c;包括用户管理和权限管理等。 MySQL体系结构 MySQL客户端/服务器工作模型 MySQL是C/S架构&#xff0c;工作模型…

物联网,智慧城市的数字化转型引擎

随着科技的飞速发展&#xff0c;物联网&#xff08;IoT&#xff09;已成为推动智慧城市建设的关键力量。物联网技术通过连接各种设备和系统&#xff0c;实现数据的实时采集、传输和处理&#xff0c;为城市的智能化管理提供了强大的支持。在数字化转型的浪潮中&#xff0c;物联网…

VUE_nuxt启动只能通过localhost访问,ip访问不到:问题解决

修改项目根目录下的 package.json "config": {"nuxt": {"host": "0.0.0.0","port": "3000"} } 这样项目启动后就可以通过ip进行访问了

AutoDev 自定义 Agent:快速接入内部 AI Agent,构建 IDE 即 AI 辅助研发中心

在开源 AI IDE 插件 AutoDev 的 #51 issue 中&#xff0c;我们设计了 AutoDev 的 AI Agent 能力&#xff0c;半年后我们终于交付了这个功能。 在 AutoDev 1.7.0 中&#xff0c;你将可以接入内部的 AI Agent&#xff0c;并将其无缝与现有的 AI 辅助能力结合在一起。 本文将使用 …

使用awk和正则表达式过滤文本或字符串 - 详细指南和示例

当我们在 Linux 中运行某些命令来读取或编辑字符串或文件中的文本时&#xff0c;我们经常尝试将输出过滤到感兴趣的特定部分。这就是使用正则表达式派上用场的地方。 什么是正则表达式&#xff1f; 正则表达式可以定义为表示多个字符序列的字符串。关于正则表达式最重要的事情之…

【C++ STL详解】——string类

目录 前言 一、string类对象的常见构造 二、string类对象的访问及遍历 1.下标【】&#xff08;底层operator【】函数&#xff09; ​编辑 2.迭代器 3.范围for 4.at 5.back和front 三、string类对象的容量操作 1.size 和 length 2.capacity 3.empty 4.clear 5.res…

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

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

接收端编程、UDP编程练习、wireshrak抓包工具、UDP包头

我要成为嵌入式高手之3月6日Linux高编第十六天&#xff01;&#xff01; ———————————————————————————— 学习笔记 接收端 recvfrom #include <sys/types.h> #include <sys/socket.h> ssize_t recvfrom(int sockfd, void *buf, si…

一文学会搭建 cli 脚手架工具

文章目录 设置工具命令package.json bin 字段注释&#xff1a;#!/usr/bin/env node设置环境变量 接收命令选项参数process 实现commander 命令行交互&#xff1a;inquirer下载项目模板&#xff1a;download-git-repo执行额外命令&#xff1a;自动安装依赖child_processexeca 体…

Mybatis-Plus——05,乐观锁(新注解)

乐观锁&#xff08;新注解&#xff09; 一、数据库添加一个字段二、实体类添加version注解三、注册乐观锁插件四、测试一下4.1成功的乐观锁4.2失败的乐观锁————————创作不易&#xff0c;笔记不易&#xff0c;如觉不错&#xff0c;请三连&#xff0c;谢谢~~ 乐观锁实现方…

Flask python开发篇: 写一个简单的接口

第一步&#xff1a;新建flask项目 参考使用pycharm新建一个项目 打开pycharm&#xff0c;根据下面图中箭头顺序&#xff0c;新建一个flask的项目&#xff1b; 第二步&#xff1a;运行项目&#xff0c; 安装成功以后&#xff0c;会有个app.py文件&#xff0c;打开以后&#…

Kali Linux 2024.1

Kali Linux 2024.1刚刚发布&#xff0c;标志着这个备受欢迎的安全重点Linux发行版在今年的首次重大更新。以其先进的渗透测试和安全审计功能而闻名&#xff0c;它是安全专业人员和爱好者的首选工具。 Kali 2024.1 亮点 本次发布由 Linux 内核 6.6 提供支持&#xff0c;突出了…

借着ChatGPT的人机交互聊聊长连接

ChatGPT这两年可谓风靡全球&#xff0c;尤其是最近Sora视频模型的横空出世以及claude 3模型所具备的浅意识&#xff0c;更是像打开了新世界的大门。本文就从ChatGPT的网页聊天开始聊起&#xff08;有蹭热度之嫌&#xff0c;哈哈&#xff09;&#xff0c;聊聊长连接的发展历程和…