51Testing软件测试论坛

标题: [color=Red]winsocket的问题。希望这个论坛会有人能知道。—_—bbb[/color] [打印本页]

作者: 小灰尘    时间: 2004-9-15 15:53
标题: [color=Red]winsocket的问题。希望这个论坛会有人能知道。—_—bbb[/color]

lr中选择winscoket形式录制的脚本中receive的包的作用是什么?每次运行脚本的时候不是都会再收到么?如果留在脚本里可能反而会影响回放呢。服务器可能接受到错误的反馈。比如说如果我是用123用户名登陆的,系统发一个包给我。现在我把用户名改成321,脚本中录制的包还是123用户回放时的到的server回复的包呀?参数化server回复的包还要和再此之前发出的数据包有结构体联系好像不太现实。
      希望大家探讨一下。

                                                                               ——ash

作者: sunshinelius    时间: 2004-9-15 17:34
录制时的receive buffer只是一个回放成功与否的参照物。实际运行时还是会从服务器端接收数据过来没,把实际的receive buffer与录制时的receive buffer比较大小(注意:不是比较内容),如果字节数完全一致,就回放成功。
两个用户应该保持一致,包括其权限,用户名长度,登陆返回页面等等。如果都一样的话,参数化用户信息应该没问题。
作者: 小灰尘    时间: 2004-9-15 17:50
我44。不管怎么样先谢谢斑竹先。希望多些人谈谈自己的看法。
作者: sunshine_luo    时间: 2004-9-15 21:15
我对receive中的信息是这么理解的:在有些情况下,是需要从server返回的response中去获得需要的信息。比如接收邮件过程,client发出消息给server,询问是否有新的邮件到达,server返回给client有没有新邮件,如果有是哪几封,然后client根据server的回应包再决定是否需要接收新的邮件,具体接收哪几封等等。
而且一般情况下都不会去参数化receive中的信息。当脚本在回放过程中如果receive中的信息(也许是信息长度)和录制过程中不一致会给一个mismatch的提示,但不会影响到脚本的运行,所以在回放中我不会太在意是否和录制的receive一样,而只会从receive中去获得我希望得的信息
作者: 小灰尘    时间: 2004-9-16 10:51
我是这么想的:如果在server发给client的包中包含了重要的信息,(比如动态分配给用户登陆的id或是key)脚本中不参数化receive的包那就连登陆都实现不了啊!因为client反馈给server的id都是错的,根本连接不上server的。 希望大家指点。
作者: sunshinelius    时间: 2004-9-16 11:13
参数化receive buffer不会起作用的。那个receive buffer是不动的。
你用这个函数lrs_save_searched_string去在receive buffer 中找到你要的返回信息,并将其参数化。
如:
lrs_save_searched_string
("socket2", "buf11", "param2", "LB/BIN=\\x00", "RB/BIN=\\x03", 60,
1, -1);

lr_output_message ("param2: %s", lr_eval_string("{param2}"));
作者: sunshine_luo    时间: 2004-9-16 20:41
Originally posted by sunshine_luo at 2004-9-15 09:15 PM:
我对receive中的信息是这么理解的:在有些情况下,是需要从server返回的response中去获得需要的信息。比如接收邮件过程,client发出消息给server,询问是否有新的邮件到达,server返回给client有没有新邮件,如果 ...



可以通过loadrunner提供的API保存response中的相关信息,然后在下一个请求中再读出来。具体什么函数现在不记得了,明天去找找再回复你吧。:p
作者: 小灰尘    时间: 2004-9-17 14:48
谢谢大家。这个地方的学习风气真好。^_^
作者: 小灰尘    时间: 2004-9-17 15:40
谢谢大家。这个地方的学习风气真好。^_^
作者: sunshine_luo    时间: 2004-9-17 17:34
我是先通过函数lrs_get_received_buffer将需要的信息取出来,
再通过lrs_save_searched_string将该信息保存在参数中,
最后在send中参数化该参数
作者: guirongb    时间: 2004-10-15 16:21
这儿真是高手云集阿,太感谢了
作者: JerryCoo18    时间: 2004-11-22 22:46
请问   sunshine_luo   能否详细一些,最好给出一下例子,谢谢了!!!
作者: qingtian    时间: 2004-12-1 12:32
关注一下……
作者: darrendai    时间: 2004-12-8 09:27
标题: 关注,UP一下

作者: andrei    时间: 2004-12-8 18:07
很有收获,看来活用lr的库函数,威力无穷啊
作者: andrei    时间: 2004-12-8 18:11
我选择winsocket协议,但录制开始,启动程序后,会出现:
应用程序正常初始化(0xc0000005)失败。
这是什么意思?
作者: JerryCoo18    时间: 2004-12-9 21:17
能找到,LR库函数的一些例子就好了!!!
作者: marked    时间: 2005-1-8 13:18
好,顶!
作者: marked    时间: 2005-1-8 14:12
Originally posted by sunshine_luo at 2004-9-17 17:34:
我是先通过函数lrs_get_received_buffer将需要的信息取出来,
再通过lrs_save_searched_string将该信息保存在参数中,
最后在send中参数化该参数



你说在send中参数化该参数,是在data.ws中找到对应的send,点击右键进行参数化吗?
是如下操作吗?
第一步:
lrs_receive("socket0", "buf201", LrsLastArg);
  
lrs_save_searched_string("socket0",    LRS_LAST_RECEIVED, "Parameter1", "LB/BIN=\\x04", "RB/BIN=\\x02", 7, 0, -1);

lr_output_message("Parameter1:%s", lr_eval_string("<Parameter1>"));

第二步:

lrs_send("socket0", "buf186", LrsLastArg);
在data.ws的buf186中找到对应的信息点击右键参数化。这里的参数化是用Parameter1替换吗?
作者: elitel    时间: 2005-1-10 16:38
偶喜欢这里,顶




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2