zoukankan      html  css  js  c++  java
  • Jmeter参数化的4种方法


    用Jmeter测试时包含两种情况的参数,一种是在url中,一种是请求中需要发送的参数。

    URL中的参数,如:http://blog.da-fang.com/index.php/2010/06/01/jmeter参数/,其中“2010/06/01/jmeter参数”为url参数。
    请求中的参数,此处只能举例get请求,如:http://blog.da-fang.com/?category=Web,其中“category”是参数名,“Web”是它的值。
                                  对于post请求,用jmeter录制后,可以在请求的“同请求一起发送参数”和“同请求一起发送文件”中找到。

    参数化Jmeter脚本时,使用参数的地方书写格式为$
    对于URL“http://blog.da-fang.com/index.php/2010/06/01/jmeter参数/”,在Jmeter的http请求中blog.da-fang.com填写在“服务器名称或IP”中;/index.php/$/填写在“路径”中。
    对于请求中的参数http://blog.da-fang.com/?category=Web,在Jmeter的http请求中blog.da-fang.com填写在“服务器名称或IP”中;/填写在“路径”中;参数名称category填写在“同请求一起发送参数”的“名称”中,参数值$填写在对应的“值”中。

    设置参数值的方法有如下几种:

    1. 用Jmeter中的函数获取参数值,__Random,__threadNum,__CSVRead,__StringFromFile,具体调用方法如下:
    ${__Random(,,)},$,${__CSVRead(,)},${__StringFromFile(,,,)}。
    参看Jmeter函数的使用,通过菜单“选项”->“函数助手对话框”,即可在“函数助手”弹出框上找到Jmeter的函数。
    其中${__Random(,,)}方法的第一个参数为随机数的下限,第二个参数为随机数的上限,第三个参数为储存随机数的变量名;${__CSVRead(,)}方法中第一个参数是文件名,第二个参数是文件中的列(列数从0开始);${__StringFromFile(,,,)}方法中第一个参数是文件名,${__StringFromFile(,,,)}方法中没有指定读取文件中的哪一列的参数,所以${__StringFromFile(,,,)}只能读取包含一列的文件。

    2.用户定义的变量
       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)}。

    3. 从csv文件中读取
    当参数的值没有规律且量不太大时,可以用这种方法。
    具体做法如下:
        3.1 创建一个csv文件,内容为参数的值集,每一个参数占一列,第一行就开始写参数值,不要写参数名
        3.2 在测试计划或线程组中添加一个“配置元件”->“CSV Data Set Config”
        3.3 Filename中填写步骤2.1中csv文件的完整路径(当csv文件在bin目录下时,只需给出文件名即可)
        3.4 Virable Names中填写变量名,如果csv文件中有多个变量,则用逗号隔开
    4.从数据库中获取
    当参数的值没有规律且量比较大时,可以选用这种方法。
    具体做法如下:
        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正则表达式提取器

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





  • 相关阅读:
    解决SharePoint 文档库itemadded eventhandler导致的上传完成后,编辑页面保持报错的问题,错误信息为“该文档已经被编辑过 the file has been modified by...”
    解决SharePoint 2013 designer workflow 在发布的报错“负载平衡没有设置”The workflow files were saved but cannot be run.
    随机实例,随机值
    Spring4笔记
    struts2笔记(3)
    struts2笔记(2)
    获取文本的编码类型(from logparse)
    FileUtil(from logparser)
    DateUtil(SimpleDateFormat)
    struts2笔记
  • 原文地址:https://www.cnblogs.com/jgig11/p/4612852.html
Copyright © 2011-2022 走看看