用Jmeter测试时包含两种情况的参数,一种是在url中,一种是请求中需要发送的参数。 URL中的参数,如:http:blog。dafang。comindex。php20100601jmeter参数,其中“20100601jmeter参数”为url参数。 请求中的参数,此处只能举例get请求,如:http:blog。dafang。com?categoryWeb,其中“category”是参数名,“Web”是它的值。 对于post请求,用jmeter录制后,可以在请求的“同请求一起发送参数”和“同请求一起发送文件”中找到。 参数化Jmeter脚本时,使用参数的地方书写格式为{参数名} 对于URL“http:blog。dafang。comindex。php20100601jmeter参数”,在Jmeter的http请求中blog。dafang。com填写在“服务器名称或IP”中;index。php{urlparameter}填写在“路径”中。 对于请求中的参数http:blog。dafang。com?categoryWeb,在Jmeter的http请求中blog。dafang。com填写在“服务器名称或IP”中;填写在“路径”中;参数名称category填写在“同请求一起发送参数”的“名称”中,参数值{categoryname}填写在对应的“值”中。 设置参数值的方法有如下几种: 1。用Jmeter中的函数获取参数值,Random,threadNum,CSVRead,StringFromFile,具体调用方法如下: {Random(,,)},{threadNum},{CSVRead(,)},{StringFromFile(,,,)}。 参看Jmeter函数的使用,通过菜单“选项”“函数助手对话框”,即可在“函数助手”弹出框上找到Jmeter的函数。 其中{Random(,,)}方法的第一个参数为随机数的下限,第二个参数为随机数的上限,第三个参数为储存随机数的变量名;{CSVRead(,)}方法中第一个参数是文件名,第二个参数是文件中的列(列数从0开始);{StringFromFile(,,,)}方法中第一个参数是文件名,{StringFromFile(,,,)}方法中没有指定读取文件中的哪一列的参数,所以{StringFromFile(,,,)}只能读取包含一列的文件。 2。用户定义的变量 2。1添加“配置元件”“用户定义的变量” 2。2“名称”中输入变量名称,此处以登录为例,定义两个变量username和password。“值”中可以直接输入值,也可以通过Jmeter的函数CSVRead,StringFromFile从csv或dat文件中读取,还可以通过前缀加随机数的方法设置参数。 当参数值是某个前缀加一个数字时,可以用前缀名加{Random(,,)}或{threadNum}的方法设置参数值。如进行登录测试之前,先准备了用户名为perf0到perf1000的用户,那么用户名就可以设为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在测试计划或线程组中添加一个“配置元件”“CSVDataSetConfig” 3。3Filename中填写步骤2。1中csv文件的完整路径(当csv文件在bin目录下时,只需给出文件名即可) 3。4VirableNames中填写变量名,如果csv文件中有多个变量,则用逗号隔开 4。从数据库中获取 当参数的值没有规律且量比较大时,可以选用这种方法。 具体做法如下: 4。1下载MySQLJDBC“http:dev。mysql。comgetDownloa。。。st。ac。jppubmysql” 4。2解压下载的zip包后,将其中的mysqlconnectorjava5。1。12bin。jar放到Jmeter的lib目录下 4。3添加“配置元件”“JDBCConnectionConfiguration”,设置下列参数: DatabaseURL:jdbc:mysql:host:portdb(如jdbc:mysql:localhost:3306testlink JDBCDriverclass:com。mysql。jdbc。Driver username:连接数据库的用户名(如root) password:连接数据库的密码 4。4添加“Sampler”“JDBCRequest”,在SQLQuery中输入查询语句,如下: SELECTCONCAT(“〔, GROUPCONCAT( CONCAT({username:,login,), CONCAT({password:,password),}),〕“)ASjsonFROMusers 4。5在4。4中的JDBC请求中添加“后置处理器”“正则表达式提取器”,以提取3。4中的用户名和密码为例设置正则表达式提取器的参数: 引用名称:user 正则表达式:username:’(。?)’{password:’(。?)’ 模板:12 使用时,userg1即为用户名,userg2即为对应用户名的密码;更多正则表达式提取方法参见Jmeter正则表达式提取器 5。用正则表达式从前面请求的响应数据中提取,具体操作见Jmeter正则表达式提取器