浅谈逻辑控制器之随机顺序控制器

浅谈逻辑控制器之随机顺序控制器

随机顺序控制器(Random Order Controller)作为一个独特的逻辑控制器,为测试脚本的执行增添了一层随机性,特别适用于模拟用户行为中不确定的访问模式。

随机顺序控制器概述

随机顺序控制器(Random Order Controller)与标准的简单控制器或循环控制器不同,它不按照固定的顺序执行其下的子采样器或控制器,而是以随机的顺序来执行这些子元素。这使得测试更加贴近现实世界场景,尤其是当需要模拟用户随机访问网站页面或服务端点的情况时。

功能特性

  1. 随机执行顺序:每次执行测试计划时,随机顺序控制器下的所有子元素将会以完全随机的顺序被执行。这有助于模拟不同用户访问页面或资源的随机性。
  2. 忽略子控制器块:该控制器提供了一个选项“Ignore sub-controller block”,如果勾选,它会将子控制器视为单个请求,而不是作为一个包含多个请求的块来处理。这意味着子控制器内部的顺序也将被打乱并作为整体随机执行。
  3. 适应场景:非常适合用于模拟多路径访问、A/B测试场景、或者任何需要随机化访问模式的测试用例。

使用步骤

  1. 添加随机顺序控制器:在JMeter测试计划中,右键点击需要放置随机顺序控制器的父节点(如线程组),选择“添加” -> “逻辑控制器” -> “随机顺序控制器”。
  2. 配置控制器:根据需要,可以设置控制器的描述性名称,便于识别。决定是否勾选“Ignore sub-controller block”选项。
  3. 添加子元素:在随机顺序控制器下,添加你想要随机执行的采样器或其它逻辑控制器。
  4. 运行测试:保存测试计划后,运行测试。每次迭代,控制器下的元素都将按照不同的随机顺序执行。

实例说明

我们编写如下脚本:
在这里插入图片描述
线程组:循环次数设置为2
BeanShell 取样器1:编写如下代码

log.info("test1");

BeanShell 取样器2:编写如下代码

log.info("test2");

BeanShell 取样器3:编写如下代码

log.info("test3");

执行脚本,查看JMeter日志如下

2024-06-27 17:30:51,050 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-1
2024-06-27 17:30:51,061 INFO o.a.j.u.BeanShellTestElement: test1
2024-06-27 17:30:51,062 INFO o.a.j.u.BeanShellTestElement: test3
2024-06-27 17:30:51,063 INFO o.a.j.u.BeanShellTestElement: test2
2024-06-27 17:30:51,064 INFO o.a.j.u.BeanShellTestElement: test1
2024-06-27 17:30:51,065 INFO o.a.j.u.BeanShellTestElement: test2
2024-06-27 17:30:51,067 INFO o.a.j.u.BeanShellTestElement: test3
2024-06-27 17:30:51,093 INFO o.a.j.t.JMeterThread: Thread is done: 线程组 1-1

按照随机的顺序执行,该功能跟逻辑控制器随机控制器基本一致

最佳实践

● 结合定时器:为了更真实地模拟用户行为,可以在随机顺序控制器下使用定时器来引入延迟。
● 注意资源分配:确保测试设计考虑到随机顺序可能导致的资源分配不均,特别是当某些请求比其他请求消耗更多资源时。
● 监控与分析:使用监听器来监控测试结果,分析随机顺序执行对系统性能的影响。

总结

随机顺序控制器是JMeter中一个强大且灵活的组件,它能够增强测试的真实性和复杂度。通过随机化子元素的执行顺序,测试人员可以更好地模拟不可预测的用户流量模式,从而提高测试的有效性和覆盖范围。掌握这一控制器的使用,对于进行更全面和真实的性能测试至关重要。

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

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

相关文章

代码随想录算法训练营第三十六天|62.不同路径、 63. 不同路径 II、343.整数拆分(可跳过)、96.不同的二叉搜索树(可跳过)

62.不同路径 题目链接:62.不同路径 文档讲解:代码随想录 状态:还行 思路:当前状态的只有可能是从上面或者左边过来的,所以 dp[i][j] dp[i-1] dp[j-1] 题解: public int uniquePaths(int m, int n) {if (…

Docker 安装Nginx部署网站 防火墙端口 数据卷挂载

拉取镜像 docker pull nginx#不写版本号 表示最新版本查看是否拉取成功 docker images#成功 nginx latest 605c77e624dd 2 years ago 141MB mysql 8.0 3218b38490ce 2 years ago 516MB mysql latest 3218b38490ce 2 years ago 5…

virtualbox(7.0) ubuntu(22) 和win11共享文件夹

在虚拟机中安装增强功能。在virtualbox中配置 执行命令将用户加入vboxsf组 sudo adduser your_usrname vboxsf 重启ubuntu即可

LeetCode 585, 438, 98

目录 585. 2016年的投资题目链接表要求知识点思路代码 438. 找到字符串中所有字母异位词题目链接标签思路代码 98. 验证二叉搜索树题目链接标签合法区间思路代码 中序遍历思路代码 585. 2016年的投资 题目链接 585. 2016年的投资 表 表Insurance的字段为pid、tiv_2015、tiv…

Charles网络抓包工具手机抓包配置(二)

目录 事前配置 配置手机连接 代理设置 Https请求设置 手机安装根证书 手机连接代理 证书获取​编辑 证书安装 成果 前言-与正文无关 ​ 生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中,我们…

CesiumJS【Basic】- #020 加载glb/gltf文件(Primitive方式)

文章目录 加载glb/gltf文件(Primitive方式)1 目标2 代码实现3 资源文件加载glb/gltf文件(Primitive方式) 1 目标 使用Primitive方式加载glb/gltf文件 2 代码实现 import * as Cesium from "cesium";const viewer = new Cesium.Viewer

ElementPlus Combogrid 组件

效果图: 1.声明 Props类型 export type comboGridPropType { modelValue: any; url: string; keyField?: string; labelField?: string; filterOptions?: Array<ISearchOption>; tableColumns?: Array<TableColumns>; enableField?: string; multiple?: …

Psychtoolbox 脑电实验范式之mp4视频绘制

1. 读取 首先需要使用到Screen(‘OpenMovie’)函数&#xff0c;该函数可以读取mp4、gif格式的数据&#xff0c;具体方式如下&#xff1a; clear; clc; Screen(Preference, SkipSyncTests, 1); screens Screen(Screens); screenNum max(screens); [window, screenRect] Scr…

C++语法20 一维数组及其相关问题详解

这是《C算法宝典》语法入门篇的第20节文章啦~ 如果你之前没有太多C基础&#xff0c;请点击&#x1f449;专栏&#xff1a;C语法入门&#xff0c;如果你C语法基础已经炉火纯青&#xff0c;则可以进阶算法&#x1f449;专栏&#xff1a;算法知识和数据结构&#x1f449;专栏&…

串口通信中字符和16进制显示的区别分析,串口发送数据

分析的原因 在对串口传送数值时&#xff0c;不想再进行一步字符转化&#xff0c;想要直接传送数值。但查看时就需要以16进制的数值形式查看数据&#xff0c;否则将不能看到正确的数据显示 下图是对串口寄存器发送一个16bit位的数据 void uart0Senduint16(UINT16 dat){SBUFdat…

element-plus 日期选择添加确定按钮

需求&#xff1a;选择日期后&#xff0c;点击确定按钮关闭面板 思路&#xff1a; 使用shortcuts自定义确定和取消按钮选择日期后使用handleOpen()强制开启面板点击确定后使用handleClose()关闭面板 <template><el-date-pickerref"pickerRef"v-model"…

【Android11】开机启动日志捕捉服务

一、前言 制作这个功能的原因是客户想要自动的记录日志中的报错和警告到设备的内存卡里面。虽然开发者模式中有一个“bug report” 会在/data/user_de/0/com.android.shell/files/bugreports/目录下生成一个zip包记录了日志。但是客户觉得这个日志很难获取到他们需要的信息&am…

基于盲信号处理的声音分离——基于自然梯度的ICA算法

基于自然梯度的ICA算法主要利用相互独立的随机信号的联合概率密度是各自概率密度的乘积这一特性&#xff0c;建立了等独立性度量原则&#xff0c;具体实现如下。 首先&#xff0c;输出信号 相互独立&#xff0c;则其概率密度满足 上式中 表示 的概率密度函数&#xff0c;可以…

怎么扫描图片变成pdf格式?办公人士值得收藏的宝藏工具

将图片扫描并转换为PDF格式可以通过多种途径实现&#xff0c;无论是使用专业的扫描仪还是智能手机&#xff0c;都有相应的方法。 PDF 是什么&#xff1f; PDF&#xff0c;全称为 Portable Document Format&#xff08;便携式文档格式&#xff09;&#xff0c;是由Adobe System…

12,SPI

Flash芯片&#xff1a;W25Q64&#xff0c;可以看成一个储存器 W25Q64芯片和单片机之间的通信方式是SPI SPI:串行同步全双工&#xff0c;主从通信 判断一个设备是不是SPI通信&#xff0c;看是否有这几个线&#xff1a;SCK&#xff0c;CS&#xff0c;MISO&#xff0c;MOSI SCK…

Altium Designer软件下载安装「PCB设计软件」安装包资源获取

Altium Designer作为一款集成化的电子产品开发系统&#xff0c;它主要适用于Windows操作系统&#xff0c;为电子设计工程师们提供了一个高效、便捷的工作平台。 在Altium Designer中&#xff0c;原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出…

vuex的学习

vuex vuex是个插件&#xff0c;用于多个组件操作共享变量 引入&#xff1a;数字操作案例 基于组件自定义事件而实现的操作数字案例如下&#xff1a; App.vue <template><div id"app"><input class"num_input" type"text" v…

LeeCode 994. 腐烂的橘子

原题链接994. 腐烂的橘子 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;采用bfs遍历图&#xff0c;将烂橘子加入队列&#xff0c;然后将被烂橘子感染的橘子也加入队列&#xff0c;bfs的具体细节就不多说了&#xff0c;可以自己去搜&#xff0c;很简单&#xff0c;…

560.滑动窗口最大值

滑动窗口最大值 239. 滑动窗口最大值 - 力扣&#xff08;LeetCode&#xff09; 题目大意&#xff0c;返回每个窗口内的最大值。 思路-优先队列 优先队列&#xff08;堆&#xff09;&#xff0c;其中的大根堆可以实时维护一系列元素中的最大值。 每当我们向右移动窗口时&#…

地形沉降测量仪器静力水准仪应用全攻略

在地形监测和地质勘探的领域中&#xff0c;地形沉降测量是一项至关重要的工作。它不仅能够及时揭示地质结构的变化&#xff0c;还能为城市规划和基础工程建设提供宝贵的数据支持。在众多测量工具中&#xff0c;静力水准仪以其高精度、高效率的特点&#xff0c;成为地形沉降测量…