不管是在使用jmeter进行性能测试还是接口自动化测试时经常用到各种管理器进行对参数的处理,但是有时候分不清几种管理器的具体用法,所以做个笔记,列一下吧(所列内容基于版本为3.2)
主要内容包含以下:
1、HTTP Requests Defaults(HTTP默认请求值)
2、HTTP Authorization Manager (HTTP授权管理器)
3、HTTP Cache Manager(HTTP Cache管理器)
4、HTTP cookie Manager(HTTP cookie管理器)
5、HTTP header Manager(HTTP 信息头管理器)
现在对以上5中管理器的功用进行解释说明:
1、HTTP Requests Defaults(HTTP默认请求值)
主要作用:对设置其作用范围内的所有的请求有效,其设置的参数会作用于作用范围内所有的请求。
参数作用说明如下:
名称:*设置,不影响实际的测试结果,最好具有标题的意义。
web服务器:
协议(Protocol):表示向服务端发送的请求的协议,默认为HTTP,用的较多的是HTTP和HTTPS,可以根据实际情况进行*填写;
服务器名称或IP(Server Name or IP):填写正常测试时所需要请求的地址的域名或者服务端IP,如:www.beidu.com、192.168.0.100;
端口号(Prot Number):填写服务器名称或者IP对应的访问端口,如:80、8080;
HTTP请求:
路径(Path):填写请求地址中公共的除服务器名称或IP或协议的部分,如:地址http://www.laowang.com/path/name/omaiga?中的/path/name/omaiga部分;
Content encoding(编码): 默认为ISO8859,可以设置为gbk,utf-8;
选择parameters后点击“添加”可以增加输入参数值对的输入框,填写默认公共的HTTP请求主体内容,一次只能填写一个,如图;
选择body Data 后显示的是文本框,可以填写多个参数值对,中间用“&”符号连接,如:usernam=andmin&psw=andmin;
该元件所产生的作用域的效果会叠加,如有两个给元件同时有效,则两个元件对http求将随机发挥作用。
2、HTTP Authorization Manager (HTTP授权管理器)
作用:主要用于对一些需要NTLM(全称:NT LAN Manager,是一种安全协议)验证的页面进行认证和登录;
名称:*定义,不参与实际请求过程;
clear auth on each iteration? :每次迭代是否清空凭证,如果每次都清空,则在每次请求的的时候都需要重新进行验证;
基础URL(Base URL):指定需要使用NTLM认证的页面基础URL,当请求此页面是就发送相关的验证信息进行页面验证;
用户名(Username):用于认证和登录的用户名,如图中的andmin;
密码(Password):用于认证和登录的口令;
域(Domain):NTLM使用的域名;
Realm:Realm字串;
Mechanism:暂时不理解,不发表阐述。
关于NTLM:
- 客户端加密密码成为密码散列;
- 客户端向服务端以明文方式发送账号;
- 服务端随机产生并发送给客户端一个16位的数字串,作为令牌;
- 客户端用密码散列加密令牌,然后将加密后的结果发送给服务端;
- 服务端把账号、令牌、4步骤中加密后的结果,一起发送给域控制器;
- 域控制器用账号在SAM密码管理器中找到密码散列并用此去加密令牌;
- 域控制器对比两次加密后的结果,如果一样,则认证成功。
该元件的作用不具有叠加效果。
3、HTTP Cache Manager(HTTP Cache管理器)
作用:用来模拟浏览器的Cache行为;
功效:为Test Pian增加给管理器后,Test Pian运行过程中会使用Last-MOdified(最后一次被修改的时间)、ETag(http内容之一。被请求变量的实体值)、Expired(用于控制请求文件的有效时间)等决定是个从Cache中获取相应的元素;
Clear cache each iteration?:每次迭代是否都清空缓存。如果选中,则在每次请求后都会将对应请求产生的缓存进行清除;
Use Cache-Control/Expires header when processing GET requests:在处理GET请求时使用缓存/过期信息头;
Max Number of elements in cache:缓存中最大的元素数。默认5000.可以根据实际需要进行修改。
4、HTTP cookie Manager(HTTP cookie管理器)
作用:用于管理Test plan运行时的所有的cookie。可以手动存储,也可以自动存储;
每次反复清除cookie?:勾选后将每次请求结束后都会将本次请求产生的cookie进行清除,下次请求时重新获取。
Implementation:履行的协议。
Cookie Policy:cookie的管理策略。建议选择Standard或Standard strict。这种兼容性设计要求是适应尽可能多的不同的服务器,也就是兼容性更好。
前边说到既可以自动存储也可以手动添加cookie,两者的区别如下:
自动存储:自动记录每一个请求所产生的cookie,在后边的同源站点进行请求时都可以使用对应的cookie并发送,它都有自己的存储区域。每一个cookie是完全独立的,即当遇到非同源站点时请求所带的cookie将不一样,其行为与浏览器行为是一致的。
注:这种自动收集cookie不会在cookie manager中进行展示,但是运行后通过查看结果树可以查看到cookie信息,接受到的cookie会被自动存储在线程变量中,在2.3.2版本之后不再存储,如果你想要manager自动存储收集到 的cookie,你需要修改JMeter.property:CookieManager.save.cookies=true;
手动存储:手动添加的cookie具有全局性,会在发送请求时自动附加到所有的请求中,即被所有的请求所共享。手动添加可以采用两种方式,一、一个一个的慢慢添加;二、直接利用浏览器的插件(如火狐的firebug)导出。然后通过load按钮将cookie进行导入。
cookie的分类:分为持久cookie和会话cookie;
持久cookie:持久cookie保存在客户端本地的硬盘中,浏览器关闭后依然存在;
会话cookie:会话cookie保存的浏览器的进程会话中,浏览器关闭后就随之被清除
5、HTTP header Manager(HTTP 信息头管理器)
作用:用于定制Sampler发出的HTTP请求的请求头内容
在请求需要一些验证信息时使用的较多,在http请求之前添加一个信息头管理器,将所需的头信息以键值对的显示添加进去,则在后边的HTTP请求发送时则将使用该管理器中的header信息
首先查看请求的头部信息,如下:
将这些请求头放进信息头管理中,就能使你能够更真实的模拟该接口的访问,将这些放进Jmeter中,可以手动一条一条的添加,也可以通过“加载”按钮将信息导入,添加后效果如图
参考博文:老张:https://www.cnblogs.com/imyalost/p/7062440.html
写的比较浅,欢迎留言补全,谢绝copy