Jmeter 全程实战(五)参数化

一、参数化简介

为什么需要参数化?

例如录制脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统。这个时候就需要对用户名和密码进行参数化,使每个虚拟用户都使用不同的用户名和密码进行访问。

二、参数化的几种方式

注:引用变量使用 ${变量名}

2.1 前置处理器->用户参数

添加:线程组->添加->前置处理器->用户参数

注:还可以添加多个用户来设置不同的参数,并在线程组中设置多个“线程数”循环来发起请求

2.2 前置处理器->正则表达式用户参数

2.3 配置与案件->用户定义的变量

添加:线程组->添加->配置元件->用户定义的变量,添加变量名以及对应值;

2.4 正则表达式提取

2.5 函数助手

  1. 新建user.csv文件,写入id、用户名和密码

  1. 点击菜单栏“工具”-->函数助手对话框,看下图: CSV文件列号是从0开始的,第一列0、第二列1、第三列2、依次类推。若要使用相对路径,可直接将文件放在 bin 目录下

  1. 复制生成的参数化函数,修改函数中对应的参数化字段列号即可

2.6 配置元件->CSV 数据文件设置(CSV Data Set Config)-- 推荐使用

  1. 使用方法

(1)新建csv文件,和函数助手一致

(2)线程组->添加->配置元件->CSV Data Set Config

(3)在请求中使用 ${变量名} 获取变量

  1. CSV 数文件设置说明:
  • Delimiter:如文件中使用的是逗号分隔,则填写逗号;如使用的是TAB,则填写\t;(如果此文本文件为CSV格式的,默认用英文逗号分隔)

  • Recycle on EOF? :到了文件尾处,是否循环读取参数,True=当读取文件到结尾时,再重头读取文件;False=当读取文件到结尾时,停止读取文件

  • Stop thread on EOF? :到了文件尾处,是否停止线程,当Recycle on EOF为False时,当读取文件到结尾时,停止进程,当Recycle on EOF为True时,此项无意义

当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次请求错误

2.7 从数据库获取

从数据库中获取当参数的值没有规律且量比较大时,可以选用这种方法。例,从Mysql 中获取数据

  1. 下载MySQL Connector JDBC :https://dev.mysql.com/downloads/connector/odbc/

  2. 解压下载的zip包后,将其中的 mysql-connector-java-5.1.39-bin.jar 放到Jmeter的lib目录下

  3. 添加“配置元件”->“JDBC Connection Configuration”,设置下列参数:

  • Database URL:jdbc:mysql://host:port/db(如jdbc:mysql://localhost:3306/testlink)

  • JDBC Driver class:com.mysql.jdbc.Driver

  • username:连接数据库的用户名(如root)

  • password:连接数据库的密码

  1. 添加“Sampler”->“JDBC Request”,在SQL Query中输入查询语句,CONCAT()函数

  2. 可以在JDBC请求中添加“后置处理器”->“正则表达式提取器”,以提取参数:

  • 引用名称:user_id

  • 正则表达式:username:’(.+?)’{password:’(.+?)’

  • 模板:$1$$2$

使用时,user_g1即为用户名,user_g2即为对应用户名的密码;更多正则表达式提取方法参见Jmeter正则表达式提取器

2.8 随机函数Random

posted @ 2020-10-18 21:18  芒果日记  阅读(88)  评论(0编辑  收藏  举报