前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【性能工具】Jmeter之参数化详解

【性能工具】Jmeter之参数化详解

作者头像
Luga Lee
发布2022-03-25 14:13:52
1.3K0
发布2022-03-25 14:13:52
举报
文章被收录于专栏:架构驿站

1、用户自定义变量

选中需要添加变量控件的父节点,右键——>添加——>配置元件——>用户自定义的变量,截图如下:

在用户定义的变量列表中分别填入:名称,对应的值,在其他地方就可以以“${变量名}”的方式引用了。(引用的时候,需要注意一下变量的作用范围)

2、使用Jmeter自带函数获取参数值

Jmeter中可以产生值的函数有:__Random( , , ),__threadNum,__CSVRead( , ),__StringFromFile( , , , ) [补充各函数调用方法如下:

1)__Random( , , ),获取值的方式:${__Random( param1,param2 ,param3 )},param1为随机数的下限,param2为随机数的上限,param3为存储随机数的变量名,是选填项。所以,也还可以这样调用此函数:_Random(param1,param2,param3),然后再取param3的值。

2)__threadNum,获取值的方式:${__threadNum},这个函数没有任何参数,它用于得到当前运行的线程编号。

3)__CSVRead( , ),获取值的方式:${__CSVRead(param1,param2)},param1是文件名,param2是文件中的列(列数从0开始)。具体操作见csv数据提取部分的说明。

4)__StringFromFile( , , , ),获取值的方式:${__StringFromFile(param1,param2,param3)},param1是文件名,param2、param3为选填项:param2—存储结果的变量,param3—文件开始列,网上找到一点此函数的用法,来自:http://www.cnblogs.com/morebetter/archive/2005/03/04/112871.html

1.函数:${_StringFromFile(文件名.dat)}

2.外部文件的格式必须为.dat

3.默认读取位置为/bin下,也可以自己设定文件存放路径,如:${_StringFromFile(e:user.dat)},从e盘下读取user.dat文件中的数据

4.每次读取文件中的一行

5.如果我有多个user文件,想一起读取,文件名分别为user1 user2。函数写为:${_StringFromFile(user#.dat,,1,2)},从默认目录下读取user1和user2的文件

6.如果一个文件想读取多次,可以写成:${_StringFromFile(user.dat,,,2)},user1文件读取2次]

【说明】关于Jmeter的函数使用,可以用Jmeter的函数助手对话框:点击Jmeter的“选项”,选择“函数助手对话框”(或者使用快捷键“Ctrl+F”),在“选择一个功能”的下拉框中选择你所要是有的函数,在函数参数列表的“值”这一栏,填写好相应的参数值,点击按钮【生成】,就可以拷贝生成的函数字符串进行使用了。用函数助手生成函数__Random字符串的截图如下:

3、从csv文件中读取

先说一下csv文件的数据格式:

1、文件后缀为.csv

2、每一个参数占一列,列与列直接用英文逗号(通常情况下是用英文逗号作分割符,其他符合应该也行,暂没试过。)

3、第一行就开始写参数值,不需要些参数名。

使用CSV文件数据前,先要添加CSV Data Set Config,选中要添加节点(一般是线程组或Sampler元件,区别是作用范围的大小不一致),右键——>添加——>配置元件——>CSV Data Set Config,填写好了的CSV Data Set Config截图如下:

填写项说明:

1、名称、注释:元件的名称及注释

2、Config the CSV Data Source:

1)Filename:csv文件的名称(包括绝对路径,当csv文件在bin目录下时,只需给出文件名即可)

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

3)Variable Names(comma-delimited):csv文件中各列的名字(有多列时,用英文逗号隔开列名),这个变量名称是在其他处被引用的,所以为必填项。

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

5)Allow quoted data?:是否允许引用数据,---这个目前还未弄明白,设置成True或者False都能正常引用数据。

6)Recycle on EOF?:到了文件尾是否循环,True—继续从文件第一行开始读取,False—不再循环

7)Stop thread on EOF?:到了文件尾是否停止线程,True—停止,False—不停止,注:当Recycle on EOF设置为True时,此项设置无效。

8)Sharing mode:共享模式,All threads –所有线程,Current thread group—当前线程组,Current thread—当前线程。这个地方和LoadRunner中的迭代取之相反,经试验得出来的结果是:

Ø All threads:测试计划中所有线程,假如说有线程1到线程n (n>1),线程1取了一次值后,线程2取值时,取到的是csv文件中的下一行,即与线程1取的不是同一行。

Ø Current thread group:当前线程组,假设有线程组A、线程组B,A组内有线程A1到线程An,线程组B内有线程B1到线程Bn。取之情况是:线程A1取到了第1行,线程A2取第2行,现在B1取第1行,线程B2取第2行。

Ø Current thread:当前线程。假设测试计划内有线程1到线程n (n>1),则线程1取了第1行,线程2也取第1行。

【在试验的过程中,发现:线程循环时,去取csv值时,也算入迭代。例如,当设置为Current thread时,线程1第1次取了第1行,第2次取的就是第2行】

配置好CSV Data Set Config后,就可以在需要调用参数的地方进行调用了,如上图中配置的pp.csv文件,就可以用${passport},进行调用了。

4、从数据库中获取

用jdbc Request从数据库中提取数据,然后再在JDBC请求中添加“后置处理器”à“正在表达式提取器”,提取查询所得数据

参考资料:

1、Jmeter参数化的4种方法:http://www.alldaytest.com/sns/forum.php?mod=viewthread&tid=2313

2、Jmeter脚本的参数化:http://www.cnblogs.com/Carrie_Liang/archive/2008/12/22/1325889.html

3、Jmeter变量参数化及函数应用:http://hi.baidu.com/ctest/blog/item/fb5eb51776a088054a90a7ae.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构驿站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档