Jmeter笔记2:参数化(五种方法)
案例:邮箱登录操作,参数化登录的用户名
方法一、依赖Jmeter自带的函数助手
选项-->函数助手对话框,即可打开函数助手弹窗
(1)比如使用函数_Random
输入最小值、最大值,点击下方的【生成】按钮,即会生成:${__Random(1,5,)}
假如邮箱是163的,则用户名参数的值直接填入:${__Random(1,5,)}@163.com,我测试的邮箱是内网测试用的域名是180chen.cn,则填写${__Random(1,5,)}@180chen.cn
(2)比如使用函数__CSVRead
先准备csv文件,可以先在excel文件里准备好数据,保存的时候格式选择csv格式;
输入csv文件所在的路径:F:\test.csv,输入参数所在的列(注意:此处列数是从0开始数的,第一列是用户名,对应的列号为0,第二列是密码,对应的列号为1...),生成被调用的函数:${__CSVRead(F:\test.csv,0)}
在参数对应的值处填入:${__CSVRead(F:\test.csv,0)}
方法二、CSV Data Set Config
选中取样器,右键:添加-配置元件-CSV Data Set Config,从csv文件中读取
Filename:csv文件所在的路径以及名称如:F:\test.csv ;(其实不一定要csv文件,亲测txt格式的文件也可以)
File encoding:给出页面的编码方式,可以不填写;这里以百度为例,它的源代码里<meta http-equiv="content-type" content="text/html;charset=gb2312"> ,所以这里File encoding:gb2312
Variable Names(comma-delimited):给出变量名如:name,pwd;这里的变量名是给后面引用用的,如要用到这个文件的值,可以利用变量名来引用:${name},${pwd},如test.csv文件中有这样的数据:1@180chen.cn,abc1233,那${name}就可以引用到1@180chen.cn,${pwd}就可以引用到abc1233
Delimiter(use '\t' for Tab):这个是用来隔开变量的分隔符,如上面的name,pwd,那分隔符就是“,”
Allow quoted data?:是否允许引用数据,---这个目前还未弄明白,设置成True或者False都能正常引用数据。
Recycle on EOF?:到了文件尾是否循环,True---继续从文件第一行开始读取,False---不再循环
Stop thread on EOF?:到了文件尾是否停止线程,True---停止,False---不停止,注:当Recycle on EOF设置为True时,此项设置无效。
Sharing mode:共享模式,All threads---所有线程,Current thread group—当前线程组,Current thread—当前线程。这个地方和LoadRunner中的迭代取之相反,经试验得出来的结果是:
All threads:测试计划中所有线程,假如说有线程1到线程n (n>1),线程1取了一次值后,线程2取值时,取到的是csv文件中的下一行,即与线程1取的不是同一行。
Current thread group:当前线程组,假设有线程组A、线程组B,A组内有线程A1到线程An,线程组B内有线程B1到线程Bn。取之情况是:线程A1取到了第1行,线程A2取第2行,现在B1取第1行,线程B2取第2行。
Current thread:当前线程。假设测试计划内有线程1到线程n (n>1),则线程1取了第1行,线程2也取第1行。
综上:CSV Data Set Config实现的功能跟之前用的:${__CSVRead(F:\test.csv,0)}这个函数实现的功能大体上是一样的。
方法三、用户定义的变量
选中取样器,右键:添加-配置原件-用户定义的变量
在列表中填入名称和值,在别处就可以使用${name}、${pwd}来引用
方法四、正则表达式提取器获取
在打开登录页的时候服务器有返回一个sid,获取到sid后,然后登录进入到首页;所以在这个请求下添加后置处理器:右键-添加-后置处理器-正则表达式提取器
第1部分:名称+注释,可不修改,只是为了方便自己识别
第2部分:apply to 默认即可
第3部分:要检查的字段:主体等选择,一般我们选择主体,即服务器返回给我们的页面主体信息
第4部分:
【引用名称】:就是参数名称,在别处引用;如输入mysid,别处引用的时候使用${mysid}
【正则表达式】:表达式中()内的内容就是要提取的。如sid/(.*?)",表示查找sid/字符串之后的内容,直到出现第一个"时结束;(注意括号里的表示提取的内容)
【模板】:用$$引用起来,如果在正则表达式中有多个正则表达式(多个括号括起来的东东),则可以是$1$(表示只有一组数据),$2$等等,表示解析到的第1个、第2个值给mysid
【匹配数字】:0代表随机取值,-1代表所有,1代表全部取值
【缺省值】:如果参数没有取到值,则使用此处的缺省值
注意:运行脚本后,在“察看结果树”监听器中,[响应数据]标签页先搜索sid出现的位置,及出现的规律,如出现的时候前面会有“sid/”字符串; 调试正则提取表达式的时候,可添加Debug Sampler来查看是否正确提取到对应的值(右键-添加-Sampler-Debug Sampler)
方法五、从数据库获取
1) 将其中的mysql-connector-java-5.1.34-bin.jar放到Jmeter的lib目录下
2) 添加“配置元件”->“JDBC Connection Configuration”,设置下列参数:
Variable Name:连接池名称
Database URL:jdbc:mysql://host:port/db(jdbc:mysql://ip地址:端口号/数据库名称)
JDBC Driver class:com.mysql.jdbc.Driver
username:连接数据库的用户名(如root)
password:连接数据库的密码
3) 添加“Sampler”->“JDBC Request”,在SQL Query中输入查询语句,如下:
select concat(domain,'+',po_pwd) as userpass from domain;
Variable Name:连接池名称
注意:该值要和JDBC Connection Configuration中配置的Variable Name值对应,否则会提示:No pool found named: 'pool12', ensure Variable Name matches Variable Name of JDBC Connection Configuration;
4) 在JDBC请求中添加“后置处理器”->“正则表达式提取器”,以提取用户名、密码为例,设置正则表达式提取器的参数:
引用名称:userPass
正则表达式:(.*)\+(.*)
模板:$1$$2$
使用时,userPass_g1即为用户名,userPass_g2即为对应用户名的密码;
注意:
(1)+在正则表达式中是关键字,所以需要\转义。
(2)匹配数字,填0或不填,表示随机读取,如果填正整数,如1,则不同虚拟用户或循环固定读取某行数据。
Jmeter笔记2:参数化(五种方法)的更多相关文章
- Android之数据存储的五种方法
1.Android数据存储的五种方法 (1)SharedPreferences数据存储 详情介绍:http://www.cnblogs.com/zhangmiao14/p/6201900.html 优 ...
- Java 字符串拼接 五种方法的性能比较分析 从执行100次到90万次
[请尊重原创版权,如需引用,请注明来源及地址] > 字符串拼接一般使用“+”,但是“+”不能满足大批量数据的处理,Java中有以下五种方法处理字符串拼接,各有优缺点,程序开发应选择合适的方法实现 ...
- js去掉字符串前后空格的五种方法
转载 :http://www.2cto.com/kf/201204/125943.html 第一种:循环检查替换[javascript]//供使用者调用 function trim(s){ ret ...
- EntityFramework嵌套查询的五种方法
这样的双where的语句应该怎么写呢: var test=MyList.Where(a => a.Flows.Where(b => b.CurrentUser == “”) 下面我就说说这 ...
- 实现sticky footer的五种方法
2017-04-19 16:24:48 什么是sticky footer 如果页面内容不够长的时候,页脚块粘贴在视窗底部:如果内容足够长时,页脚块会被内容向下推送. 用position实现? 如果是用 ...
- linux 清空catalina.out日志 不需要重启tomcat(五种方法)【转】
1.重定向方法清空文件 [root@localhost logs]# du -h catalina.out 查看文件大小17M catalina.out[root@localhost logs] ...
- C#中得到程序当前工作目录和执行目录的五种方法
string str="";str += "\r\n" + System.Diagnostics.Process.GetCurrentProcess().Mai ...
- 【转】这五种方法前四种方法只支持IE浏览器,最后一个方法支持当前主流的浏览器(火狐,IE,Chrome,Opera,Safari)
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- HTML实现页面自动跳转的五种方法
下面列了五个例子来详细说明,这几个例子的主要功能是:在5秒后,自动跳转到同目录下的hello.html(根据自己需要自行修改)文件. 1)html的实现 复制代码 代码如下: <head> ...
- centos7防暴力破解五种方法
什么是暴力破解,简单来说就是对一个服务器进行无数次尝试登陆,并用不同的密码进行登陆直到可以登陆成功.暴力破解的基本步骤可以分为以下几步: 1. 找到对应的linux服务器 Ip地址 2.扫描端口 ...
随机推荐
- ylbtech-Recode(记录)-数据库设计
ylbtech-dbs:ylbtech-Recode(记录)-数据库设计 -- =============================================-- DatabaseName ...
- bootstrap-导航、选项卡
导航: <!-- nav 导航的基础样式 --> <div class="container"> <div class="row" ...
- oracle游标循环的嵌套
完成批量修改user_tables中的所有表的栏位名(从MS SQL导入过来,发现大小写问题,造成很多麻烦) 存储过程见下: -- Created on 2012/3/14 by FREE decla ...
- 华为ICDcomm接口js测试
1)获取坐席状态接口调用方法: “方法”------“坐席与班组” 中的 Phone.QueryAgentStatusEx(工号)如果该方法调用成功,那么坐席状态将会存入到属性: Phone.Agen ...
- Perl中文/unicode/utf8/GB2312之间的转换
参考:http://daimajishu.iteye.com/blog/959239不过具测试,也有错误:原文如下: # author: jiangyujieuse utf8; ##在最后一个例子, ...
- java 、android 知识图谱
java知识图谱: android知识图谱: 照此图练习,神功自成.....
- 手机端的各种默认样式比如 ios的按钮变灰色
1.ios按钮变灰色,给按钮加样式: -webkit-appearance: none; 2.有圆角话 ; } 3.去除Chrome等浏览器文本框默认发光边框 input:focus, textare ...
- Selenium 疑问之二:如何使页面滚动条移动到指定元素element的位置处?
在用selenium做测试时,会遇到需要操作的元素不在当前可视页面中的情况,如果是手工测试,自然很简单,手动拖拽滚动条到目标元素处即可. 那么,selenium如何实现这种情形呢?答案是需要借助Jav ...
- Linux平台块设备到字符设备(裸设备)的三种映射方式(转载)
在Linux平台oracle rac的组建过程中,如果使用ASM+RAW的存储方式的话,由于asm不支持块设备,支持持字符访问设备,所以需要配置将Block Device Drive转变成Charac ...
- Flask框架学习笔记(API接口管理平台 V1.0)
今天博主终于完成了API接口管理平台,最后差的就是数据库的维护, 博主这里介绍下平台的设计原理,首先基于python,利用flask的web框架+bootstrap前端框架完成,先阶段完成了前台展示页 ...