当前位置: 代码迷 >> 综合 >> 【JMeter】HTTP属性管理器
  详细解决方案

【JMeter】HTTP属性管理器

热度:119   发布时间:2023-10-12 06:56:15.0

JMeter不是浏览器,因此其行为并不和浏览器完全一致。这些JMeter提供的HTTP属性管理器用于尽可能模拟浏览器的行为,在HTTP协议层上定制发送给被测应用的HTTP请求。

文章目录

      • 1.HTTP Request Defaults
      • 2.HTTP Authorization Manager
      • 3. HTTP Cache Manager
      • 4. HTTP Cookie Manager
      • 5. HTTP Header Manager

1.HTTP Request Defaults

该组件可以为我们的http请求设置默认的值。假如,我们创建一个测试计划有很多个请求且都是发送到相同的server,这时我们只需添加一个Http request defaults组件并设置“Server Name or IP”,然后添加多个http请求且不设置"server name or ip",这些http请求会默认使用Http request defaults组件设置的值。

一个Test Plan中可以有多个HTTP Request Defaults,处于多个HTTP Request Defaults作用域内的Sampler使用HTTP Request Defaults中设置值的叠加值。
【JMeter】HTTP属性管理器
然后我在这里设置了两个请求默认值:
【JMeter】HTTP属性管理器
【JMeter】HTTP属性管理器
又新建了一个空的HTTP请求,然后点击启动,查看结果树中:
【JMeter】HTTP属性管理器
这说明:

  1. 一个测试计划中可以有多个Defaults组件,多个Defaults组件的默认值会叠加,如上图,虽然两个Defaults
    组件都定义了参数aaa,但发出的请求还是会叠加起来。
  2. 两个default中都定义了服务器名称或IP,显示在发送请求时只能使用一个,这里使用的是第一个default定义的值

2.HTTP Authorization Manager

该属性管理器用于设置自动对一些需要NTLM验证的页面进行认证和登录。NTLM是WinNT早期版本的标准安全协议。
【JMeter】HTTP属性管理器
基础URL:需要使用认证页面的基础URL,如上图,当取样器访问它时,jmeter会使用定义的username和password进行认证和登录;

用户名:用于认证和登录的用户名;

密码:用于认证和登录的口令;

域:身份认证页面的域名;

Realm:Realm字串;

Mechanism:机制;jmeter的http授权管理器目前提供2种认证机制:BASIC_DIGEST和KERBEROS:

  • BASIC_DIGEST:HTTP协议并没有定义相关的安全认证方面的标准,而BASIC_DIGEST是一套基于http服务端的认证机制,保护相关资源避免被非法用户访问,如果你要访问被保护的资源,则必需要提供合法的用户名和密码。它和HTTPS没有任何关系(前者为用户认证机制,后者为信息通道加密)。

  • KERBEROS:一个基于共享秘钥对称加密的安全网络认证系统,其避免了密码在网上传输,将密码作为对称加密的秘钥,通过能否解密来验证用户身份;

3. HTTP Cache Manager

该属性管理器用于模拟浏览器的Cache行为。为Test Plan增加该属性管理器后,Test Plan运行过程中会使用Last-Modified、ETag和Expired等决定是否从Cache中获取相应的元素。

【JMeter】HTTP属性管理器
Clear cache each iteration?(每次迭代清空缓存):如果选择该项,则该属性管理器下的所有Sampler每次执行时都会清除缓存;

Use Cache-Control/Expires header when processing GET requests:在处理GET请求时使用缓存/过期信息头;

Max Number of elements in cache(缓存中的最大元素数):默认数值为5000,当然可以根据需要自行修改;

PS:如果Test Plan中某个Sampler请求的元素是被缓存的元素,则Test Plan在运行过程中会直接从Cache中读取元素,这样得到的返回值就会是空。

在这种情况下,如果为该Sampler设置了断言检查响应体中的指定内容是否存在,该断言就会失败!

为test plan增加该属性管理器后,test plan运行过程中会使用Last-Modified、ETag和Expired等决定是否从Cache中获取对应元素。

  • Cache:一般指的是浏览器的缓存
  • Last-Modified:文件在服务端最后被修改的时间
  • ETag:在HTTP协议规格说明中定义为:被请求变量的实体标记
  • Expired:给出的日期/时间之后;一般结合Last-Modified一起使用,用于控制请求文件的有效时间

这几个控制的解释详细可以参考博客:https://blog.csdn.net/eroswang/article/details/8302191

4. HTTP Cookie Manager

该属性管理器用于管理Test Plan运行时的所有Cookie。HTTP Cookie Manager可以自动储存服务器发送给客户端的所有Cookie,并在发送请求时附加上合适的Cookie。在Cookie manager中看不到自动保存的cookie,我们可以在View Results Tree的Request界面看到被发送的Cookie Data。

同时,用户也可以在HTTP Cookie Manager中手工添加一些Cookie,这些被手工添加的Cookie会在发送请求时被自动附加到请求。

【JMeter】HTTP属性管理器

  • Clear cookie each iteration?(每次迭代时清除自己会话区域的所有cookie);
  • Cookie Policy:cookie的管理策略,建议选择compatibility,兼容性强;

如果在一个测试计划内有多个Cookie Manager ,Jmeter目前无法指定哪个被使用。所以,一个测试计划内最好只有一个cookie manager。并且,一个manager里的 cookie 并不能被其它manager所引用。所以在使用多个Cookie Managers 时要谨慎。同理,上面这个规则同样适用于config element下面的其它manager:

【JMeter】HTTP属性管理器

5. HTTP Header Manager

【JMeter】HTTP属性管理器

通常Jmeter向服务器发送http请求的时候,后端需要一些验证信息,比如说web服务器需要带过去cookie给服务器进行验证,一般就是放在请求头(header)中,或者请求传参,不同的浏览器发出的HTTP请求具有不同的Agent,访问某些有防盗链的页面时需要正确的Refer,需要定义参数格式等;因此对于此类请求,在Jmeter中可以通过HTTP信息头管理器,在添加http请求之前,添加一个HTTP信息头管理器,发请求头中的数据通过键值对的形式放到HTTP信息头管理器中,在往后端请求的时候就可以模拟web携带header信息。

PS:可以点击添加、删除按钮等来新增和删减信息头的数据,也可通过载入按钮来将信息头数据加载进去(信息头数据较多时推荐使用)。

其他JMeter的使用教程在我的另一篇博客中做了整合,传送门:
https://blog.csdn.net/qq_34659777/article/details/85765309

最后总结一下:
如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入:软件测试技术群:593462778,群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。

作者:暗潮汹涌
原创不易,欢迎转载,但未经作者同意请保留此段声明,并在文章页面明显位置给出原文链接。

  相关解决方案