首页 > 其他分享 >浅谈前置处理器之用户参数

浅谈前置处理器之用户参数

时间:2024-07-03 10:01:16浏览次数:3  
标签:INFO 03 前置 浅谈 09 用户 2024 处理器 07

浅谈前置处理器之用户参数

“用户参数”前置处理器是一个非常实用的功能,它可以在每个请求执行前动态地为HTTP请求等添加或替换变量值。本文档将详细介绍“用户参数”前置处理器的使用方法、特点以及与用户定义变量的区别。

用户参数前置处理器简介

用户参数前置处理器允许你在每个线程或迭代中为HTTP请求等添加一组可变的参数值。这在需要模拟不同用户登录、提交表单等场景时特别有用,因为它可以确保每个虚拟用户(线程)使用唯一的数据集。通过定义一系列参数及其可选的值集合,JMeter会在每次请求之前根据配置更新这些参数。

使用场景

● 模拟多个用户登录:为每个用户分配不同的用户名和密码。
● 测试搜索功能:使用不同的查询关键词进行搜索请求。
● 多样性数据测试:提交表单时使用不同的数据组合,以覆盖更广泛的测试场景。

配置步骤

  1. 添加用户参数前置处理器:
    ○ 在JMeter测试计划中,选择一个HTTP请求或其他需要动态参数的采样器。
    ○ 右键点击该采样器,选择“添加” -> “前置处理器” -> “用户参数”。
  2. 定义参数:
    ○ 在“用户参数”配置界面,点击“添加变量”按钮来添加新的参数名称及其值。
    ○ 对于每个参数,你可以指定默认值、可选的值列表(用于循环)或使用函数来动态生成值。
  3. 配置迭代更新:
    ○ 通过勾选“每次迭代更新一次”选项,你可以控制参数值是否在每个迭代中更新。如果未勾选,参数值在整个线程生命周期内保持不变。
  4. 作用域考虑:
    ○ 注意,用户参数的作用域遵循JMeter的作用域规则,即它影响其所在作用域内的所有采样器,除非被更小作用域的变量覆盖。

应用实例

我们编写如下脚本
在这里插入图片描述
线程组:线程数设置为3
用户参数:添加一个变量test,添加三个用户数据用户_1为First${__Random(1,1000,)},用户_2为Second${__Random(1,1000,)},用户_3为Third${__Random(1,1000,)}
在这里插入图片描述
BeanShell 取样器1:编写如下代码

log.info("用户:${test}");

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

log.info("用户:${test}");

情况1:不勾选每次迭代更新一次

运行脚本,查看JMeter打印日志

2024-07-03 09:45:57,616 INFO o.a.j.u.BeanShellTestElement: 用户:First929
2024-07-03 09:45:57,618 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2024-07-03 09:45:57,618 INFO o.a.j.u.BeanShellTestElement: 用户:First223
2024-07-03 09:45:57,618 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2024-07-03 09:45:57,619 INFO o.a.j.t.JMeterThread: Thread is done: 线程组 1-1
2024-07-03 09:45:57,620 INFO o.a.j.t.JMeterThread: Thread finished: 线程组 1-1
2024-07-03 09:45:57,915 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-2
2024-07-03 09:45:57,917 INFO o.a.j.u.BeanShellTestElement: 用户:Second477
2024-07-03 09:45:57,918 INFO o.a.j.u.BeanShellTestElement: 用户:Second77

2024-07-03 09:45:57,919 INFO o.a.j.t.JMeterThread: Thread is done: 线程组 1-2
2024-07-03 09:45:57,919 INFO o.a.j.t.JMeterThread: Thread finished: 线程组 1-2
2024-07-03 09:45:58,254 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-3
2024-07-03 09:45:58,254 INFO o.a.j.u.BeanShellTestElement: 用户:Third732
2024-07-03 09:45:58,254 INFO o.a.j.u.BeanShellTestElement: 用户:Third525

通过结果可以看出每次线程每个BeanShell请求都更新变量值

情况2:勾选每次迭代更新一次

运行脚本,查看JMeter打印日志

2024-07-03 09:48:19,188 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-1
2024-07-03 09:48:19,188 INFO o.a.j.u.BeanShellTestElement: 用户:First831
2024-07-03 09:48:19,188 INFO o.a.j.u.BeanShellTestElement: 用户:First831

2024-07-03 09:48:19,188 INFO o.a.j.t.JMeterThread: Thread is done: 线程组 1-1
2024-07-03 09:48:19,188 INFO o.a.j.t.JMeterThread: Thread finished: 线程组 1-1
2024-07-03 09:48:19,242 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2024-07-03 09:48:19,242 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2024-07-03 09:48:19,545 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-2
2024-07-03 09:48:19,547 INFO o.a.j.u.BeanShellTestElement: 用户:Second229
2024-07-03 09:48:19,549 INFO o.a.j.u.BeanShellTestElement: 用户:Second229

2024-07-03 09:48:19,550 INFO o.a.j.t.JMeterThread: Thread is done: 线程组 1-2
2024-07-03 09:48:19,550 INFO o.a.j.t.JMeterThread: Thread finished: 线程组 1-2
2024-07-03 09:48:19,901 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-3
2024-07-03 09:48:19,901 INFO o.a.j.u.BeanShellTestElement: 用户:Third8
2024-07-03 09:48:19,901 INFO o.a.j.u.BeanShellTestElement: 用户:Third8

通过结果可以看到不同线程数据会变,但是同一个线程内的数据是不变的。

与用户定义变量的区别

● 用户定义变量是在测试计划开始时就设置好的静态变量,适用于整个测试计划或特定作用域,不会在测试执行过程中改变。
● 用户参数则是在每个线程每次迭代时动态生成或更新的,适合需要为每个请求提供不同数据的场景。

实践技巧

● 参数化值:利用CSV Data Set Config结合用户参数,可以从外部文件导入大量测试数据,进一步增强测试的真实性和复杂度。
● 配合正则表达式提取器:用户参数可以与正则表达式提取器结合使用,将上一个响应的数据动态地作为下一个请求的参数。

结论

JMeter的“用户参数”前置处理器是提高测试脚本灵活性和效率的强大工具,尤其在需要处理多样性和动态数据的场景中。通过熟练掌握其配置和应用,测试工程师可以构建更加贴近实际使用情况的测试场景,从而更有效地评估系统性能和稳定性。

标签:INFO,03,前置,浅谈,09,用户,2024,处理器,07
From: https://blog.csdn.net/u012151594/article/details/140144050

相关文章

  • 浅谈逻辑控制器之模块控制器
    浅谈逻辑控制器之模块控制器模块控制器(ModuleController)是一种高级逻辑控制器,它提供了一个强大的机制来复用和组织测试计划中的组件。本文档将深入介绍模块控制器的功能、配置方法及其应用场景。功能概述模块控制器允许用户在测试计划中引用另一个测试片段(通常是一个简......
  • 基于springboot用“异常处理器“捕获解决“数据库信息录入重复“的问题“SQLIntegrity
    前言 当我们编写后端时,会遇到一个问题,那就是:假如A用户向我们的数据库录入完登录信息后(姓名,账号等),B用户同样采用了一个相同的姓名提交了登录信息,那这个时候就不满足username的唯一约束,此时数据库就会报错例如报错如下:Duplicateentry'····'forkey'····'提示......
  • 万字长文浅谈系统稳定性建设
    1.背景京东的期中考试:618即将到来,各个团队都在进行期中考试前的模拟考试:军演压测,故障演练,系统的梳理以检测系统的稳定性以应对高可用,高性能,高并发。我们知道系统的稳定性建设是贯穿整个研发流程:需求阶段,研发阶段,测试阶段,上线阶段,运维阶段;整个流程中的所有参与人员:产品,研发,测试,......
  • 计算机组成原理——中央处理器
    功能和结构计算机组成架构:中央处理器cpu即包含运算器和控制器。细分为:ALU,寄存器,中断系统,CU。cpu组成结构运算器用于对数据的加工,实现算术运算和逻辑运算。其中包含:ACC累加器,MQ乘商寄存器,X通用寄存器,ALU算数逻辑单元控制器主要协调并控制计算机各个部件执行程序指令的......
  • 浅谈 K8s Service 网络机制
    浅谈K8sService网络机制云原生运维圈 2024-07-0112:03 上海 1人听过 以下文章来源于腾讯云原生 ,作者王成腾讯云原生.云原生技术交流阵地,汇聚云原生最新技术资讯、文章、活动,以及云原生产品及用户最佳实践内容。王成,腾讯云研发工程师,Kubernetesmember,从......
  • 浅谈 Selenium 控制浏览器操作
    控制浏览器操作:(1)最大化、最小化浏览器:driver.maximize_window()(2)控制、获取浏览器大小:driver.get_window_size()(3)获取当前标签页title、url:print("标签页title:{}".format(driver.title))print("标签页url:{}".format(driver.current_url))(4)前进、后退、刷新:#前进driver......
  • 搭载飞腾FT2000+/64处理器全国产加固服务器
        搭载飞腾FT2000+/64,64核服务器平台的加固服务器是专为高安全性、高可靠性及能在严苛环境下稳定运行而设计的服务器产品。服务器采用国产飞腾处理器为核心,体现了自主可控的技术特点,广泛适用于政府、军事、航天等领域。   以下是我们自主研发的加固服务器的一......
  • 基于飞腾FT2000/D2000处理器国产化网安系统
        国产化网安是指基于国产软硬件构建的网络安全防护体系,从底层芯片、操作系统、数据库、中间件到上层应用软件,均采用国产自主可控的技术和产品。这样的系统旨在提高信息安全水平,确保数据和通信的保密性、完整性和可用性,同时减少对外部技术的依赖,增强国家网络空间的安......
  • 【杂记-浅谈FTP文件传输协议】
    FTP文件传输协议一、FTP协议概述二、FTP的安全隐患三、FTP服务器配置问题四、FTP的安全加固方法一、FTP协议概述FTP,FileTransferProtocol,即文件传输协议,是一种用于在网络上进行文件传输的标准协议,它允许用户在客户端和服务器之间传输文件,支持上传、下载、删除和重......
  • 【杂记-浅谈OSI参考模型之应用层】
    OSI参考模型之应用层一、应用层概述二、应用层功能三、应用层协议一、应用层概述应用层是计算机网络体系结构中的最高层,它直接为用户和应用程序提供服务。在OSI模型中,应用层对应于第7层,而在TCP/IP模型中,它包括了OSI模型中的第5、6、7层。应用层的作用是在网络中实现......