动态数据是指在信息更新会时更改的数据。 例如,会话变量连接到认证机制。 这会影响网站记录,因为JMeter需要知道如何捕获此动态数据并在后续请求中重用它。 否则,回放记录的时候会显示许多错误。

  这就是相关性。相关性是指从之前的请求中获取动态数据,并将其应用到后续请求中。


  How does it work?

  如上所述,动态值因为每个后续页面请求而改变。 这里我们查看来自航空旅行社演示的Token值(如果你跟随我们,你知道这是我们一直使用的演示)。 如果使用相同的Token,脚本将失败。

  wKiom1hcutzRczxeAALDk-EQlP4899.png    

  添加查看结果树,运行脚本,可以看到,因为token,运行失败了

  wKiom1hcu7bwllu8AAFrDvgx1J0746.png

  

  要关联从第一页捕获的值,我们返回去并在找到由服务器返回的该值。

 

  在这个例子中,你可以在表单中找到隐藏的input标签:

  wKiom1hcvRfTeWeoAANM-1vLdtE182.png  

  此变量需要在脚本中捕获,以便在余下脚本中作为变量重复使用。

 

  复制变量名并在正则表达式测试器中检查它,确保名称是正确的:

  wKiom1hcvx6wUCKVAALM6ryTfsA226.png   将名称转换为可处理动态数据的表达式,请使用括号和匹配运算符。 测试以确保它工作:

 wKiom1hcv7XSx9bUAAEPsiE3qTk467.png


  转到您找到该值的页面。 将正则表达式提取器添加为后处理器。

 wKiom1hcwQiAjUXzAAL42YhHH1Y727.png

 

  填写字段:

   ●引用名称 - 在脚本中引用时选择调用变量的选项。

   ●正则表达式 - 表达式

   ●模板 - 如何命名变量。 如果我们有多个匹配,我们可以使用包含每个匹配的模板。

   ●匹配 - 我们应该使用哪个匹配。 0是任何可能发生的匹配。

   ●默认值 - 找不到变量时输出的内容。

  

  现在,我们需要在每个页面的采样器中找到值。

 

  将名称替换为您找到的值。 对每个网页上的每个值执行相同操作:

  wKioL1hcwlWQJG0XAAInBwJhUrE071.png   我们还需要向脚本中添加一个调试采样器。 调试采样器显示在脚本中使用的找到的变量。 如果发现匹配或验证了这个问题 - 它会显示给我们。

  wKiom1hcw9uT2a_WAAXbs1Y369g583.png  现在,回放脚本。 不要忘记清除并改回'文本'。

  wKioL1hcxCOgF9_1AANNl8dfIZM147.png    欢呼! 错误现在已经消失,采样器已成功,因为找到了值。 注意它是一个新值:

  wKiom1hcxI7wKl3oAADBCs7Orlc965.png

  

    debugger中显示:

  wKioL1hcxKbwhKp1AAGnrehu6yU583.png  

  恭喜! 您现在知道如何使用相关性。 对于自动脚本,请查看BlazeMeter的“SmartJMX”功能。 SmartJMX通过查找每个URL的源,GET参数,POST参数或JSON POST字段来自动关联每个变量。 当找到候选者时,SmartJMX将变量提取器附加到相应的采样器并使用提取的变量而不是常数值。

 请继续关注第2部分 - 数据驱动的测试和JMeter的断言。

 本文来自BlazeMeter的Advanced Load Testing Scenarios with JMeter: Part 1 - Correlations