专栏首页橙子探索测试【Jmeter篇】五种参数化方式之CSV Data Set Config参数化

【Jmeter篇】五种参数化方式之CSV Data Set Config参数化

一、用户定义的变量

一般会设置全局不变的参数,如host、账号、密码等

设置名称username,password 值王荔,123456

线程设置2次和循环设置2次,2次采样器传参和结果一样

二、用户参数

添加用户参数

设置3组参数

参数化

当线程设置线程数4个,会循环参数1 2 3 1;当循环设置4次,会循环参数1 4次;当线程设置2个,循环设置5次,会参数1和2分别循环5次

三、随机变量

添加随机变量

设置随机变量

变量名称:名称可以引用,如 ${xxx}

输出格式:列如此处输入x,那么得到结果是x1、x2之类的格式

最小值:输入生成随机数的最小数字

最大值:输入生成随机数的最大数字

分别设置10线程或10次循环,随机生成10个变量

四、计数器

添加计数器

设置计数器

启动(start)

给定计数器的起始值、初始值,第一次迭代时,会把该值赋给计数器

注:英文版下是Start,Jmeter的中文语言将Start翻译成了“启动”,有些歧义

递增(Increment):

每次迭代后,给计数器增加的值

最大值(Maximum) :

计数器的最大值,如果超过最大值,重新设置为初始值(Start),默认的最大值为Long.MAX_VALUE,2^63-1

Number format :

可选格式,比如000,格式化为001,002。默认格式为Long.toString(),但是默认格式下,似乎还是可以当作数字使用

引用名称(Reference Name) :

用于控制在其它元素中引用该值,形式:$(reference_name}

与每用户独立的跟踪计数器(Track Counter Independently for each User):

换言之,这个是全局的计数器,还是说每个用户拥有自己的计数器。如果不勾选,即全局的,比如用户#1 获取值为1,用户#2获取值为2,如果是独立的,即不勾选,每个用户有自己的值,比如用户#1 获取值为1,用户#2获取值还是为1

Reset counter on each Thread Group Iteration :

可选,仅勾选与每用户独立的跟踪计数器时可用,如果勾选了,每次线程组迭代,都会重置计数器的值。当线程组是在一个循环控制器内时比较有用

未勾选与每用户独立的跟踪计数器

线程10时、循环10次时,递增迭代

勾选与每用户独立的跟踪计数器

线程10时,迭代第一个变量;循环10次时,递增迭代

五、csv data set config参数化

添加csv data set config

设置参数文件

设置csv data set config

1 Filename:文件名,指保存信息的文件目录,可以相对或者绝对路径(比如:D:\ceshi.Txt)

2 File encoding:csv文件编码,可以不填

3 Variable Names:变量名,多个变量用“,”分开。变量使用格式${OA_VendingMachineNum}和${Name}

4 Delimiter:csv文件中的分隔符(用”\t”代替tab键)(一般情况下,分隔符为英文逗号)

5 Allow quoted data:是否允许引用数据(尚不清楚)

6 Recycle on EOF :到了文件尾处,是否循环读取参数,选项:true和false。因为CSV Data Set Config一次读入一行,分割后存入若干变量交给一个线程,如果线程数超过文本的记录行数,那么可以选择从头再次读入

7 Stop thread on EOF:到了文件尾处,是否停止线程,选项:true和false

当Recycle on EOF 选择true时,Stop thread on EOF选择true和false无任何意义,通俗的讲,在前面控制了不停的循环读取,后面再来让stop或run没有任何意义

当Recycle on EOF 选择flase时,Stop thread on EOF选择true,线程4个,参数3个,那么只会请求3次

当Recycle on EOF 选择flase时,Stop thread on EOF选择flase,线程4个,参数3个,那么会请求4次,但第4次没有参数可取,不让循环,所以第4次请求错误

8. Sharing mode:共享模式,All threads –所有线程,Current thread group—当前线程组,Current thread—当前线程。经试验得出来的结果是(不考虑线程组迭代):

如果测试计划中有线程组A、线程组B,A组内有线程A1到线程An,线程组B内有线程B1到线程Bn,CSV Data Set Config放在线程组A的下级组织树,不管怎么设置Sharing mode,都只针对线程组A且取之情况一样:线程A1取第一行,线程A2取第二行。CSV Data Set Config放在测试计划下级组织树(与线程组并列),情况如下 :

All threads:测试计划中所有线程,线程组A、线程组B共用一个CSV文件,所取数据与线程实际执行顺序有关(先执行先取)。补充一点:线程组之间是并行执行,各线程实际执行时间根据Ramp-UP Period而来,如下图,若线程A、线程B均设置Ramp-Up Period:2,取之情况是:线程A1取第1行,线程B1取第2行,线程A2取第3行,线程B2取第4行。

Current thread group:取之情况是:线程A1取第1行,线程A2取第2行,线程B1取第1行,线程B2取第2行。(线程组互不影响)

   Current thread:当前线程。A1取第一行,A2取第一行;B1取第一行,B2取第一行(均取第一行)

CSV Data Set Config默认设置,线程10个、循环10次,结果一样

本文分享自微信公众号 - 橙子探索测试(chengzitest),作者:王荔探索测试

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Jmeter模拟真实用户压测场景之阶梯螺纹线程组、终极线程组、并发线程组实例

    2、搜索standard set并安装,重启jmeter,查看测试计划——添加线程组——jp@gc - Stepping Thread Group (depre...

    橙子探索测试
  • 进程与线程

      进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O...

    橙子探索测试
  • Python多线程之线程锁(Lock)和递归锁(RLock)实例

    Threading模块为我们提供了一个类,Threading.Lock锁。我们创建一个该类对象,在线程函数执行前,“抢占”该锁,执行完成后,“释放”该锁,则我们...

    橙子探索测试
  • java学习笔记(基础篇)—线程

    线程是程序执行的最小单位,是动态的。 进程是系统进程资源分配和系统调度的最小单位,是动态的。 线程和进程的目的:多任务--->效率高

    chlinlearn
  • 线程池

    不光是线程池,池化思想在诸多地方有着很好的应用,比如对象池、连接池等等。。一般运用池化思想的都是一些比较消耗系统资源的操作,通过池化,可以降低内存消耗,并且可以...

    AlbertZhang
  • 线程池ThreadPoolExecuter使用详解

    使用过jdk自带线程池或者看过源码的都知道,jdk1.5版本引入了并发包,线程池就是其中一个比较重要的内容,所谓线程池和连接池以及其他池子一样,其核心概...

    Typhoon
  • 面试官:Java线程池了解?如果你还回答不好,那还不赶快收藏!

    本文将根据面试中常被问到的 Java线程池 展开抽丝剥茧的解析,这个问题可以说是百分之百会在Java程序员面试中被问到,因为在工作中这个需求实在是太普遍了。Ja...

    捡田螺的小男孩
  • 操作系统概念学习笔记 9 线程

    线程是CPU使用的基本单元,它由线程ID、程序计数器、寄存器集合和栈组成。它与属于统一进程的其他线程共享代码段、数据段和其他操作系统资源。

    种花家的奋斗兔
  • 面试官:怎样去运用线程池?工作中如何使用?

    工作中,我们有时候需要实现一些耗时的任务。比如:将 Word 转换成 PDF 存储的需求。

    业余草
  • 【Java线程】“打工人”初识线程池及自定义线程池实战

    聊一下为什么要使用线程池? 程序的运行本质,就是通过使用系统资源(CPU、内存、网络、磁盘等等)来完成信息的处理,比如在JVM中创建一个对象实例需要消耗CPU...

    沁溪源

扫码关注云+社区

领取腾讯云代金券