我对JMeter有一个奇怪的问题 我已经记录了某种Web应用程序而没有任何问题。播放测试时出现问题。 出于某种原因,我在播放期间收到的结果与录制时不同。
当我比较录制和播放期间发出的Http请求时,我没有看到任何一个区别(除了我从早期请求中提取并作为参数传递的一些安全令牌)。 为了在录制过程中更精确,我收到一个大身体(> 5kB)的响应,并且在回放期间,响应体是空的。响应代码为200(OK)。 这个主体包含来自数据库的关键数据,所以我担心这个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
是从其他请求获取值的字段。我添加了debug sampler来验证是否正确获取了这个值。
更新2 :发现问题。
那里有两个问题:
HTTP Header Menager
之外的整个项目以及我在标题中包含csrf_token
的请求(我在发布之前检测到了该错误)这个问题)。使用文本编辑器在xml中进行搜索是很好的解决方法。HTTP Cookie Manager
添加了一个新问题(我正在责备自己和IE)。通常使用HttpFox附加组件将Internet Explorer更改为FireFox有助于发现问题。
感谢大家的支持。
马立克
答案 0 :(得分:1)
响应代码200并不一定意味着应用程序级别的一切都很顺利。
要了解更多详情,您可以使用Debug sampler和Debug PostProcessor 示例here。
答案 1 :(得分:0)
您的问题肯定来自您未计算的缺少动态请求参数。
在csrf_token标题中查找示例您是否将其变为可变?或者您是否传输其初始记录值,但也包含任何包含一些哈希数据或数字数据的参数,这些数据引用了页面或请求中不存在的某些内容。
例如col pos我看到了p_p_col_id和相关参数,你确定他们在你的重播中引用了一些东西。
在这种情况下,JMeter错误的可能性非常小。