关闭

LR中点鼠标做关联(winsock协议)

发表于:2007-6-25 10:51

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Zee    来源:51testing博客

今天写一下winsock的关联操作。

以前看过一个文档。在英文版的讲winsock的,其中讲到关联。大致操作是:

1,录制。

2,回放。这里是失败。

3,data.ws里找需要关联的数据。

4,F7,打开EBCDIC translation对话框。

5,查找数据的位置及偏移量。

6,到脚本中写函数用:lrs_save_param, lrs_save_param_ex, lrs_save_searched_string,这三个函数。

 

Notes:winsock的关联函数要写到需要关联的代码行的下面。

 

说明一下这几个函数:

Lrs_save_param:

int lrs_save_param ( char *s_desc,char *buf_desc, char *param_name, int offset, int param_len);

这个函数保存buffer中的数据到一个参数里。这个函数是用来在脚本中做关联的。

前两个参数是为了指定特定的参数。

在指定活动的socketbuffer之后,需要指定一个参数来保存数据。指定偏移量来显示buffer中数据的偏移量和数据的长度。

保存了参数之后,可以在脚本和数据文件使用它,代替所有需要替代的值。替换时要用选项中的定义的符号来引用。

注意:要从buffer中保存一个编码过的数据到参数中,要用lrs_save_param_ex函数。

lrs_save_param_ex

int lrs_save_param_ex ( char *s_desc, char *type, char *buff, int offset, int length, char *encoding, char *param );

这个函数保存一个buffer或者一个buffer的某一部分到参数中。这个变量指定buffer中某种类型的数据被保存:用户buffer,录制的buffer,或者上一个接收到的buffer.推荐使用在用户数据中。

[Z1] 

 

 

下面说不用这么麻烦的操作的,直接点几下就可以了。

 

1         录制脚本

这个没什么说的吧。选择协议winsock,这要是也不懂,我建议你去看十遍手册。

我这里录制到的脚本如下:

       lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=192.168.1.114:5560", LrsLastArg);

       lrs_send("socket0", "buf0", LrsLastArg);

       lrs_receive("socket0", "buf1", LrsLastArg);

       lrs_create_socket("socket1", "TCP", "LocalHost=0", "RemoteHost=192.168.1.114:5560", LrsLastArg);

       lrs_send("socket1", "buf2", LrsLastArg);

       lrs_receive("socket1", "buf3", LrsLastArg);

相应的data.ws如下:

;WSRData 2 1

 

send buf0 50

       "OPERTYPE(LOGIN)ACCOUNTNAME(admin)PASSWORD(admin)"

 

recv buf1 155

       "DATALEN{{155}}000000USERID{{90}}USERNAME{{DMS"

       "\xcf\xb5\xcd\xb3"

       "WEB"

       "\xb2\xe9\xd1\xaf\xd5\xca\xbb\xa7"

       "}}USERDESCRIBE{{"

       "\xba\xfe\xd6\xdd\xb5\xe7\xc1\xa6\xbe\xd6"

       "\\DMS"

       "\xcf\xb5\xcd\xb3"

       "WEB"

       "\xb2\xe9\xd1\xaf\xd5\xca\xbb\xa7"

       "}}DEPARTNAME{{"

       "\xce\xb4\xd6\xaa"

       "}}ADMIN{{0}}CLIENTSESSIONID{{2}}"

 

send buf2 53

       "CLIENTSESSIONID(2)OPERTYPE(INITDEPARTLIST)"

 

recv buf3 683

       "DATALEN{{683}}000000XMLDATA{{<?xml version=\"1.0\" encoding=\"GB2312\"?>\n"

       "<!DOCTYPE DepartList>\n"

       "<DepartList>\n"

       ………………………………………………………………………………………………

这里就省略了些数据。反正也看着也晕乎乎的。

这里说明一下,我这里是用GIS系统,需要sessionID关联的。我这上面的代码很简单,在buf1中有一个sessionID,在buf2send时就用到了它。

2         回放一下

在不关联时回放是一定会有问题的。我回放的结果是:

Virtual User scrīpt started

Starting action vuser_init.

Ending action vuser_init.

Running Vuser...

Starting iteration 1.

Starting action Action.

Action.c(4): lrs_create_socket(socket0, TCP, ...)

Action.c(6): lrs_send(socket0, buf0)

Action.c(8): lrs_receive(socket0, buf1)

Action.c(11): lrs_create_socket(socket1, TCP, ...)

Action.c(13): lrs_send(socket1, buf2)

Action.c(15): lrs_receive(socket1, buf3)

Action.c(15): Mismatch (expected 683 bytes, 42 bytes actually received)

Action.c(17): lrs_create_socket(socket2, TCP, ...)

Action.c(19): lrs_send(socket2, buf4)

Action.c(21): lrs_receive(socket2, buf5)

Action.c(21): Mismatch (expected 34143 bytes, 42 bytes actually received)

Action.c(23): lrs_create_socket(socket3, TCP, ...)

Action.c(25): lrs_send(socket3, buf6)

Action.c(27): lrs_receive(socket3, buf7)

Action.c(27): Mismatch (expected 100 bytes, 42 bytes actually received)

Action.c(29): lrs_create_socket(socket4, TCP, ...)

Action.c(31): lrs_send(socket4, buf8)

Action.c(33): lrs_receive(socket4, buf9)

Action.c(33): Mismatch (expected 134 bytes, 42 bytes actually received)

Action.c(35): lrs_send(socket4, buf10)

Action.c(38): lrs_receive(socket4, buf11)

Action.c(38): Mismatch (expected 17520 bytes, 42 bytes actually received)

Action.c(41): lrs_create_socket(socket5, TCP, ...)

Action.c(43): lrs_send(socket5, buf12)

Action.c(45): lrs_receive(socket5, buf13)

Ending action Action.

Ending iteration 1.

Ending Vuser...

Starting action vuser_end.

Ending action vuser_end.

Vuser Terminated.

主要来看一下蓝色的部分,因为没有关联,服务器是返回了42字节的数据,但是和录制时的数据是不同的。所以会mismatch。这里可以在LOGMismatch的值打印出来,不过太长了,我就不打印了。^@^

21/212>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • wjla1
    2007-8-09 22:01:38

    不错.谢谢分享!

  • cherubim
    2007-7-09 11:57:23

    先保存了再看看 谢谢分享了.楼主继续加油,呵呵我自己也要加油了

  • zhangjan8037
    2007-7-09 11:13:01

    我也顶一下!·

  • liaoshaoqing
    2007-6-28 13:49:25

    正在测试c/s 的游戏压力测试,学习学习

  • JuliaLiu
    2007-6-26 10:09:29

    学习中

  • random_qjj
    2007-6-25 22:26:13

    下东西要分,没办法,灌灌水。。

  • stjd139
    2007-6-25 15:32:11

    看不懂
    学习下

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号