我以前给别人回答过 现在我再给你说一下:
Session是Web浏览器的会话机制 正常操作后面隐藏的具体过程如下:
张三请求登录(向服务器发Request),Web登录服务器给他回馈一个SessionID_zhangsan,
同时在服务器中记录(注意注意,这就是案底,日后对账要以这个作为依据);
登录之后,张三肯定还要继续请求其他服务(比如请求页面啊等等……),
张三请求服务的时候,得先给服务器喊暗号,服务器根据暗号来区分不同的Client,
张三就喊SessionID_zhangsan,李四就喊SessionID_lisi,王二麻子就喊SessionID_wangermazi……明白吧,
只有client提交的暗号跟服务器自己记录的案底对上了,服务器才能提供相应的服务,
如果对不上,不但不提供服务,还要报错;
以上说的是正常的情况,但是如果这个过程里面掺上了LR,那就不一样了,事情会变成这样:
录制的时候,假如还是张三请求登录,Web登录服务器给他回馈一个SessionID_zhangsan2,
LR会从对话中捕捉这个SessionID_zhangsan2,写死到LR脚本里面(注意注意,这里是第二个关键),
服务器自己也会记录案底,然后一切都好,该请求的请求,该服务的服务,此后无话;
(如果你看过一些资料,你会知道LR的工作原理就是捕捉Client与Server之间的对话)
等到了回放的时候,可就不是张三了,而是张三狗了,这就是LR的运行所引入的不同,
那么张三狗请求登录,Web登录服务器给他回馈一个SessionID_zhangsangou,但是并不捕捉记录到脚本,
(注意注意,这里是第三个关键),
因为这是回放,不是录制,所以不会更新脚本,刚才捕捉的SessionID_zhangsan2不被覆盖,
张三狗请求其他服务的时候,本来应该喊暗号SessionID_zhangsangou,
但是注意,现在是LR代替张三狗登录,并不是真的张三狗,LR只能喊出SessionID_zhangsan2这个暗号,
因为SessionID_zhangsan2是写死的,并且没有被覆盖过,还记得吧,
回放的时候一切忠实于脚本,现在是SessionID_zhangsan2要和服务器记录的底子去对账,
那服务器记录的底子是什么呢?是SessionID_zhangsangou,这是录制的时候记进去的!
那肯定是对不上的呀,这脚本还怎么运行呢?性能测试还怎么继续呢?
关联,就是用来解决这个问题的:
当录制的时候,服务器不是反馈SessionID_zhangsan2吗?因为设置了关联,所以无论是录制过程还是回放过程,只要是服务器返回的,都记到一个变量里面,这样一来,服务器反馈什么,脚本就记录什么,而且是动态的,
不是写死的,这样就不会出现对不上的情况了。
当然并不是所有的服务器都有这么智能,如果服务器没这个对证机制,你就不需要做关联了;
关联可以手动 也可以自动 要在正确的位置插入关联函数 然后写对左右边界
关联又称作参数自动化,
比如你在测试数据库等有登录业务的事务时,需要很多的用户名、密码来模拟用户,这样你就可以把用户名和密码作为参数,然后通过关联准备一个参数集,然后脚本自动去这个集合中读取成对的用户名、密码。
假如你安装了LoadRunner,在他的快速入门文档里有专门的操作。没有的话可以找我要