Jmeter——参数化的9种方法

news2024/11/24 14:23:36

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方法。

三、函数助手

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、脚本区域:

 
  1. import sun.misc.BASE64Decoder;

  2. import sun.misc.BASE64Encoder;

  3. String cursor64= bsh.args[0];

  4. String queryId64 = bsh.args[1];

  5. BASE64Encoder encode = new BASE64Encoder();

  6. String cursorbase64 = encode.encode(cursor64.getBytes());

  7. System.out.println(cursorbase64);

  8. vars.put("cursor64", cursorbase64);

  9. 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/2164253.html

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

相关文章

【图形学】数学基础

行矩阵和列矩阵 在图形处理中&#xff0c;矩阵操作时最基本的操作&#xff0c;但是不同的系统中对矩阵的存储是不同&#xff0c;比如OpenGL和Cg中就是不一样的&#xff1a; 比如一个4x4矩阵 [m11,m12,m13,m14m21,m22,m23,m24m31,m32,m33,m34m41,m42,m43,m44]在实现中通常将其…

海康威视网络摄像头校时、修改分辨率等操作汇总!

目录 操作环境&#xff1a; 操作原因&#xff1a; 解决办法&#xff1a; 手动校准时间&#xff0c;随着时间推移&#xff0c;可能再次出现偏差&#xff0c;操作简单&#xff1a; 【IVMS-4200】对设备批量校时操作指导&#xff1a;操作之前先把本地服务器的时间改对&#x…

【学习笔记】Kylin-Desktop-V10-SP1 麒麟系统知识2——账户设置

提示&#xff1a;学习麒麟Kylin-Desktop-V10-SP1系统账户设置相关知识&#xff0c;包含用户名修改、用户密码修改、账户类型修改、开机自动登录、免密登录、添加用户、删除用户&#xff0c;以及修改登录选项相关知识 一、前期准备 成功安装麒麟系统&#xff08;本次实验的安装…

视频压缩成文件怎么弄?4招教会你

视频文件过大&#xff0c;不仅占用存储空间&#xff0c;还影响传输效率。但是&#xff0c;压缩视频时又担心会损失画质。有没有一种方法&#xff0c;能在不牺牲画质的前提下&#xff0c;实现视频文件的压缩呢&#xff1f;答案是肯定的。 想快速学会怎么视频压缩不改变清晰度&a…

手机二要素接口如何用C#实现调用

一、什么是手机二要素&#xff1f; 手机二要素又称运营商二要素&#xff0c;运营商二要素核验&#xff0c;实名核验&#xff0c;手机号核验&#xff0c;手机二要素核验&#xff0c;即传入姓名、手机号码&#xff0c;校验此两项是否一致。实时核验&#xff0c;返回校验结果&…

不在同一局域网怎么远程桌面?非局域网环境下,实现远程桌面访问的5个方法分享!

非局域网环境下&#xff0c;怎么远程桌面&#xff1f;还能做到吗&#xff1f; 在企业管理中&#xff0c;远程桌面访问已成为提高工作效率、实现跨地域协同工作的关键工具。 然而&#xff0c;当被控端与控制端不在同一局域网时&#xff0c;如何实现远程桌面连接成为了许多企业…

ROS学习笔记(二):鱼香ROS — 超便捷的一键安装/配置/换源指令(Ubuntu/ROS/ROS2/IDE等)

文章目录 前言鱼香ROS1 一键安装&#xff1a;快速搭建开发环境2 具体使用2.1 如何开始&#xff1f;2.2 我的常用配置方案2.3 安装示例 3 总结相关链接 前言 关于Ubuntu与ROS的常规安装&#xff0c;可以看这几篇。 SLAM实操入门&#xff08;一&#xff09;&#xff1a;在已有…

特种作业管理系统 —— 企业安全与效率的卓越保障

在当今复杂多变的工业生产和作业环境中&#xff0c;安全与效率是企业发展的两大核心关键。我们深知您在特种作业管理方面面临着诸多挑战&#xff0c;如作业流程的规范性、证件的有效管理以及设备的安全运行等。今天&#xff0c;我们为您带来一款专门解决这些问题的创新产品——…

如何解决项目申报过程中文件管理混乱问题?

在项目申报的复杂流程中&#xff0c;文件管理是一项至关重要的环节。它直接关系到项目信息的完整性、安全性和可访问性。然而&#xff0c;传统的文件管理方式往往面临诸多痛点&#xff0c;如资料分散、权限混乱、版本冲突等。 文件管理痛点 资料分散难管理&#xff1a;在项目…

2024年【黑龙江省安全员C证】报名考试及黑龙江省安全员C证免费试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 黑龙江省安全员C证报名考试考前必练&#xff01;安全生产模拟考试一点通每个月更新黑龙江省安全员C证免费试题题目及答案&#xff01;多做几遍&#xff0c;其实通过黑龙江省安全员C证模拟考试很简单。 1、【多选题】《…

如何搭建测试平台?理清思路很重要

01 测试平台 01 职责 一个健康的测试平台体系&#xff0c;对测试人员的职责分工、协作模式会有不同的要求。 测试平台核心的职责是完成高质量的交付已满足业务需求。测试活动包括单元测试、集成测试、接口测试、性能测试等&#xff0c;都是通过这些测试手段&#xff0c;协同…

22k star,最强开源堡垒机,强推

最开始接触jumpserver已经是五年前了&#xff0c;最近又发布了最新的v3版本&#xff0c;迫不及待的就去体验了一波&#xff0c;真心不错&#xff0c;增加很多新的功能&#xff0c;操作真的丝滑&#xff0c;比起公司采购的上个世纪的堡垒机真心好用多了。 1 jumpserver简介 ju…

【linux进程】深度理解进程--什么是进程什么是pcb进程创建

目录 前言一&#xff0c;对PCB的理解二&#xff0c;CPU对进程列表的处理三&#xff0c;进程标识符:pid1. 查看系统进程1: ps axj2. 查看系统进程2: /proc 四&#xff0c;系统调用函数:getpid五&#xff0c;父进程和子进程的概念六&#xff0c;创建子进程--fork函数的使用1. 创建…

CSS颜色设置

我们在显示屏上看到的各种颜色都是通过红&#xff08;red&#xff09;、绿&#xff08;green&#xff09;、蓝&#xff08;blue&#xff09;三原色组合而成的&#xff0c;按不同的比例混合这三种颜色就可以得到其它颜色&#xff0c;通过调整红、绿、蓝三种颜色的数值可以最大限…

微信开发者工具审查界面元素

一、打开调试器 二、审查元素 点击调试器左边的箭头&#xff0c;将鼠标放在界面上即可审查元素

Node-RED-L2-Node-RED在Linux系统启动时自动运行

Node-RED在Linux系统启动时自动运行 目的步骤1创建服务文件&#xff1a;2重新加载服务&#xff1a;3启用服务&#xff1a;4启动Node-RED服务&#xff1a;5检查服务状态&#xff1a;6其他说明7如果没启动正确的Node-RED执行路径&#xff1a;确保使用绝对路径&#xff1a; 检查用…

Servlet入门:服务端小程序的初试(自己学习整理的资料)

目录 一.前言 二.建立基础结构​编辑 三.具体步骤 找到Tomcat文件并打开Tomcat。 在webapps中创建一个自己的文件夹。 在classes中新建一个Java文件。 在lib中导入需要的jar文件包。 配置环境变量 在Java文件的目录下打开cmd并输入 javac -d . HelloServlet.java进行…

深兰科技陈海波应邀出席2024长三角论坛暨虹桥人才创新发展大会

近日&#xff0c;以“人才引领 联动共融——国际化创新与长三角协同”为主题的“2024长三角人才发展论坛暨虹桥人才创新发展大会”在上海国际会议中心隆重举行。上海市委常委、组织部部长、市委人才办主任张为应邀出席并做大会致辞。 深兰科技创始人、董事长陈海波作为特邀企业…

多用户自定义商城小程序源码系统 独立部署 到源代码包以及搭建部署教程

系统概述 随着移动互联网的迅猛发展&#xff0c;消费者的购物习惯逐渐向线上转移。传统电商平台虽然提供了一定的便利&#xff0c;但也存在一些局限性&#xff0c;如高昂的入驻费用、缺乏个性化定制等。为了适应市场需求&#xff0c;多用户自定义商城小程序源码系统应运而生。…

linux 之0号进程、1号进程、2号进程

一、0号进程 0号进程&#xff0c;通常也被称为idle进程&#xff0c;或者也称为swapper进程&#xff0c;其 pid 等于0。 0号进程是linux启动的第一个进程&#xff0c;它的task_struct的comm字段为"swapper",所以也称为swpper进程。 kernel/include/linux/init_task…