我对 JMeter 有一个奇怪的问题。
我已经录制了某种 Web 应用程序,没有任何问题。播放测试时出现问题。出于某种原因,我在播放期间收到的结果与在录制期间不同。
当我比较录制和播放期间发出的 Http 请求时,我看不到任何区别(除了一些安全令牌,我从早期请求中提取并作为参数传递)。更准确地说,在录制过程中,我收到了一个大主体(> 5kB)的响应,而在播放过程中,响应主体是空的。响应代码为 200(确定)。这个主体包含来自数据库的关键数据,所以我担心这个 JMeter 脚本所做的测量不会反映应用程序的实际行为,根本不会测量我真正需要的东西。
现在我的问题:
- 是否有一些工具或 JMeter 插件可以更有效地查看 HTTP 请求的内容及其响应?如果我可以比较录制和播放期间提出的请求,那就太好了。到目前为止,我使用了两个侦听器:“查看结果树”。我夹在它们之间以比较录制和播放的请求。
- JMeter 中是否有一些已知的错误可以解释这种差异?例如与录制过程有关的东西?
以下是请求示例:
POST http://10.133.27.81:8080/c/portal/render_portlet
POST data:
p_l_id=69210&p_p_id=blank_WAR_Blank_INSTANCE_iNM3&p_p_action=0&p_p_state=normal&p_p_mode=view&p_p_col_id=column-2&p_p_col_pos=1&p_p_col_count=2
[no cookies]
Request Headers:
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Accept-Language: pl
Accept: */*
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
csrf_token: 1GXK-0QD7-GFPJ-JLDG-JP2G-J390-BFLG-7LL7
Pragma: no-cache
Method: POST /c/portal/render_portlet HTTP/1.1
X-Requested-With: OWASP CSRFGuard Project
Referer: http://10.133.27.81:8080/group/bou
Accept-Encoding: gzip, deflate
Content-Length: 143
Host: 10.133.27.81:8080
更新:为了确保哪些标头或参数是恒定的,我在不同的会话期间对相同的测试用例进行了 4 次记录并比较了它们,所以我很确定只需csrf_token
要从其他请求中获取值的字段。我添加了调试采样器以验证是否正确获取了此值。
更新 2:发现问题。
有两个问题:
- 当您进行搜索(Ctrl-F)时,JMeter 中有一个错误,它会搜索整个项目,除了
HTTP Header Menager
s 和我的请求包含csrf_token
在标题中(我在发布此问题之前检测到)。使用文本编辑器在 xml 中进行搜索是一个很好的解决方法。 - 当我试图找到问题的根源时,在我找到第一个问题之前,我通过删除 a 添加了一个新问题
HTTP Cookie Manager
(我为此责备自己和 IE)。
通常将 Internet Explorer 更改为带有 HttpFox 附加组件的 FireFox 有助于发现问题。
感谢大家的支持。
马立克