socket两种关联方法

关联有两种,一种是自动关联,一种是手动关联

关联主要参考的文档是data.ws,在data.ws中找到需要关联的地方,然后在Action中相应的buf后面进行关联,或者将脚本设置为Tree View模式,找到待关联的值,右键->Create Parameter就可以创建一个关联了,然后系统会提示用户是否用参数替换所有的值,选【ok】以后,可以在参数列表中查看,哪些需要替换的,需要替换的就保留,不需要的undo就可以了。

关联用到的函数有三个:lrs_save_param、lrs_save_param_ex、lrs_save_searched_string

<!--[if !supportEmptyParas]--> <!--[endif]-->

可以在脚本中使用lr_output_message函数输入需要的内容进行脚本的调试,也可以通过该函数自己设置检查点,检查脚本是否正确。

一般情况下在receive到的buffer部分做关联

http://www.ltesting.net/html/15/192315-167988.html 

之前在做LR socket协议录制,第一次接触感觉很是陌生,遇到的问题就是参数的关联,我们进入主题,首先讲下我测试的这个软件的简单环境:
        1. TCP协议封装的数据包,只能选择socket协议录制
        2. 录制的是登陆用户端,登陆者创建了一个条目,条目的主键是它的ID,这个ID是服务器的生成,返回给客户端,需要做关联的恰是这个ID
       ( 这里额外说下,做LR录制特别是socket,如果你不是开发者那么一定要多和开发交流,才容易找到切入点;)

         Step1. 由于录制的脚本太多,询问了开发客户端得到这个ID前发送给服务器请求时所用的函数,版面关系,截取了一部分(请到data.ws中去找):
         send  buf146 208
           ".http://tempuri.org/IEdisDesignService/GetMaxIdD"
           "\x1a\xad\xb4\xf7\xb9"
           "\b," 

         recv  buf147 161
          "6http://tempuri.org/IEdisDesignService/GetMaxIdResponseD"
          "GetMaxIdResult"
          "@R"
          "*"

        Step2. 其中GetMaxID是客户端发送的请求,红色加粗部分@R为客户端接收到的ID,由于LR是用ASCII码显示,可以通过LR函数将其转换为整型,切换回Action部分(笔者已将vuser_init中内容都放到action中),再切到Tree View,找到buf147,内容如下:
\x05œV\x02\v\x01s\x04\v\x01a\x06V\bD\n\x1e\x00‚™6http://tempuri.org/IEdisDesignService/GetMaxIdResponseD\x12­´÷¹\b,ê…L”v9t$>ˆK\x01V\x0e@\x10GetMaxIdResponse\b\x13http://tempuri.org/@\x0eGetMaxIdResult@R*\x01\x01\x01\x00\x07

        Step3. 找到@R,选中->右键->Create Parameter,弹出的对话框中有个Script. Statement区域,将其内容复制下来,关闭窗口,内容为:lrs_save_param( "socket1", LRS_LAST_RECEIVED, "Parameter1", 154, 5 );
       注:socket貌似不支持自动关联,所以安全保证我们自己修改脚本,手动关联;

        Step4. 将Script. Statement内容复制下来后,切换回ScriptView,找到buf147,一般这个buf应该为receive,在其下面将上面的语句黏贴上;

         Step5. 切到data.ws,查找@R,将@R都替换为<Parameter1>, 注意有些@R可能在一个字符串中,就不能替换掉,只要单独字符串为@R的才可以替换;

        好,到这里关联结束了,可以回放脚本检查;

        大家也可以把客户端接收到的ID显示出来具体方法为:在添加lrs_save_param();下一行加上lr_output_message("Parameter1 is  : %s", lr_eval_string("<Parameter1>"));,回放中,将把Parameter的内容显示出来,如果值一直不变,那可能您的返回ID位置找的不正确,正常这个值在不同的回放过程中应是变化的,切为递增的;

posted on 2014-04-23 09:48  molly8124  阅读(463)  评论(0编辑  收藏  举报