• Jmeter参数化设置的5种方法


    一. 用Jmeter中的函数获取参数值,__Random,__threadNum,__CSVRead,__StringFromFile,具体调用方法如下:

    ${__Random(,,)},$,${__CSVRead(,)},${__StringFromFile(,,,)}。

    参看Jmeter函数的使用,通过菜单“选项”->“函数助手对话框”,即可在“函数助手”弹出框上找到Jmeter的函数。

    其中${__Random(,,)}方法的第一个参数为随机数的下限,第二个参数为随机数的上限,第三个参数为储存随机数的变量名;${__CSVRead(,)}方法中第一个参数是文件名,第二个参数是文件中的列(列数从0开始);${__StringFromFile(,,,)}方法中第一个参数是文件名,${__StringFromFile(,,,)}方法中没有指定读取文件中的哪一列的参数,所以${__StringFromFile(,,,)}只能读取包含一列的文件。

    二.用户定义的变量

    2.1 添加“配置元件”->“用户定义的变量”

    2.2 “名称”中输入变量名称,此处以登录为例,定义两个变量username和password。“值”中可以直接输入值,也可以通过Jmeter的函数__CSVRead,__StringFromFile从csv或dat文件中读取,还可以通过前缀加随机数的方法设置参数。

    当参数值是某个前缀加一个数字时,可以用前缀名加${__Random(,,)}或$的方法设置参数值。如进行登录测试之前,先准备了用户名为perf_0到perf_1000的用户,那么用户名就可以设为perf_{__Random(0,1000,)}。

    当参数值没有规律的且量不太大时,可以通过${__CSVRead(,)},${__StringFromFile(,,,)}从文件中读取,如将用户名和密码保存在user.csv文件中,user.csv的内容如下:

    oriana,123456

    admin,admin

    dandan,123456

    因为user.csv文件中有两列数据,所以只能用${__CSVRead(,)}函数,username参数后的值设为${__CSVRead(user.csv,0)},password参数后的值设为${__CSVRead(user.csv,1)}。

    三. 从csv文件中读取(用Csv Data配置元件来进行参数化)

    当参数的值没有规律且量不太大时,可以用这种方法。

    具体做法如下:

    1、打开jmeter图形界面工具,打开之前的脚本。

    2、右键【添加】-【配置元件】-【Csv Data Set Config】

    3、这个配置元件可以允许从你输入的路径来读取文件,然后根据分隔符获取到数据。

    4、如下图,输入的数据。

    讲解:

    a,名称和注释不需要过多解释,自己定义。

    b,Filename:参数化文件的读取位置。这个路径可以是绝对路径也是可以相对路径。在分布式测试中,还是利用相对路径比较方便,因为有的机器可能安装路径不一样。

    c,File Encoding:编码格式,选择utf-8

    d,Variable Names:变量名称。这里定义的变量名称,后面就可以直接用来引用了。(多个变量名称以逗号隔开。例如username,passwd。参数化文件中同样有对应的两列数据。)

    e,Ignore first line:忽略第一行数据。(类似loadrunner中第一行数据是变量名称,如果你的配置文件中为了记忆第一行也是变量名,可以选择是忽略这行数据)

    f,Delimiter:分隔符,默认逗号。

    g,Allow quoted data:是非选项,是否允许变量中间有分隔符,这里最好先默认false,数据中间最好不要有分隔符。

    h,Recycle on EOF和Stop thread on EOF按需设置。是否循环,到结尾是否停止测试。我这里设置了True和False

    i,Sharing mode:先选择所有的线程都可以利用此参数化。

    5、准备测试数据。这里只是简单的写了几个数据来演示效果。

    6、在请求中引用该变量。

    引用方法是 ${}   ;其中{}内写入参数化中的变量。

    注:在parameter中加入一些多余的参数没有问题,故在访问百度的请求后面随意加了一个参数。

    7、修改循环次数。这里设置6次,是因为参数里面有5个数据,测试一下数据取完之后的效果。

    8、点击运行,查看结果树。

    可以看到共发送了6次请求,而且请求参数中已经获取了变量的数据。

    9、打开第二个请求。可以看到第二个请求的参数里面变量值为data-b。

    顺序读取的。

    10、找到最后一个请求,点开查看。

    请求参数中searchid是data-a,说明数据是从头开始取的,也就是数据是遍历后循环的。

    参数化完成了。

    四.从数据库中获取

    当参数的值没有规律且量比较大时,可以选用这种方法。

    具体做法如下:

    4.1 下载MySQL JDBC “http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.12.zip/from/http://ftp.jaist.ac.jp/pub/mysql/”

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

    4.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:连接数据库的密码

    4.4 添加“Sampler”->“JDBC Request”,在SQL Query中输入查询语句,如下:

    SELECT CONCAT (“[",

    GROUP_CONCAT(

    CONCAT("{username:'",login,"'"),

    CONCAT("{password:'",password),"'}"),"]“) AS json FROM users

    4.5 在4.4中的JDBC请求中添加“后置处理器”->“正则表达式提取器”,以提取3.4中的用户名和密码为例设置正则表达式提取器的参数:

    引用名称:user

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

    模板:$1$$2$

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

    五.用正则表达式从前面请求的响应数据中提取,具体操作见Jmeter正则表达式提取器

  • 相关阅读:
    查看gpu和cpu使用情况 linux
    Oracle通过数据文件进行 数据恢复
    LeetCodeJava题解 283. Move Zeroes
    LeetCodeJava题解 844. Backspace String Compare
    LeetCodeJava题解 27. Remove Element
    LeetCodeJava题解 367. Valid Perfect Square
    LeetCodeJava题解 26. Remove Duplicates from Sorted Array
    EasyExcel实现合并一列的多行数据
    编辑qml的工具及插件
    qml学习(Qt Quick)
  • 原文地址:https://www.cnblogs.com/yinrw/p/14293204.html
Copyright © 2020-2023  润新知