提升Jmeter测试效率的9种参数化方法!

news2024/11/15 2:39:34

jmeter工具无论做接口测试还是性能测试,参数化都是一个必须掌握且非常有用的知识点。参数化的使用场景:

1)多个请求都是同一个ip地址,若服务器地址更换了,则脚本需要更改每个请求的ip

2)注册账号,不允许账号重复;想批量注册用户时

3)模拟多个用户登录,需要用到不同用户信息登录时

4)上一个请求的输出结果用于下一个请求的参数传入,例如登录获取到的token信息,用于提交账单请求的参数调用

一、用户定义的变量

1、右键快捷菜单中选择 添加-配置元件-用户自定义变量。

用户自定义变量中的定义的所有参数的值在测试计划的执行过程中不能发生取值的改变,因此一般仅将测试计划中不需要随迭代发生改变的参数(只取一次值的参数)设置在此处。例如应用的tid和vid。

取样器中的tid和vid用${tid}和${vid}代替,即使被测应用的部署服务器发生了变化,只需要简单地修改tid和vid参数的取值即可。

2、在测试计划下方也有用户定义变量,使用方法同上

二 、用户参数

右键快捷菜单中选择 添加-前置处理器-用户参数

与用户自定义变量不同的是,用户参数列表中的参数取值可以在测试计划执行过程中发生变化。

如图,username和password分别有两组不同的取值。通过界面右下方的四个按钮,可以向列表中增加参数,增加参数值,删除参数和删除参数值。

“每次迭代更新一次”选项控制参数取值的变化规则,如果选中该选项,则参数的值在每个迭代中保持不变,在新的迭代开始时取下一个值。

如果取消该选项,则参数值在每个在其作用域内的sampler发出请求时取下一个可用值。

如果参数的取值范围很小,使用用户参数比较合适;如果参数的取值范围很大,建议使用csv data set config方法。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】

三、函数助手

1、CSV函数助手

点击菜单栏“选项”---->函数助手对话框,看下图: CSV文件列号是从0开始的,第一列0、第二列1、第三列2、依次类推。

复制生成的参数化函数,打开登陆请求页面,在右侧的参数化中找到我们要参数化的字段,这里对用户名和密码做参数化,第一列是用户名,列号为0;第二列是密码,列号为1;修改函数中对应的参数化字段列号就可以啦。

2、Random

选项-函数助手对话框,列出了系统函数的使用方法,生成后,参数传入直接使用即可。

3、下面介绍一下常用系统函数:

1.__time获取当前时间第一个参数为时间格式,第二个参数为存放获得当前时间值的参数名称,例在第一个参数输入yyyy-MM-dd HH:mm:ss,单击生成即可得到正确的函数表达式。

2.__Random随机数

3.__StringFromFile从本地csv文件中读取记录存入参数与CSV Data Set Config相比,该函数的强大之处是它可以支持从多个文件中读取数据。第一个参数是文件名(使用绝对路径),第二个参数是存放取得数据的参数列表,第三个和第四个参数分别为数据文件的起始和终止顺序号。

四、CSV Data Set Config配置元件

右键快捷菜单 添加-配置元件-CSV Data Set Config

Filename:获取参数值的文本文件(数据池)。文件名既可以使用绝对路径,也可以使用相对路径。当使用相对路径时,jmeter会在当前测试计划所在路径下寻找该文件。

File Encoding:文件编码方式,默认为ANSI.如果文本文件是以其他方式保存的,则请使用相应的编码方式(如utf-8)。

Variable Names:从文本文件中获取内容的参数列表。参数列表中可以包含多个参数,用逗号分隔。

Delimiter:文本文件中分隔记录域的分隔符,“t”表示tab键。

Allow quoted data:当该项值是False时,CSV Data Set Config原封不动地将文本文件中相应域的值取为参数值;当为Trues时,将处理文本中用双引号引用的部分,把双引号中的内容取为参数值。除非是CSV文件中的某个域的值包含有设定的分隔符,否则该项设置为False即可。

Recycle on EOF:当该项取值为True时,允许循环取值。当文件中的全部记录被取完后,重新从文件的第一行取值。为False时,根据stop thread on EOF的取值决定测试计划的执行行为。

Stop thread on EOF?:当Recycle on EOF为true时,无论该项取何值,测试计划的执行行为相同;当Recycle on EOF为False时,该项值为True时,文件记录取完后,线程停止运行,如果该项取值为False,则线程后续执行时给定参数的取值为<EOF>。

Sharing mode:All threads,该测试计划的所有线程共享csv文件中的记录(所有线程按照顺序取文件中的记录)。Current thread group,该测试计划中的每个thread group中的所有线程共享csv文件中的记录。Current thread,每个线程各自独立使用csv的记录。以下在参数内直接使用即可:

五、jmeter的属性

以命令行方式运行测试计划时,用户可指定从命令行输入的值替换测试计划中的某些值。例如:以命令行指定线程组的线程数和运行时长。

__property函数具有3个参数,分别为属性名称、存放属性值的变量名称(可选),属性默认值(可选)。命令行:Jmeter –n –t test.jmx –Jthreadcount=10 –Jduration=60-J表示设置property的值,以上命令行表示:10个线程运行,运行时间为60秒。

六、正则提取

需要用上个请求返回的参数内容:

1、首先添加后置处理器,正则表达式提取器,可使用Debug Postcessor查看请求参数结果。

2、 在下个请求中将引用名称带入即可。

七、需要使用上个线程的返回的参数内容

1、首先在线程组1中使用__setProperty函数设置jmeter属性值(此值为全局变量值),将所需变量值如${oldtoken} 设置为jmeter属性值,即newtoken,示例:

String oldtoken=bsh.args[0];{__setProperty(newtoken,{oldtoken},)}2.在线程组2中使用_p函数来调用jmeter属性,获取属性值,从而实现跨线程组,参数值传递。在参数或者url中直接调用该属性即可,方法:${__P(newtoken,)}

八、参数需要base64加密

1、首先添加后置处理器,BeanShell PreProcessor,可使用Debug Postcessor查看请求参数结果。

2、脚本区域:import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;String cursor64= bsh.args[0];String queryId64 = bsh.args[1];BASE64Encoder encode = new BASE64Encoder();String cursorbase64 = encode.encode(cursor64.getBytes());System.out.println(cursorbase64);vars.put("cursor64", cursorbase64);vars.put("queryId64",querybase64);

3、在请求中直接使用put的参数即可。

九、参数AES等加密——BeanShell

写好代码打成jar包,把jar包放到jmeter目录apache-jmeter-2.13libext下,在jmeter某个sampler下添加一个BeanShell PreProcessor,在beanshell PreProcessor中导入我们的jar包,调用里面的加、解密码方法,把结果保存在jmeter变量中,下面两个方法是beanshell中我们最常用到的:

· vars.get(String paramStr):获得变量值· vars.put(String key,String value):,将数据存到jmeter变量中import com.pingan.ff.account.user.utils.*;//加密System.out.println("加密");String password = "123123";String encode = SecurityUtils.getKey(password);//调用工具类中的方法进行加密System.out.println("Set my encode");vars.put("encode",encode);//把值保存到jmeter变量encode中String getEncode=vars.get("encode");System.out.println("Get my encode: " + getEncode);

把加密后的密码存到jmeter变量中,然后在http sampler中就可以通过${encode}进行使用了:

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

在这里插入图片描述

 

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

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

相关文章

群晖NAS配置之搭建WordPress个人博客站点

群晖NAS配置之搭建WordPress个人博客站点 之前写了一些ngrok和frp给群晖nas做内网穿透&#xff0c;今天分享一下在群晖nas下安装wordpress的教程。 WordPress是一个开源的内容管理系统&#xff08;CMS&#xff09;&#xff0c;最初是用来搭建博客的&#xff0c;但后来发展成为…

离线直线度测量仪的适用范围!

离线直线度测量仪虽是智能测量设备&#xff0c;但与在线检测设备相比&#xff0c;检测速度还是较慢&#xff0c;但非常适用于需要使用的圆形轧材抽检或全检&#xff0c;生产产线不适合安装在线仪器的的厂家。 离线直线度测量仪主要用于金属棒材、管材、陶瓷管材、压辊、轧辊等产…

浅谈集中控制式预付费抄表系统设计与应用

贾丽丽 安科瑞电气股份有限公司 上海嘉定 201801 摘要:介绍一种由射频卡预付费和RS485总线组成的集中控制式预付费抄表系统,系统能准确及时地釆集处理电能计量数据并实现预付费功能。该系统简化用户电能表设计&#xff0c;使智能集中控制器具有多功能化&#xff0c;实现系统…

WP采集插件的进阶功能:输入关键词采集及定向采集实现精准筛选

WP采集插件教程&#xff1a;轻松实现全网文章采集 近年来&#xff0c;WordPress&#xff08;简称WP&#xff09;作为一款强大的网站建设工具&#xff0c;广受用户喜爱。然而&#xff0c;对于许多网站管理员来说&#xff0c;如何轻松而高效地获取全网各类文章内容成为了一个亟待…

PCB布线为什么不能走直角或锐角-笔记

PCB布线为什么不能走直角或锐角-笔记 摘要一.PCB走线在直角转弯的地方&#xff0c;信号前后部分相互影响这几个理由我们来一一分析一下传输线的直角带来的寄生电容从阻抗的角度来看直角的尖角产生放电或者电磁辐射走线直角的工艺问题 摘要 有一定熟悉画过PCB板的人或者PCB教学…

VMware通过ISO镜像安装window2016虚拟机

1.点文件->新建虚拟机 2.进入到下边页面 3.根据你的服务器硬件选择硬件兼容性 4.选择2016版本的windows(注&#xff1a;没有该版本的话选择最高版本) 5.根据你的需求选择引导设备( 启动过程&#xff1a; BIOS&#xff1a; 在计算机启动时&#xff0c;BIOS负责进行自检&#…

MySQL如何处理并发访问和高负载?

在当今互联网时代&#xff0c;面对日益增长的数据量和用户访问量&#xff0c;数据库的并发访问和高负载处理变得尤为重要。MySQL作为最流行的关系型数据库管理系统之一&#xff0c;具备许多关键技术和策略来处理并发访问和高负载&#xff0c;下面将对其进行深入探讨。 ​ 图片…

开关电源工作时,如何抑制纹波和减小高频噪声?

开关电源的纹波和噪声是一个本质问题&#xff0c;换而言之无论纹波和噪声多么小&#xff0c;也无法从根本上去除&#xff0c;再绝对的讲开关电源无论成本怎么提高&#xff0c;也无法完全达到线性电源的性能和特点。那么&#xff0c;通常抑制或减少它的做法有五种&#xff1a; …

Netty Review - 探索Pipeline的Inbound和Outbound

文章目录 概念Server CodeClient CodeInboundHandler和OutboundHandler的执行顺序在InboundHandler中不触发fire方法InboundHandler和OutboundHandler的执行顺序如果把OutboundHandler放在InboundHandler的后面&#xff0c;OutboundHandler会执行吗 概念 我们知道当boss线程监控…

SSD-FTL算法学习总结1

SSD核心技术&#xff1a;FTL算法。 1、什么是FTL? FTL是Flash Translation Layer&#xff08;闪存转换层&#xff09;&#xff0c;完成主机&#xff08;HOST&#xff09;逻辑地址空间到闪存Flash物理地址空间的翻译,或者说映射&#xff08;Mapping&#xff09;。 FTL算法分成…

发生这种情况 经常导致投资者的痛苦

在这个市场中&#xff0c;什么事会让人痛苦呢&#xff1f;有的投资者马上回答&#xff0c;因为亏损。说实话&#xff0c;如果经过刻意的练习&#xff0c;我们在一定程度上能克服亏损给人带来的痛感。但是有另一种情况也容易为投资者带来痛苦&#xff0c;下面我们就来讨论一下。…

4、RTC 实时时钟Demo(STM32F407)

RTC是个独立的BCD定时器/计数器。RTC 提供一个日历时钟&#xff0c;两个可编程闹钟中断&#xff0c;以及一个具有中断功能的周期性可编程唤醒标志。RTC还包含用于管理低功耗模式的自动唤醒单元。 (RTC实质&#xff1a;一个掉电(主电源)后还继续运行(由VBAT供电)的32位的向上计…

为什么年轻人这么热衷元宇宙NFT?

盘点你们不知道的元宇宙玩法套路&#xff1a;潮玩宇宙、趣玩联盟、潮玩世界 引言&#xff1a;项目圈最常见的一句话&#xff0c;是这样说的“你图的是平台的高利息&#xff0c;而平台图的是你的本金”&#xff0c;这是韭菜人追悔莫及讲的最经典的话&#xff0c;但也有杠精同志讲…

【OJ比赛日历】快周末了,不来一场比赛吗? #12.02-12.08 #15场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…&#xff09;比赛。本账号会推送最新的比赛消息&#xff0c;欢迎关注&#xff01; 以下信息仅供参考&#xff0c;以比赛官网为准 目录 2023-12-02&#xff08;周六&#xff09; #4场比赛2023-12-03…

AWS EC2 如何 使用 SSM会话管理器登陆

首先只有特定版本的OS会默认附带SSM Agent。 预安装了 SSM Agent 的 Amazon Machine Images&#xff08;AMIs&#xff09; - AWS Systems Manager 其次EC的instance role必须有一个叫“AmazonSSMManagedInstanceCore”的策略 如何给IAM User赋权&#xff0c;让他们可以使用SSM…

深入理解Zookeeper系列-2.Zookeeper基本使用和分布式锁原理

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理、分布式技术原理&#x1f525;如果感觉博主的文章还不错的话&#xff…

zookeeper集群和kafka集群

&#xff08;一&#xff09;kafka 1、kafka3.0之前依赖于zookeeper 2、kafka3.0之后不依赖zookeeper&#xff0c;元数据由kafka节点自己管理 &#xff08;二&#xff09;zookeeper 1、zookeeper是一个开源的、分布式的架构&#xff0c;提供协调服务&#xff08;Apache项目&…

CityEngine2023 根据shp数据构建三维模型并导入UE5

目录 0 引言1 基本操作2 实践2.1 导入数据&#xff08;.shp&#xff09;2.2 构建三维模型2.3 将模型导入UE5 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;CityEngine专栏&#x1f4a5; 标题&#xff1a;CityEngine2023 根据shp数据构建三维模型…

零基础学编程系列,看一下具体中文编程代码是什么样子的

零基础学编程系列&#xff0c;看一下具体中文编程代码是什么样子的 上图 编写一个单选的程序 上图 是单选 按钮的中文编程代码 附&#xff1a;中文编程工具构件工具箱总共22组305个构件&#xff0c;构件明细如下&#xff1a; 文本件16个&#xff1a; &#xff08;普通标签&am…

JDK版本降级,如何重新编译打包项目

目前大部分人使用jdk1.8以及更高版本的jdk&#xff0c;在开发过程中也使用了很多jdk1.8的新特性&#xff0c;但或许还存在一些使用jdk低版本的客户&#xff0c;这时如果我们提供的代码涉及必须高版本jdk才能运行的话&#xff0c;那代码就必须降级&#xff0c;客户才能使用&…