51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2093|回复: 10
打印 上一主题 下一主题

[原创] 新手socket测试,高人帮忙啊~~~~~

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-3-25 14:56:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
领导要求测试echo服务,我写的脚本如下:
#include "lrs.h"

char data[200];
char length[20];
char len;
vuser_init()
{
lrs_create_socket("socket0", "TCP", "RemoteHost=127.0.0.1:9090", LrsLastArg);
if ((lrs_create_socket("socket0", "TCP", "RemoteHost=127.0.0.1:9090", LrsLastArg))==0)
lr_output_message("Socket was successfully created ");
else
lr_output_message("An error occurred while creating the socket, Error Code: %d", lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=127.0.0.1:9090", LrsLastArg));


len =strlen(lr_eval_string("{content}"));
sprintf(length,"%d",len);
strcat(data,length);
strcat(data,lr_eval_string("{content}"));

lrs_send("socket0",data, LrsLastArg); //往"socket0"发送data中的数据
lrs_receive("socket0", "buf1", LrsLastArg);//将"socke0"中返回的数据存放到"buf1"中
lrs_close_socket("socket0");//关闭连接
}

但运行后出现问题:
虚拟用户脚本已启动
正在开始操作 vuser_init。
Web Turbo 重播 LoadRunner 8.1.0 for WIN2003; Web 内部版本 4788 [MsgId: MMSG-27143]
vuser_init.c(8): lrs_create_socket(socket0, TCP, ...)
vuser_init.c(9): lrs_create_socket(socket0, TCP, ...)
vuser_init.c(10): Socket was successfully created
vuser_init.c(20): lrs_send(socket0, 6123456)
vuser_init.c(20): 错误: 指定的缓冲区 6123456 不存在。错误代码: 9011。
从操作调用了中止

其中6123456是变量的值啊, 不是要向服务端发送的么,可为什么发不出去啊?
哪位熟悉LR的高手,指点一下啊,我刚刚看了LR二天,领导就要求测试,晕了~~~

[ 本帖最后由 adminwxf 于 2010-3-25 15:29 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-3-25 15:07:44 | 只看该作者
socket发送的数据都是在data里面定义,不要这样发送,把你要发送的字符串放到data里面
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2010-3-25 15:28:51 | 只看该作者
我现就是把发送的字符串放到了data里啊
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2010-3-25 15:30:21 | 只看该作者

回复 2# 的帖子

我现就是把发送的字符串放到了data里啊

len =strlen(lr_eval_string("{content}"));
sprintf(length,"%d",len);
strcat(data,length);
strcat(data,lr_eval_string("{content}"));
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2010-3-25 17:00:36 | 只看该作者
我觉得你应该在data里面参数化  你的data里面可能是空的
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2010-3-25 17:11:04 | 只看该作者
数据是写到data.ws里面的。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2010-3-26 10:55:12 | 只看该作者

回复 6# 的帖子

是的,我的数据是写到了data.ws,但是我在发送数据之前,要做一下处理,就是发送的数据=整个数据报长度(UINT32)+数据体,所以我在发送之前:
len =strlen(lr_eval_string("{content}"));
sprintf(length,"%d",len);
strcat(data,length);
strcat(data,lr_eval_string("{content}"));
所以要发送的是lrs_send("socket0",data, LrsLastArg); ,向socket0中发送data里的数据,可不知道为什么发不出去呢?
vuser_init.c(20): 错误: 指定的缓冲区 6123456 不存在。错误代码: 9011。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2015-3-11 09:18
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
    发表于 2010-3-26 11:07:07 | 只看该作者
    看了一下你所写的脚本,发现问题如下:
    你首先在action中将data中的数据进行参数化
    lr_save_string(data,"string");
    然后在data.ws中加上一句代码
    send  buf1 (长度)
    "<string>"
    最后才能在action中写上
    lrs_send("socket0",buf1, LrsLastArg);
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2010-3-26 11:28:11 | 只看该作者

    回复 8# 的帖子

    现在照着你说的那样改了,可是echo服务端没有显示收到数据啊
    vuser_init.c(10): lrs_create_socket(socket0, TCP, ...)
    vuser_init.c(12): Socket  was successfully created
    vuser_init.c(24): lrs_send(socket0, buf1)
    vuser_init.c(25): lrs_receive(socket0, buf2)
    vuser_init.c(40): lrs_close_socket(socket0)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-3-11 09:18
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    10#
    发表于 2010-3-26 11:56:38 | 只看该作者
    自己再调试一下吧,应该没有什么问题!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2010-3-26 14:06:18 | 只看该作者
    为什么脚本在 int()中啊
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-18 16:27 , Processed in 0.074652 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表