是否需要通过JMeter记录的请求标头中的所有值?

时间:2016-04-06 07:33:55

标签: jmeter

我正在通过JMeter录像机录制测试场景(没有HTTP头管理器),我注意到,例如,我有一个采样器,其中包含头部值local:81/web/eprocess/login.aspx。我甚至不再使用该端口,并且URL中的另一部分不再相同。无论如何,我的脚本似乎无论如何都有效。这怎么可能?

接下来,我添加了一个HTTP标头管理器,并将大多数标头中存在的一些值添加到Header Manager。然后,我评论了所有默认标头,并且脚本似乎再次起作用(无论默认标头是否发送HTTP标头管理器中不存在的值 - 脚本仍然有效 - 如何?

我的主要问题是:使用主机,端口甚至标头中的其他信息来创建长期可用脚本的好方法是什么?

最好是保留标头,无论它们是否包含不正确的信息(不同的端口不同的应用程序特定的东西,如文档ID任务ID等)或创建HTTP标头管理器并删除包含某些采样器的一些UNIQUE的所有其他标头值(但仍然可以在不发送这些值的情况下工作)。这是HTTP标头管理器的附件:

enter image description here

有一个随机标题可以正常工作,不管我甚至不再使用这个特定的端口,而且= 2860的数字现在大约是5000,但仍然有效。

其他值与Header Manager值不匹配,如果我对此标题发表评论,无论Header Manager是否包含这些值,它仍然有效。

1 个答案:

答案 0 :(得分:2)

如果您不知道删除任何标头是否会改变应用程序行为,那么最好保留JMeter记录的所有标头。但是,更好的方法(如果可能的话)是与那些知道其中哪些重要的人一起审查标题,并且仅保留有意义的标题。通常涉及3个问题:哪些标头负载均衡器(如果存在)用于处理请求,然后Web服务器使用哪些标头,最后Web应用程序本身是否关心任何标头。

但无论您选择哪种方法,都不要让标题包含错误的值。请改用变量/动态值。

例如对于Referer(如果您知道需要它或者您不确定,如果使用它)将其指定为${siteUrl}/web/eprocess/<...>,并将${siteUrl}定义为静态脚本变量(如果它在执行测试期间永远不会改变),或者可以来自前一个请求的动态值,例如。

从您拥有的其他标题中,最重要的是:

  • 所有三个Accept *标题几乎都是重要的,
  • “内容类型”也是如此。

即使他们没有明显改变行为,他们通常会为Web服务器和Web应用程序做。其他人可以采取任何一种方式:

  • X- *是自定义标题,可能对您的应用程序有用,也可能不重要(但您应该真的向开发人员询问)
  • Referer在许多情况下并不重要,但sometimes it is
  • “用户代理”可能重要,也可能不重要。例如,某些Web应用程序不允许没有User-agent的请求;其他人会根据用户代理内部的价值改变他们的行为,比如,当他们发现你在Windows与Mac上时。
  • 缓存控制可能重要,也可能不重要,请参阅this