关联

JMeter 中关联有两种方式:正则(使用情况最多,比例可达95%)、XPATH(一般 XML 的时候使用 XPATH 用的多)。

测试用例

关联最好的示例网站就是 LoadRunner 自带的 Webtours 网站,我们本次也以此网站的登录、退出流程作为示例。

准备

录制关联的脚本示例之前,需要先对 Webtours 网站进行下设置,设置方法如下:

打开 WebTours 首页→单击链接 administration→勾选下图中所示选项→单击 Update 按钮即可。

录制测试脚本

(1)打开 Webtours 首页:

(2)输入 Username 和 Password(没有的请自行注册一个),单击 Login(登录)按钮:

(3)单击 sign off 按钮,退出即可,即完成了一个登录、退出的脚本,停止录制。

(4)将此脚本导出,然后倒入到 JMeter 中即可:

说明:Webtous 网站是 LR 自带的测试样例,必须在本地安装 LR 后,启动服务器后才可以访问,启动方法如下所示:

关联实战

怎么样发现关联

回放脚本时,发现录制好的脚本不能回放成功,此时大多数情况下都是没有参数化(或者是关联)造成的。

哪些脚本需要关联

需要关联的脚本一般情况下只有两种信息:

  • 时间
  • 一次性数据,这个一次性数据指的是:一般起到承上启下作用的字符串,该字符串有一串数字、或者一串字母、或者数字+字母的组合,那么这里一定需要进行关联操作。

具体实现

下面我们在录制的脚本中去找需要关联的操作,即查看同请求一起发送的参数,查看到 http://127.0.0.1/WebTours/login.pl 这个界面的参数时,发现 userSession 是由一串字母+数字组成的,我开始怀疑这里需要关联:

为了验证自己的猜想,于是将其前面的所有请求都给加上查看结果树,最后在:http://127.0.0.1/WebTours/nav.pl 请求的响应中找到 userSession 的值:

发现在此请求下,果然生成了 userSession,生成完毕将其传给了登录界面,因而证明我们的猜想成立。

下面看下具体的关联过程:

(1)找到需要匹配的界面,选择该请求>>后置处理器>>正则表达式提取器,录入界面如下:

对此界面配置说明如下(Apply to 与要检查的响应字段,前面章节已有介绍,不在赘述)。

  • 引用名称:下一个请求要用到的参数名称,如填写 session,则可使用 ${session} 引用它;

  • 正则表达式(最好看下 Java 那里对正则的支持):用于将需要的数据提取出来;

  • ():括起来的部分就是要提取的;

  • .:匹配任何字符值;

  • +:一次或多次;

  • ?:在找到第一个匹配项后停止。

  • 模板:如果前面的正则表达式取了不止一个参数,那么这里需要制定参数的组别,如果该参数为$1$,则表示取第一个值,$2$表示取得第二个值,以此类推$n$表示取第 n 个值,需要注意的$-1$表示取所有值,$0$表示随机取值。

  • 匹配数字:0表示随机取值,1表示全部取值。

  • 缺省值:如果正则表达式没有搜索到值,则使用此缺醒值。

(2)关联我们都知道,需要确定其左边界和右边界,案例中的正则表达式配置如下:

(3)在它传到后面的登录界面,将其进行引用:

(4)此时查看下结果树,其关联是否正确:

如上图所说,我们的关联成功。

总结

  • JMeter 不支持自动关联,必须手动关联;
  • JMeter 也同样遵守左边界、右边界;
  • 这是最重要的一点,JMeter 里的关联,必须使用正则表达式,若不会正则表达式,肯定写不出来关联语句。所以,务必掌握正则表达式的书写。
posted @ 2018-11-22 11:12  长安。  阅读(156)  评论(0)    收藏  举报