文章部分内容参考于博客:http://www.blogjava.net/qileilove/archive/2013/05/22/399597.html
关联:服务器返回给客户端一些动态变化的值,客户端使用这些值去访问服务器的时候,不能把这些值写死在脚本里面,而应该存放在一个变量里面。
在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,以变量的形式替换录制时的静态值,从而向服务器发出正确的请求,这种动态获得服务器响应内容的方法被称作关联。
使用步骤:
1.录制脚本,选择协议
2.脚本包含三个部分:
1)vuser_init 只执行一次,用于录制登陆等功能
2)Action 中间的具体逻辑
3)vuser_end 登出功能
3.设置关联
脚本录制完之后,会记录当次操作的数据记录,包括请求的url以及请求的数据和返回值等。当我们再次回放执行脚本时,所用到的数据仍然是第一次执行记录的脚本数据,很多请求数据都已经写死在脚本中了。例如我有一个请求,需要提交表单中的数据进入订单,我点击提交之后会先向订单表插入一条数据,此时会返回一个订单id,成功之后会再向订单详情里插入一条数据,该条数据会关联订单表返回的订单id。此时我们要重复回放脚本模拟多用户提交表单的话,脚本里记录的永远是第一次录制时的订单id,此时是无法形成多条订单的,所以我们需要动态的获取每次插入表单时后台服务器返回给我们的订单id,然后再插入订单详情中。
具体做法:
1)创建脚本File-new script & solution,选择协议,输入url,选择浏览器,
2)先按流程录制脚本,录制过程中可在不同场景选择不同的录制目标选择录制到init还是Action中
3)录制完之后需要点击停止会自动生成脚本,然后进行回放,检查录制的脚本是否成功。
4)
点击“运行时设置Runtime Settings”弹出“运行时设置”窗口,勾选“扩展日志”下的“参数替换”和“服务器返回的数据”。
5)下面两个请求就是我点击提交表单按钮后发出的两个请求:
web_custom_request
(
"sendOrderSend"
,
"URL=http://127.0.0.1:19002/mecv-manager/custservice/sendOrderSend" ,
"Method=POST" ,
"Resource=0" ,
"RecContentType=application/json" ,
"Referer=http://127.0.0.1:19002/mecv-manager/custservice/orderSend" ,
"Snapshot
"URL=http://127.0.0.1:19002/mecv-manager/custservice/sendOrderSend" ,
"Method=POST" ,
"Resource=0" ,
"RecContentType=application/json" ,
"Referer=http://127.0.0.1:19002/mecv-manager/custservice/orderSend" ,
"Snapshot