一、几种HTTP属性管理器
1.HTTP Cookie Manager
功能:用来存储浏览器产生的用户信息
如果Sampler范围内有多个Cookie Manager,则目前无法指定要使用哪个Cookie Manager。此外,存储在一个cookie管理器中的cookie不可用于任何其他管理器,因此请谨慎使用多个Cookie管理器。
Clear cookie each iteration?(每次迭代时清除自己会话区域的所有cookie);
Implementation:实现方式;
Cookie Policy:cookie的管理策略,建议选择compatibility,兼容性强;
PS:对于JMeter来说,一个test plan只能有一个cookie管理器。因为当多个magager存在时,JMeter没有方法来指定使用那个manager;同时,一个cookie manager中的存储的cookie也不能被其他cookie manager所引用,所以同一个计划中不建议使用多个cookie manager;如果你想让JMeter的cookie manager支持跨域, 修改JMeter.property :CookieManager.check.cookies=false;
HTTP cookie Manager管理cookie有两种方法:
①、它可以像浏览器一样存储和发送cookie,如果发送一个带cookie的http请求,cookie manager会自动存储该请求的cookies,并且后面如果发送同源站点的http请求时,都可以用这个cookies;每个线程都有自己的“cookie存储区域”,所以当测试一个使用cookie来管理session信息的web站点时,每个JMeter线程都有自己的session;
PS:以这种自动收集的方式收集到的cookie不会在cookie manager中进行展示,但是运行后通过查看结果树可以查看到cookie信息,接受到的cookie会被自动存储在线程变量中,但是从Jmeter2.3.2版本后,默认不再存储,如果你想要manager自动存储收集到 的cookie,你需要修改JMeter.property:CookieManager.save.cookies=true;存储的时候,cookie的key会以“COOKIE_”为前缀命名(默认情况),如果你想自定义这个前缀,修改JMeter.property:CookieManager.name.prefix= ;
②、除了上面说的自动收集,还可以手动添加cookie,点击界面下方的Add按钮,然后输入cookie的相关信息;
PS:一般不建议手动添加,可以将cookie通过浏览器插件(比如Firefox的firebug)导出cookie,然后点击界面下方的load按钮,载入刚才导出的cookie文件即可。
关于Cookie:
cookie一般分为2种:持久cookie(Permanent cookie)和会话cookie(Session cookie):
持久cookie:保存在客户端本地硬盘上,在浏览器被关闭后仍然存在;
会话cookie:通常保存在浏览器进程的会话中,一旦浏览器会话结束或关闭,cookie就不再存在。
二、HTTP Cache Manager 缓存管理器(模拟浏览器行为)
三、HTTP Header Manager 信息头管理
通常Jmeter向服务器发送http请求的时候,后端需要一些验证信息,比如说web服务器需要带过去cookie给服务器进行验证,一般就是放在请求头(header)中,或者请求传参需要定义参数格式等;因此对于此类请求,在Jmeter中可以通过HTTP信息头管理器,在添加http请求之前,添加一个HTTP信息头管理器,发请求头中的数据通过键值对的形式放到HTTP信息头管理器中,在往后端请求的时候就可以模拟web携带header信息。
PS:可以点击添加、删除按钮等来新增和删减信息头的数据,也可通过载入按钮来将信息头数据加载进去(信息头数据较多时推荐使用)
四、HTTP Request Defaults (请求默认值)
基本信息,默认http请求的值,如server、ip、port、Protocol甚至path、parameters,都可以设置
下面新增的http请求,只需要填写请求的关键数据即可,如path、parameters
注:请求默认值中可以设置代理服务器!设置成功之后可以用fidder或者其它的抓包工具反向抓取jmeter的请求!
服务器请求或IP:请求发送的目标服务器名称或地址;
端口:目标服务器的端口号,默认80;
协议:箱目标服务器发送请求所采用的协议,HTTP或HTTPS,默认HTTP;
Content encoding :内容的编码方式,默认值为iso8859;
路径:目标URL路径(不包括服务器地址和端口);
同请求一起发送参数 : 对于带参数的URL ,jmeter提供了一个简单的对参数化的方法:用户可以将URL中所有参数设置在本表中,表中的每一行是一个参数值对;
从HTML文件获取所有有内含的资源:该选项被选中时,jmeter在发出HTTP请求并获得响应的HTML文件内容后,还对该HTML进行Parse 并获取HTML中包含的
所有资源(图片、flash等),默认不选中;如果用户只希望获取页面中的特定资源,可以在下方的Embedded URLs must match 文本框中填入需要下载的特定资源表达式,
这样,只有能匹配指定正则表达式的URL指向资源会被下载。
注意事项:
①、一个测试计划中可以有多个Defaults组件,多个Defaults组件的默认值会叠加;
②、两个default中都定义的"Server Name or IP",显示在发送请求时只能使用一个
五、HTTP授权管理器
该属性管理器用于设置自动对一些需要NTLM验证的页面进行认证和登录。如下图:监控tomcat
二、常用配置元件补充
1.JDBC Connection Configuration (数据库配置元件)
Variable Name for created pool
数据库连接池的名称,因为一个测试计划可以有多个JDBC Connection Configuration,每个可以取不同的名称。在jdbc request中通过这个名称选择合适的连接池进行使用。
Connection Pool Connetion:连接池参数配置,基本保持默认,根据需要进行修改;
Max Number of Connections: 最大连接数;如果做性能时,建议填0,如果默认为10,最大只能连接10个线程;
Max Wait(ms):最大等待时间,单位毫秒;
Time Between Eviction Runs(ms):有空闲的线程数,释放不使用的线程;
Auto Commit:自动提交,默认为true,如修改数据库时,自动commit;
Transaction isolation:事务隔离(默认);
Connection Validation by pool:验证连接池;
Test While idle:
Soft Min Evictable Idle Time(ms):
Validation Query:
Database Connection Configuration:数据库连接配置:
Database URL:数据库连接url;jdbc:mysql://localhost:3306/dbname,ipaddr:3306
JDBC Driver class:数据库驱动;com.mysql.jdbc.Driver
Username:用户
Password:密码
附上一些常用的,没用到的数据库连接配置(详情见官网:http://jmeter.apache.org/usermanual/component_reference.html#JDBC_Connection_Configuration):
MySQL
Driver class
com.mysql.jdbc.Driver
Database URL
jdbc:mysql://host[:port]/dbname
PostgreSQL
Driver class
org.postgresql.Driver
Database URL
jdbc:postgresql:{dbname}
Oracle
Driver class
oracle.jdbc.OracleDriver
Database URL
jdbc:oracle:thin:@//host:port/service OR jdbc:oracle:thin:@(description=(address=(host={mc-name})(protocol=tcp)(port={port-no}))(connect_data=(sid={sid})))
Microsoft SQL Server (MS JDBC driver)
Driver class
com.microsoft.sqlserver.jdbc.SQLServerDriver
Database URL
jdbc:sqlserver://host:port;DatabaseName=dbname
2.CSV Data Set Config (参数化)
下面是参数化过程:
跨线程传参
文章参考:
http://jmeter.apache.org/usermanual/component_reference.html#HTTP_Cookie_Manager