JMeter在重放测试期间得到不同的结果

时间:2012-11-02 16:32:14

标签: performance jmeter

我对JMeter有一个奇怪的问题 我已经记录了某种Web应用程序而没有任何问题。播放测试时出现问题。 出于某种原因,我在播放期间收到的结果与录制时不同。

当我比较录制和播放期间发出的Http请求时,我没有看到任何一个区别(除了我从早期请求中提取并作为参数传递的一些安全令牌)。 为了在录制过程中更精确,我收到一个大身体(> 5kB)的响应,并且在回放期间,响应体是空的。响应代码为200(OK)。 这个主体包含来自数据库的关键数据,所以我担心这个JMeter脚本所做的测量不会反映应用程序的实际行为,只是我不会测量我真正需要的内容。

现在我的问题:

  1. 是否有一些工具或JMeter插件可以更有效地查看HTTP请求及其响应的内容?如果我可以比较录制和播放期间的请求,那就太棒了。到目前为止,我使用了两个监听器:“查看结果树”。我把它们夹在它们之间来比较录制和播放的请求。
  2. JMeter中是否有一些已知错误可以解释其中的差异?例如与录制过程有关的内容?
  3. 以下是请求示例:

    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 :发现问题。
    那里有两个问题:

    1. 当您进行搜索时,JMeter中存在一个错误(Ctrl-F)它会搜索除HTTP Header Menager之外的整个项目以及我在标题中包含csrf_token的请求(我在发布之前检测到了该错误)这个问题)。使用文本编辑器在xml中进行搜索是很好的解决方法。
    2. 当我试图找到问题的根源时,在我发现第一个问题之前,我通过移除HTTP Cookie Manager添加了一个新问题(我正在责备自己和IE)。
    3. 通常使用HttpFox附加组件将Internet Explorer更改为FireFox有助于发现问题。

      感谢大家的支持。

      马立克

2 个答案:

答案 0 :(得分:1)

响应代码200并不一定意味着应用程序级别的一切都很顺利。

要了解更多详情,您可以使用Debug samplerDebug PostProcessor 示例here

答案 1 :(得分:0)

您的问题肯定来自您未计算的缺少动态请求参数。

在csrf_token标题中查找示例您是否将其变为可变?或者您是否传输其初始记录值,但也包含任何包含一些哈希数据或数字数据的参数,这些数据引用了页面或请求中不存在的某些内容。

例如col pos我看到了p_p_col_id和相关参数,你确定他们在你的重播中引用了一些东西。

在这种情况下,JMeter错误的可能性非常小。

相关问题