参数化是接口测试或性能测试中重要的一项技术,Jmeter中常用的参数化方式有以下几种:
方法一、Jmeter自带的函数助手
点击工具栏种的函数助手图标,即可打开函数助手弹窗
(1)比如使用函数_Random
输入最小值、最大值,点击下方的【生成】按钮,即会生成:${__Random(1,5,)}
然后拷贝上图种的字符串,赋值给需要进行参数化的参数即可。
(2)比如使用函数__CSVRead
先准备csv文件,可以先在excel文件里准备好数据,保存的时候格式选择csv格式;
输入csv文件所在的路径:F:\test.csv,输入参数所在的列(注意:此处列数是从0开始数的,第一列是用户名,对应的列号为0,第二列是密码,对应的列号为1…),生成被调用的函数:KaTeX parse error: Expected group after '_' at position 2: {_̲_CSVRead(F:\tes…{__CSVRead(F:\test.csv,0)}
方法二、CSV Data Set Config
选中取样器,右键:添加-配置元件-CSV Data Set Config,从csv文件中读取
Filename:csv文件所在的路径以及名称如:F:\test.csv ;(其实不一定要csv文件,txt格式的文件也可以)
File encoding:文件编码方式,可以不填写;这里以百度为例,它的源代码里 ,所以这里File encoding:gb2312
Variable Names(comma-delimited):给出变量名如:name,pwd;这里的变量名是给后面引用用的,如要用到这个文件的值,可以利用变量名来引用:
n
a
m
e
,
{name},
name,{pwd},如test.csv文件中有这样的数据:1@180chen.cn,abc1233,那
n
a
m
e
就可以引用到
1
@
180
c
h
e
n
.
c
n
,
{name}就可以引用到1@180chen.cn,
name就可以引用到1@180chen.cn,{pwd}就可以引用到abc1233
Delimiter(use ‘\t’ for Tab):这个是用来隔开变量的分隔符,如上面的name,pwd,那分隔符就是“,”
Allow quoted data?:是否允许引用数据,—这个目前还未弄明白,设置成True或者False都能正常引用数据。
Recycle on EOF?:到了文件尾是否循环,True—继续从文件第一行开始读取,False—不再循环
Stop thread on EOF?:到了文件尾是否停止线程,True—停止,False—不停止,注:当Recycle on EOF设置为True时,此项设置无效。
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 Data Set Config实现的功能跟之前用的:${__CSVRead(F:\test.csv,0)}这个函数实现的功能大体上是一样的。
方法三、用户定义的变量
选中取样器,右键:添加-配置原件-用户定义的变量