06-性能测试之JMeter参数化

导读

  1. JMeter参数化
  2. 函数助手:_CSVRead
  3. CSV Data Set Config
  4. User Defined Variables
  5. 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”格式;
    06-性能测试之JMeter参数化_第1张图片

2、函数助手:_CSVRead

(1)在JMeter界面,菜单栏,点击“选项”——>“函数助手对话框”,打开如下页面,从功能下拉列表选择_CSVRead功能
06-性能测试之JMeter参数化_第2张图片
06-性能测试之JMeter参数化_第3张图片

  • 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),替换成参数
06-性能测试之JMeter参数化_第4张图片

(3)查看结果
修改线程数,发送请求,通过查看结果树,查看请求的参数,如下图所示:
06-性能测试之JMeter参数化_第5张图片
06-性能测试之JMeter参数化_第6张图片
06-性能测试之JMeter参数化_第7张图片
可以看到3个登录请求,分别使用了文件中的不同用户名;

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

(1)右键线程组,添加配置元件 ——> CSV Data Set Config
06-性能测试之JMeter参数化_第8张图片

  • 文件名:保存参数化的文件;
  • 文件编码:要和文件的编码格式保持一致;
  • 变量名称:对应参数文件每列的变量名,类似Excel文件的文件头,起到标示的作用,同事也是后续引用的标识符,建议采用有意义的英文标示;(有几列参数,这里就写几个参数名,每个名称中间用英文逗号分隔,这里的user、pwd就可以在其它地方调用了 user u s e r 、 {pwd})
  • 忽略首行:我们参数化文件,第一行是测试数据,即不需要忽略首行,所以选择false
  • 分隔符:与参数文件保持一致即可,参数文件使用逗号,我们这里就填逗号,参数文件使用tab,这里就使用\t符号
  • 是否允许带引号:是否允许cvs数据被引号包裹,我们选择false
  • 遇到文件结束符再次循环?:这里选择True,什么意思呢?假如我们有3行数据,但是有4个线程,第4个线程会继续使用第一行数据循环登录
  • 遇到文件结束符停止线程?:这里选择False,不结束
  • 线程共享模式:4种模式,所有线程,当前线程组,当前线程,自定义

(2)替换脚本

  • 这次我们修改为4个线程
  • 修改登录请求参数
    06-性能测试之JMeter参数化_第9张图片

(3)查看运行结果
06-性能测试之JMeter参数化_第10张图片
当3行数据被用完时,循环从第一条读取,所以admin这个用户使用了两次。

4、配置元件——User Defined Variables

(1)点击线程组,添加配置元件——User Defined Variables
06-性能测试之JMeter参数化_第11张图片
如上图所示,在该参数组中已经定义了两个参数,通过界面下方的添加、删除按钮可以向参数列表增加和删除参数,Up和Down可以上下移动参数的位置;

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

(2)修改脚本

  • 线程数修改为1
  • 登录参数修改为如下图所示
    06-性能测试之JMeter参数化_第12张图片

(3)查看执行结果
06-性能测试之JMeter参数化_第13张图片

5、前置处理器——User Variables

(1)邮件线程组,添加前置处理器——User Variables
06-性能测试之JMeter参数化_第14张图片

小结

  • JMeter支持多种形式的参数化。请根据实际情况选择合适的参数化方法。
  • 为什么要进行参数化,最主要的原因就是不参数化,脚本回放不成功,哈哈(比如你录制一个注册用户的脚本,由于登录名不能重复,如果不参数化,回放或者压测必然会失败)

你可能感兴趣的:(性能测试,性能测试)