|
所谓的关联(correlation)就是把脚本中某些写死的(hard-coded)数据,转变成是撷取自服务器所送的、动态的、每次都不一样的数据。
举一个常见的例子,有些比较聪明的服务器,在每个浏览器第一次跟它要数据时,都会在数据中夹带一个唯一的辨识码,接下来就会利用这个辨识码来辨识跟它要数据的是不是同一个浏览器。一般称这个辨识码为Session ID。对于每个新的交易,服务器都会产生新的Session ID给浏览器。这也就是为什么执行脚本会失败的原因,因为VuGen还是用旧的Session ID向服务器要数据,服务器会发现这个Session ID是失效的或是它根本不认识这个Session ID,当然就不会传送正确的网页数据给VuGen了。
我的理解就是,在录制脚本时,浏览器跟服务器的对话,服务器都会对这个浏览器的操作发送些动态的辨别码,但后来回放脚本的时候,浏览器还用以前服务器发送的旧辨别码跟服务器对话,服务器就会认出那是以前的“过期”的辨别码,就会拒绝此浏览器对服务器所做的操作,当然回放也就失败了。为了避免回放失败,在浏览器跟服务器对话之前的脚本里加上关联语句,再回放脚本时,浏览器就会向服务器发送一个动态的辨别码,服务器看到这个动态的辨别码是以前没用过的,就会同意此浏览器对服务器的操作;因为关联语句发出的是动态辨别码,所以在回放中的每次迭代和每个vuser的辨别码都不同,可以顺利回放成功 |
|