玩转 JMeter:Random Order Controller让测试“乱”出花样

嘿,各位性能测试的小伙伴们!今天咱要来唠唠 JMeter 里超级有趣又超实用的 Random Order Controller(随机顺序控制器),它就像是性能测试这场大戏里的“魔术棒”,轻轻一挥,就能让测试场景变得千变万化,模拟出那些让人摸不着头脑的真实用户行为,帮咱们把系统里潜藏的性能小怪兽都揪出来。

一、初相识:这神奇的控制器是啥玩意儿?

Random Order Controller 其实是 JMeter 中的一个“机灵鬼”逻辑控制器。想象一下,咱们平常做测试,那些子元件(像 Samplers 这些小帮手)都是规规矩矩地按照在测试计划树里排好的队,一个接一个地执行任务。但有了这个随机顺序控制器可就不一样啦!它就像个爱捣乱的小精灵,偏不让子元件按常理出牌,非要让它们随机地蹦出来干活,这下系统可就迎来一场“无规则挑战”咯,是不是很有意思?这种随机性,恰好能完美复刻咱们现实生活中用户那随心所欲、毫无套路的操作流程,让咱们的测试结果更靠谱。

二、牵手第一步:把它拉进咱们的测试计划

  1. 开启新冒险或翻开旧篇章
  • 要是你想开辟一片全新的测试天地,简单得很!在 JMeter 那熟悉的主界面上,依次点击“File” -> “New” -> “Test Plan”,眨眼间,一个空白的测试计划就诞生啦,就等着咱们大展身手。要是你之前已经精心打造过一些测试计划,存在电脑里吃灰呢(.jmx 格式的文件),也别慌,点击“File” -> “Open”,找到它,一键开启优化升级之旅。
  1. 把“小精灵”请进来
  • 想好要把随机顺序控制器放在哪儿了没?一般来说,线程组里就是它的“快乐老家”。鼠标右键轻轻一点目标位置(比如说某个特定的线程组),在弹出的菜单里,像寻宝一样依次选择“Add” -> “Logic Controller” -> “Random Order Controller”。看呐,测试计划树里立马就多了个崭新的“小精灵”节点,宣告它正式入驻咱们的测试计划大家庭啦!
    在这里插入图片描述

三、给“小精灵”梳妆打扮(简单配置一下)

  1. 起个响亮的名字(随心而定)
  • 在测试计划树里找到咱们刚请来的这位“小精灵”,瞅瞅右边,是不是有个属性面板冒出来啦?在“Name”这个小格子里,咱可以把它那干巴巴的默认名换掉,改成个超有辨识度的称呼,比如“Random Order for Crazy User Actions”,以后一眼扫过去,就知道它是负责模拟那些疯狂用户行为的,是不是超酷?

在这里插入图片描述

四、给“小精灵”找点小伙伴:添加子元件

  1. 组建超炫小分队
  • 右键点击咱们的 Random Order Controller,选择“Add”,一场组建小分队的狂欢就开始啦!这里的选择那叫一个丰富,就跟逛超市似的。既可以把常见的 HTTP Request Sampler 拉进来,模拟咱们上网冲浪时各种网页请求;要是碰到测试 FTP 服务的活儿,FTP Sampler 也能随时顶上;要是想来点条件判断的“小心机”,If Controller 也能加入战队。

  • 举个例子哈,假如咱们要模拟社交媒体上那些“网瘾少年”的日常操作,就在 Random Order Controller 下面加两个 HTTP Request Samplers:一个专门模拟用户看到好帖,疯狂点赞(记得把点赞的 URL、参数啥的都精准配好);另一个呢,模拟用户心血来潮发表评论(评论相关的 URL、参数也得仔仔细细设置好)。这么一搭配,社交媒体上那热热闹闹、毫无规律的用户互动场景就被咱们搬过来啦!

在这里插入图片描述

五、“小精灵”的魔法规则:它到底咋运行的呢?

当咱们满心欢喜地按下测试“启动键”后,Random Order Controller 就开始施展它的魔法啦!在它的专属“魔法领地”,也就是它罩着的那些子元件集合里,每次迭代的时候,它都会像抽奖一样,随机从还没执行过的子元件里挑一个出来“干活”。它用的可是一种超厉害的伪随机算法哦,就好比你扔骰子,扔多了各个点数出现的次数就差不多。要是这里面有 5 个子元件,那在好多好多轮测试跑下来,每个子元件被第一个拎出来执行的概率,理论上差不多就是 1/5 。而且呢,这种随机挑选的过程,根本不管子元件在测试计划树里原先排的什么队,完全把常规的从上往下、按部就班的模式扔到九霄云外。还有个超贴心的设计,一旦某个子元件在这一轮迭代中被幸运选中执行了,它就不会在同一轮里再被点到名,得等下一轮迭代重新开始,才又有机会被随机挑中,这就跟咱们真实用户操作一样,点过赞了总不能马上又点一遍吧,充分模拟了用户随机操作还不重复的特点,是不是设计得超精妙?

六、见证奇迹的时刻:运行测试并查看结果

  1. 按下魔法启动按钮
  • 万事俱备,只欠东风啦!瞅准 JMeter 工具栏上那个醒目的“Run”按钮(要是你喜欢用快捷键,“Ctrl + R”也超好使),轻轻一点,测试就像开足马力的跑车,呼啸着启动啦,模拟用户行为开始按照随机顺序在系统里横冲直撞。
  1. 用“透视眼”查看魔法成果(靠专业监听器)
  • 这时候,要是没个“透视眼”帮忙,咱可就抓瞎啦!所以得赶紧在合适的地方(比如说线程组下)把“View Results Tree”监听器请出来。测试过程中,在这个监听器里,那可真是啥都藏不住。每个 Sampler 的执行结果都明明白白地展示出来:响应状态码是不是“一路绿灯”、响应时间是长是短、返回的数据有没有“夹带私货”等等。最最关键的是,咱们能直观地验证 Random Order Controller 有没有把魔法施展到位,看看那些子元件是不是真的在随机“跳舞”。[此处插入一张“View Results Tree”监听器中显示结果的截图,重点展示点赞和评论请求等的随机执行顺序]

七、实战演练:让它在工作中大显身手

  1. 电商大促模拟战
  • 一到电商大促,那场面,用户操作比烟花还绚烂多彩。这时候 Random Order Controller 就能派上大用场啦!在它麾下召集多个 HTTP Request Samplers,分别模拟顾客登录、在海量商品里疯狂浏览、相中宝贝加入购物车、纠结半天修改购物车商品数量、突然反悔又删除商品、最后心一横结算付款等操作。这么一来,电商平台在大促期间那忙得晕头转向的场景就被咱们复刻得八九不离十啦,精准测试出平台能不能扛得住这波购物狂潮,确保每个顾客都能愉快“剁手”。
  1. 办公软件协同测试
  • 现在大家办公都离不开各种协同软件,要是软件卡壳,那可就耽误大事了。咱们可以用 Random Order Controller 来模拟员工日常使用场景。添加代表打开文档、编辑内容、邀请同事协作、查看协作进度、保存并关闭文档等操作的 HTTP Request Samplers。通过让这些操作随机执行,看看软件在多人频繁操作下会不会“掉链子”,为高效办公保驾护航。

好啦,小伙伴们,通过这一趟趣味十足的学习之旅,相信你已经能把 Random Order Controller 玩得转圈圈啦,快到你的性能测试工作里去试试它的魔力吧!要是还有啥疑问,随时来找我唠嗑哈。

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

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

相关文章

L1G5000 XTuner 微调个人小助手认知

使用 XTuner 微调 InternLM2-Chat-7B 实现自己的小助手认知 1 环境配置与数据准备步骤 0. 使用 conda 先构建一个 Python-3.10 的虚拟环境步骤 1. 安装 XTuner 修改提供的数据步骤 0. 创建一个新的文件夹用于存储微调数据步骤 1. 创建修改脚本步骤 2. 执行脚本步骤 3. 查看数据…

UE5 使用内置组件进行网格切割

UE引擎非常强大,直接内置了网格切割功能并封装为蓝图节点,这项功能在UE4中就存在,并且无需使用Chaos等模块。那么就来学习下如何使用内置组件实现网格切割。 1.配置测试用StaticMesh 对于被切割的模型,需要配置一些参数。以UE5…

springmvc执行分析

步骤分析 1.浏览器客户端携带请求路径,本案例中是“/hello”,通过 web.xml 中的前端控制器配置,发送请求到前端控制器(DispatcherServlet),并加载 SpringMVC.xml 配置文件,将 HelloController 加载进IOC容器当中&…

LLM - Llama 3 的 Pre/Post Training 阶段 Loss 以及 logits 和 logps 概念

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/145056912 Llama 3 是 Meta 公司发布的开源大型语言模型,包括具有 80 亿和 700 亿参数的预训练和指令微调的语言模型,支持…

【python基础——异常BUG】

什么是异常(BUG) 检测到错误,py编译器无法继续执行,反而出现错误提示 如果遇到错误能继续执行,那么就捕获(try) 1.得到异常:try的执行,try内只可以捕获一个异常 2.预案执行:except后面的语句 3.传入异常:except … as uestcprint(uestc) 4.没有异常:else… 5.鉴定完毕,收尾的语…

(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验六----流域综合处理(超超超详细!!!)

流域综合处理 流域综合治理是根据流域自然和社会经济状况及区域国民经济发展的要求,以流域水流失治理为中心,以提高生态经济效益和社会经济持续发展为目标,以基本农田优化结构和高效利用及植被建设为重点,建立具有水土保持兼高效生态经济功能的半山区流域综合治理模式。数字高程…

设计模式与游戏完美开发(3)

更多内容可以浏览本人博客:https://azureblog.cn/ 😊 该文章主体内容来自《设计模式与游戏完美开发》—蔡升达 第二篇 基础系统 第五章 获取游戏服务的唯一对象——单例模式(Singleton) 游戏实现中的唯一对象 在游戏开发过程中…

VSCode 在Windows下开发时使用Cmake Tools时输出Log乱码以及CPP文件乱码的终极解决方案

在Windows11上使用VSCode开发C程序的时候,由于使用到了Cmake Tools插件,在编译运行的时候,会出现输出日志乱码的情况,那么如何解决呢? 这里提供了解决方案: 当Settings里的Cmake: Output Log Encoding里设…

Solidity入门: 函数

函数 Solidity语言的函数非常灵活&#xff0c;可以进行各种复杂操作。在本教程中&#xff0c;我们将会概述函数的基础概念&#xff0c;并通过一些示例演示如何使用函数。 我们先看一下 Solidity 中函数的形式: function <function name>(<parameter types>) {in…

基于 Python 自动化接口测试(踩坑与实践)

文档&#xff1a;基于 Python 的自动化接口测试 目录 背景问题描述与解决思路核心代码修改点及其详细解释最终测试结果后续优化建议 1. 问题背景 本项目旨在使用 Python 模拟浏览器的请求行为&#xff0c;测试文章分页接口的可用性。测试目标接口如下&#xff1a; bashcoder…

Spring Boot教程之五十一:Spring Boot – CrudRepository 示例

Spring Boot – CrudRepository 示例 Spring Boot 建立在 Spring 之上&#xff0c;包含 Spring 的所有功能。由于其快速的生产就绪环境&#xff0c;使开发人员能够直接专注于逻辑&#xff0c;而不必费力配置和设置&#xff0c;因此如今它正成为开发人员的最爱。Spring Boot 是…

web-app uniapp监测屏幕大小的变化对数组一行展示数据作相应处理

web-app uniapp监测屏幕大小的变化对数组一行展示数据作相应处理 1.uni.getSystemInfoSync().screenWidth; 获取屏幕宽度 2.uni.onWindowResize&#xff08;&#xff09; 实时监测屏幕宽度变化 3.根据宽度的大小拿到每行要展示的数量itemsPerRow 4.为了确保样式能够根据 items…

使用强化学习训练神经网络玩俄罗斯方块

一、说明 在 2024 年暑假假期期间&#xff0c;Tim学习并应用了Q-Learning &#xff08;一种强化学习形式&#xff09;来训练神经网络玩简化版的俄罗斯方块游戏。在本文中&#xff0c;我将详细介绍我是如何做到这一点的。我希望这对任何有兴趣将强化学习应用于新领域的人有所帮助…

计算机网络 (32)用户数据报协议UDP

前言 用户数据报协议&#xff08;UDP&#xff0c;User Datagram Protocol&#xff09;是计算机网络中的一种重要传输层协议&#xff0c;它提供了无连接的、不可靠的、面向报文的通信服务。 一、基本概念 UDP协议位于传输层&#xff0c;介于应用层和网络层之间。它不像TCP那样提…

如何将 DotNetFramework 项目打包成 NuGet 包并发布

如何将 DotNetFramework 项目打包成 NuGet 包并发布 在软件开发过程中&#xff0c;将项目打包成 NuGet 包并发布到 NuGet 库&#xff0c;可以让其他开发者方便地引用和使用你的项目成果。以下是将 WixWPFWizardBA 项目打包成 NuGet 包并发布的详细步骤&#xff1a; 1. 创建 .n…

解决GitHub上的README.md文件的图片内容不能正常显示问题

一、问题描述 我们将项目推送到GitHub上后&#xff0c;原本在本地编写配置好可展现的相对路径图片内容&#xff0c;到了GitHub上却不能够正常显示图片内容&#xff0c;我们希望能够在GitHub上正常显示图片&#xff0c;如下图所示&#xff1a; 二、问题分析 现状&#xff1a;REA…

如何解决 VS Code 调试时无法查看 std 中变量的问题

在使用 VS Code 调试 C 程序时&#xff0c;我们经常遇到查看 std 容器或字符串变量时只显示一串数字而看不到实际值的情况。这是由于调试器未启用 pretty-printing 功能导致的。为了解决这个问题&#xff0c;可以在 launch.json 中进行配置。 问题描述 在调试 C 程序时&…

安装MySQL的五种方法(Linux系统和Windows系统)

一.在Linux系统中安装MySQL 第一种方法:在线YUM仓库 首先打开MySQL官网首页 www.mysql.com 找到【DOWNLOADS】选项&#xff0c;点击 下拉&#xff0c;找到 【MySQL Community(GPL) Downloads】 在社区版下载页面中&#xff0c;【 MySQL Yum Repository 】链接为在线仓库安装…

基于mybatis-plus历史背景下的多租户平台改造

前言 别误会&#xff0c;本篇【并不是】 要用mybatis-plus自身的多租户方案&#xff1a;在表中加一个tenant_id字段来区分不同的租户数据。并不是的&#xff01; 而是在假设业务系统已经使用mybatis-plus多数据源的前提下&#xff0c;如何实现业务数据库隔开的多租户系统。 这…

RabbitMQ高级篇之MQ可靠性 数据持久化

文章目录 消息丢失的原因分析内存存储的缺陷如何确保 RabbitMQ 的消息可靠性&#xff1f;数据持久化的三个方面持久化对性能的影响持久化实验验证性能对比Spring AMQP 默认持久化总结 消息丢失的原因分析 RabbitMQ 默认使用内存存储消息&#xff0c;但这种方式带来了两个主要问…