Jmeter 参数化实现

Jmeter 参数化实现在测试过程中,我们经常遇到需要根据需求动态操作数据的情况,常规的固定数据无法满足我们的需要,这个时候,我们可以通过jmeter提供的参数化组件来实现动态的获取数据、改变数据。Jmeter中常用的参数化方式jmeter为我们提供了四种实现参数化的方式,分别是【CSVDataSetConfig】(数据集配置)组件、【用户参数】组件、【用户定义的变量】组件和【函数】组件,四种方式都有…

大家好,又见面了,我是你们的朋友全栈君。

      在测试过程中,我们经常遇到需要根据需求动态操作数据的情况,常规的固定数据无法满足我们的需要,这个时候,我们可以通过jmeter 提供的参数化组件来实现动态的获取数据、改变数据。

Jmeter 中常用的参数化方式

      jmeter 为我们提供了四种实现参数化的方式,分别是【CSV Data Set Config】(数据集配置)组件、【用户参数】组件、【用户定义的变量】组件和【函数】组件,四种方式都有各自的使用场景,互为补充。

1.【CSV Data Set Config】(数据集配置)组件

      我们借助此组件可以实现动态的从外部CSV文件中获取数据,从而达到批量操作数据的目的。
使用此组件的前提条件:我们需要有一个 CSV 格式的数据文件。

CSV文件编写格式:
	1.每一行代表一条数据;
	2.各字段之间用英文逗号分隔开;
	3.编码格式采用 utf-8。

假设现在有一个 CSV 格式的数据文件csv_test.txt,该文件内容如下图所示:
这里写图片描述

      要实现依次读取文件中的内容,并将内容中第一个字段的值作为关键字在百度中搜索的操作,我们可以这样做:
1)在jmeter中依次创建【测试计划】、【线程组】和【HTTP 请求】,并添加查看结果的组件【查看结果树】如图:
这里写图片描述
2)添加【CSV Data Set Config】(数据集配置)组件:右击【线程组】—>【添加】—>【配置元件】—>【CSV Data Set Config】。
3)配置参数

  • 设置线程组循环次数:选中【线程组】,在右边属性窗口中将【循环次数】设置成 与CSV 数据文件中数据条数相同,在本例中即为3。
    这里写图片描述
  • 设置 CSV Data Set Config 组件的参数
    • Filename:CSV 数据文件所在路径。

    • File encoding:CSV文件的编码格式,即 utf-8;

    • Variable Names(comma-delimited):给 CSV 数据文件中数据的每个字段取一个名字,作为调用的变量名;CSV 中每个字段都对应一个变量,每个变量用逗号隔开

    • Delimiter(use ‘\t’ for tab):与CSV 中的分隔符 保持一致,本例中即为英文逗号;
      这里写图片描述

    • 一般情况下,我们只需要设置这四个属性即可。

4)使用变量

  • 变量名即为上一步骤中设置的变量名
  • 变量使用格式为${变量名}
  • 在 HTTP 请求 URL 路径中使用正确格式调用变量,如图。
    这里写图片描述
  • 为了结果更明确,在 HTTP 请求的命名中也调用此变量标注。

5)执行,结果如下图:
这里写图片描述
      结果中显示,我们依次从 CSV 数据文件中获取到了每条数据的第一个字段的值,并将其作为百度搜索的关键字执行了搜索。

2.【用户参数】组件

      除了读取外部文件中的数据,我们还可以在jmeter中定义一些数据,实现批量操作数据的功能。但由于此操作不是那么的易用,所以数据量较大时,不建议使用此操作。
下面我们来看一下具体是怎么操作的:
1)这里我们先把上面添加的 CSV Data Set Config 组件禁用掉(右击该组件后选择【禁用】即可);
这里写图片描述
2)通过添加【用户参数】组件,用来配置数据:右击【测试计划】—>【添加】—>【前置处理器】—>【用户参数】,如图:
这里写图片描述
3)配置数据。我们可以看到用户参数面板如下图所示,主要使用的部分就是图中标注出来的三个部分:
这里写图片描述

  • ①这里应该不陌生了,就是用来标注我们这部分的参数是给干什么用的,取个名字,见名知意,好让我们以后再看的时候不会迷糊。

  • ②这里我们看到有四个按钮,第一行的两个是用来操作变量的,第二行的两个是用来操作用户的。这里所谓的变量就是我们要设置的参数变量名,用来在后面调用的;而用户就是参数值,每一个用户对应一条数据。

  • ③ 点击【添加变量】后会在③中添加一行输入框,提供给我们输入变量名和变量值,输入后保存即可。点击【添加用户】后会在【用户_1】后面添加一列,表示可以多添加一条数据。

  • 我们还是用上面例子中的数据添加到这,如下图:
    这里写图片描述

  • 从上面的结构我们可以看出,【用户参数】组件是通过表格的形式来存储数据的,每个变量和变量值都需要我们手动去一条一条添加,可想而知,如果数据量比较大的情况下,我们还是用此方式操作的话,就会比较麻烦了。这种情况下,就建议使用第一种方式来批量操作数据了。

4)更改线程组设置,让jmeter循环读取我们的数据:

  • 将线程组的【线程数】更改为与我们【用户参数】中用户数量相同;
  • 将线程组的【循环次数】更改回 1 次。

5)调用参数的方式与上面的例子相同,在需要的地方使用”${变量名}”的格式调用即可,这次我们来遍历一下 【country】的值。
这里写图片描述
6)我们来执行一下,看看读取【用户参数】的执行结果:
这里写图片描述
出现上面的结果,就说明我们配置成功了!

3.【用户定义的变量】组件

1)通常,在项目的接口中经常会遇到一些相同的部分,当这个相同的不出频繁出现时,我们可以将其抽取出来,作为一个全局的变量供我们调用,定义全局变量我们可以通过定义【用户定义的变量】来实现;
2)这里我们抽取 HTTP 请求的【服务器名称】和【端口号】来举例。
3)添加【用户定义的变量】组件:右击【测试计划】—>【添加】—>【配置元件】—>【用户定义的变量】,如图所示,
这里写图片描述
4)【用户定义的变量】面板如下图所示,我们依次来介绍。
这里写图片描述

  • ①取个见名知意的名字
  • ②点击【添加】,就会出现③中的输入框;点击【删除】,就会在③中删除一个变量。
  • ③【名称】:即参数名,变量名;【值】:参数值,变量值;【Description】:对变量的描述信息,可不填。
    这里写图片描述

5)调用方式和之前一样,HTTP 请求的【服务器名称】和【端口号】的位置调用这两个变量:
这里写图片描述
6)查看执行结果,如下:
这里写图片描述
      这里我们要注意的是:【用户定义的变量】是全局变量,即这里定义的变量的所有值只会初始化一次,无论后面创建了多少线程,值都不会变。也正是因为这个原因,为了不占用过多资源,建议不要创建太多这种类型的变量。

4.【函数】组件

      在jmeter 中已经内置了一些【函数】供我们使用,给我们的测试工作提供了很大的便利。在jmeter中常用的【函数】主要有6个,我们通过其中的__counter()为例来介绍【函数】组件的使用方式,后面再介绍每个函数的功能。
1)调出【函数】组件有三种方式,我们在使用时选择任意一种即可:

  • 方式一:菜单栏【选项】—>【函数助手对话框】

这里写图片描述

  • 方式二:工具栏中倒数第二个类似于笔记本的按钮【函数助手对话框】
    这里写图片描述
  • 方式三:使用快捷键:
    • Windows 平台:Ctrl+shift+F1
    • Mac 平台:shift+command+F1
  1. 执行1)中的操作后,会出现下面的对话框:
    这里写图片描述
  • ①选择我们需要使用的函数__counter

  • ②设置函数调用时需要的参数:

    • 第一行:设置此计数器的作用范围:

      • TRUE:用户范围内有效,在本例中我们可以认为是单次循环内有效;
      • FALSE:全局范围内有效,即在多次循环范围内有效。
    • 第二行:这里要给函数的返回值取个名字,以便后面调用,这个是选填参数;

  • ③点击【生成】按钮,在输入框中就会出现完整的函数调用代码,我们直接复制到需要调用该函数的位置即可。
    这里写图片描述

3) 为了直观体现出参数的作用,我们把线程组的【循环次数】设置为多次,这里就设置为3。

  • 当参数选择 TRUE 时:
    这里写图片描述
    这里写图片描述
    查看结果,我们可以发现,每次循环都是从1开始的。
  • 当参数选择 FALSE 时:
    这里写图片描述
    查看结果,我们可以发现,所有循环使用同一个计数器,新循环开始时,计数器不再重置为1,而是继上次循环结束时的结果递增。

至此,函数的调用方式就介绍完了,下面就介绍一下jmeter中内置的6个常用函数:

  • __counter():计数器,上面介绍过了,就不再赘述。

  • __random():产生一个随机数。

    • 参数1:随机范围的低边界值,即随机范围内的最小值;
    • 参数2:随机范围的高边界值,即随机范围内的最大值;
    • 如下图中的设置所示,随机范围为[0,100] ,即两个边界值都可能取到。
      这里写图片描述
  • __time():返回当前时间,默认为距离1970年1月1日 0时0分0秒的毫秒值。

    • 参数1:设置返回的时间表现形式,
      • yyyy:表示年份
      • MM:表示月份
      • dd:表示日期
      • hh/HH:表示小时(hh:12小时制,HH:24小时制);
      • mm:表示分钟
      • ss:表示秒
        这里写图片描述
  • __CSVRead():读取外部 CSV 格式文件,类似于 CSV Data Set Config 组件,用来批量操作数据。

    • 参数1:CSV 文件路径,注意这里要填写 CSV 文件的绝对路径;

    • 参数2:要读取CSV 文件中哪一个字段的值,这里填写的是字段对应的 index 值,index 从0开始计数,即第一个字段对应的 index 为0 。
      这里写图片描述

    • 注意:此函数读取 CSV 文件要注意:

      • 此函数调用一次,只能读取一个字段的值,所以想要读出所有字段,需要多次调用此函数;
      • 将线程组的【线程数】设置为与 CSV 文件数据行数相同,可以读出当前字段对应的所有值;
    • 查看结果

      • 线程数设置为3,(与 CSV 文件数据行相同)
      • 只用一次 HTTP 请求,读取一个字段的值
        这里写图片描述
        这里写图片描述
        结果显示,我们只读取了一个字段对应的所有数据。
      • 下面我们再创建一个 HTTP 请求,多调用一次此函数,读取两个字段的值,注意第二各字段对应的 index 为1,不要忘记修改。
        这里写图片描述
        由结果看出,线程数为3,发送两次请求,调用两次此函数,成功的读取出了 CSV 文件中的两个字段对应三条数据的所有值。
  • __setProperty() 和 __property():用于线程组之间传参。

    • __setProperty() 在线程组1中将属性及属性值放到测试计划的共享空间中;
    • __property()在线程组2中从共享空间中获取属性。

至此,Jmeter的参数化实现方式就介绍完了,希望以后看到的时候不会迷糊!哈哈~~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/147401.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 微信小程序开发实战1 微信小程序开发概述

    微信小程序开发实战1 微信小程序开发概述1.微信小程序开发概述1.1微信小程序的特点微信小程序是微信平台提供的一种开放技术,微信小程序为企业用户服务,用于建立一种移动端的“轻应用”,这种应用是不需要下载安装即可使用的应用,用户扫一扫或者搜一下即可打开应用。用户也不用关心是否安装了太多应用的而造成手机空间不足问题。微信小程序的推出后,与订阅号、服务号、企业号并列成为微信的企业应用体系。图1-1微信公众平台产品类型微信小程序运行在微信平台之上,微信平台对不同的手机平台已经做了兼容。使用微信小程序开发的应用,不需要兼容多个平台,开发完成后可

  • 分享一个C#的分页类建议收藏

    废话不说只有代码:1usingSystem.Linq;2usingSystem.Collections.Generic;34namespaceCommonLibrary5{6

    2021年12月20日
  • Java 中使用 Jersey 实现上传文件(附加密和解密)

    Java 中使用 Jersey 实现上传文件(附加密和解密)Jersey简介Jersey是开源的RESTful框架,实现了JAX-RS规范,提供了更多的特性和工具,可以进一步地简化RESTfulservice和client开发,与S

  • java编写九九乘法表「建议收藏」

    java编写九九乘法表「建议收藏」案例:java编写九九乘法表,源码如下:packagestart;publicclassstart2{ publicstaticvoidmain(String[]args){ inti,j; for(i=1;i<10;i++){ for(j=1;j<=i;j++){ System.out.print(j+”*”+i+”=”+i*j+”\t”); } System.out.println(); } }}运行结果如下:

  • git设置ssh key(git ssh配置)

    gitclone支持https和git(即ssh)两种方式下载源码:当使用git方式下载时,如果没有配置过sshkey,则会有如下错误提示:下面就介绍一下如何配置git的sshkey,以便我们可以用git方式下载源码。首先用如下命令(如未特别说明,所有命令均默认在GitBash工具下执行)检查一下用户名和邮箱是否配置(github支持我们用用户名或邮箱登录):git

  • 软件使用&vmware虚拟机的安装步骤详细[通俗易懂]

    实验环境:Windows+Vmware12+RHEL7.2+Xshell5准备工作:1.关闭并退出360,电脑管家等优化软件,防止虚拟机运行出现问题。2.打开链接http://www.vmware.com/cn/products/workstation/workstation-evaluation下载试用版3.安装该软件,可以指定将来虚拟机存放的目录,其他随意。打开vmwar…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号