06-性能测试之JMeter参数化

导读

JMeter参数化

函数助手:_CSVRead

CSV Data Set Config

User Defined Variables

User Variables

1、JMeter 参数化

参数化是自动化测试脚本的一种常用技巧。简单来说,参数化的一般用法就是将脚本中的某些输入使用参数来代替,在脚本运行时指定参数的取值范围和规则,这样,脚本在运行的时候就可以根据需要选取不同的参数值作为输入。这种方式在自动化中称为数据驱动测试(Data Driven Test),参数的取值范围被称为数据池(Data Pool)。

(1)JMeter支持多种形式的参数化,我们本节学习下面几种

函数助手:_CSVRead

CSV Data Set Config:CSV数据控件

User Defined Variables:用户定义的变量

User Variables:用户参数

(2)准备测试脚本

我们还使用前面录制的登录脚本,计划将登录名及其密码参数化

(3)准备测试数据

在Redmine系统中,手动创建几个用户;

在电脑上新建一个txt文档,记录下用户名、密码,用半角英文逗号分隔,然后保存成”.dat”格式;

2、函数助手:_CSVRead

(1)在JMeter界面,菜单栏,点击“选项”——>“函数助手对话框”,打开如下页面,从功能下拉列表选择_CSVRead功能

CSV file to get values from | *alias:取值的文件,写绝对路径

Column number of CSV file | next | *alias:文件起始列号,0代表第一列,1代表第二列,以此类推;

函数字符串:参数化后的参数,复制就可以使用了,比如这里,“{__CSVRead(D:\users.dat,0)}”代表我的用户名,“{__CSVRead(D:\users.dat,0)}”代表我的用户名,“{__CSVRead(D:\users.dat,1)}”代表密码

(2)替换脚本

我们将登录脚本的,用户名(admin),密码(test1234),替换成参数

(3)查看结果

修改线程数,发送请求,通过查看结果树,查看请求的参数,如下图所示:

可以看到3个登录请求,分别使用了文件中的不同用户名;

3、配置元件——CSV Data Set Config

(1)右键线程组,添加配置元件 ——> CSV Data Set Config

文件名:保存参数化的文件;

文件编码:要和文件的编码格式保持一致;

变量名称:对应参数文件每列的变量名,类似Excel文件的文件头,起到标示的作用,同事也是后续引用的标识符,建议采用有意义的英文标示;(有几列参数,这里就写几个参数名,每个名称中间用英文逗号分隔,这里的user、pwd就可以在其它地方调用了user、user、{pwd})

忽略首行:我们参数化文件,第一行是测试数据,即不需要忽略首行,所以选择false

分隔符:与参数文件保持一致即可,参数文件使用逗号,我们这里就填逗号,参数文件使用tab,这里就使用\t符号

是否允许带引号:是否允许cvs数据被引号包裹,我们选择false

遇到文件结束符再次循环?:这里选择True,什么意思呢?假如我们有3行数据,但是有4个线程,第4个线程会继续使用第一行数据循环登录

遇到文件结束符停止线程?:这里选择False,不结束

线程共享模式:4种模式,所有线程,当前线程组,当前线程,自定义

(2)替换脚本

这次我们修改为4个线程

修改登录请求参数

(3)查看运行结果

当3行数据被用完时,循环从第一条读取,所以admin这个用户使用了两次。

4、配置元件——User Defined Variables

(1)点击线程组,添加配置元件——User Defined Variables

如上图所示,在该参数组中已经定义了两个参数,通过界面下方的添加、删除按钮可以向参数列表增加和删除参数,Up和Down可以上下移动参数的位置;

PS:User Defined Variables中定义的参数值在test plan执行过程中不能发生取值的改变,因此一般仅将test plan中不需要随迭代发生改变的参数(只取一次的参数)设置在此处;例如:被测应用的host和port值。这里我们为了演示效果,创建了用户名和密码

(2)修改脚本

线程数修改为1

登录参数修改为如下图所示

(3)查看执行结果

5、前置处理器——User Variables

(1)邮件线程组,添加前置处理器——User Variables

小结

JMeter支持多种形式的参数化。请根据实际情况选择合适的参数化方法。

为什么要进行参数化,最主要的原因就是不参数化,脚本回放不成功,哈哈(比如你录制一个注册用户的脚本,由于登录名不能重复,如果不参数化,回放或者压测必然会失败)

原文发布于微信公众号 - 测试邦(testerbang)

原文发表时间:2019-09-02

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

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券