51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

12
返回列表 发新帖
楼主: weiwei555
打印 上一主题 下一主题

[原创] 用winsok录制的C/S脚本如何实现输入的参数化

[复制链接]

该用户从未签到

21#
 楼主| 发表于 2007-5-30 16:21:07 | 只看该作者

回复 #19 guxingyun 的帖子

恩,录制的时候输入的是9991112307,在参数表里数据的顺序是9991172301,然后是9991112307;脚本被编辑了很多次了,自己都糊涂了,我重新录制下
回复 支持 反对

使用道具 举报

该用户从未签到

22#
发表于 2007-5-30 16:24:44 | 只看该作者

回复 #21 weiwei555 的帖子

这样子就好理解了,因为录制时使用的是9991112307,而回放时第一次的取值是9991172301,录制和回放的值不同,所以except receive里出现9991112307这个值是提示两次(录制和回放)的差异。
回复 支持 反对

使用道具 举报

该用户从未签到

23#
 楼主| 发表于 2007-5-30 16:48:52 | 只看该作者
恩,就是你说的那样。
但是循环还是不能进行下去,第一次能顺利运行,但是第二次总是报错Action.c(37): Error : socket2 - Invalid argument. Error code : 10022.

我把参数表里的2个数据改成一样的还是会出现这个错误,为什么总是只能顺利执行一次。搞不懂


忘了说了,我这只是在demo状态下的测试。

我online测试的时候,录制的在线脚本,没有参数化,就是直接用录制的脚本run,如果连续run(就是运行结束后马上有点run开始运行)的话可以多次顺利运行(但也最多只能运行3-4次),如果不连续run的话,会出现找不到locahhost的10052错误(但是第一次总是能顺利运行完成)。不知道是程序问题还是LR问题,LR我是录制完就run,没有该任何参数

[ 本帖最后由 weiwei555 于 2007-5-30 16:57 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

24#
发表于 2007-5-30 16:58:55 | 只看该作者
了解,可以采取这样的方式,既然你的脚本现在的操错是在buf4时才输入数据,那么现在将lrs_create_socket放在初始化vuser_init里,将lrs_close_socket放在vuser_end里,然后再次运行迭代试一下。如果迭代可以成功,再细说我对 socket2 - Invalid argument. Error code : 10022.的理解。
回复 支持 反对

使用道具 举报

该用户从未签到

25#
 楼主| 发表于 2007-5-30 17:13:24 | 只看该作者

回复 #24 guxingyun 的帖子

高手啊,按你说的把lrs_create_socket放在init里面运行成功了。谢谢谢谢

只是这个录制的脚本总共创建了4个socket(0,1,2,3),但是只有0,1有close socket;socket2和3均只有创建socket而没有close,但是运行还是成功了,没有任何错误。

再次谢谢你的热心的帮促。没有你这些问题是不能解决的,我已经查了几天资料了,但是都停滞不前。谢谢你啊guxingyun
回复 支持 反对

使用道具 举报

该用户从未签到

26#
发表于 2007-5-30 17:21:21 | 只看该作者
不是高手,只是我这段时间也在学习作这方面的测试,所以遇到过类似的问题。c/s的通信方式也不是很理解呢,如果理解的再深入一下的话,还会有更深刻的认识的。可以请教开发人员,脚本还是可以继续优化的。继续学习中....
回复 支持 反对

使用道具 举报

该用户从未签到

27#
 楼主| 发表于 2007-5-30 17:23:25 | 只看该作者
sdlkfj7 把参数表的数据设成2个一样的可以运行成功,没有任何错误

但是如果设成2个不同的数据,第一个运行成功没有任何错误,第二个会报出Action.c(53): Error : socket2 - Software caused connection abort. Error code : 10053.
Action()
{
    lr_think_time(63);
    lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=192.168.0.54:9080",  LrsLastArg);
    lrs_send("socket0", "buf0", LrsLastArg);
    lrs_receive("socket0", "buf1", LrsLastArg);
    lrs_send("socket0", "buf2", LrsLastArg);
    lrs_receive("socket0", "buf3", LrsLastArg);
    lr_think_time(24);
    lrs_create_socket("socket1", "TCP", "RemoteHost=192.168.0.54:9080",  LrsLastArg);

lr_start_transaction("pop");
    lrs_send("socket1", "buf4", LrsLastArg);
    lrs_receive("socket1", "buf5", LrsLastArg);
    lrs_close_socket("socket0");

这行是录制时存放lrs_create_socket("socket2", "TCP", "LocalHost=0", "RemoteHost=192.168.0.54:9080",  LrsLastArg)的,现在被切到init里了,报错会出现在下面的某行里,但是好像不会出现在buf 6, buf 7,这2行

    lrs_send("socket2", "buf6", LrsLastArg);
    lrs_receive("socket2", "buf7", LrsLastArg);
    lrs_send("socket2", "buf8", LrsLastArg);
    lrs_receive("socket2", "buf9", LrsLastArg);
    lrs_send("socket2", "buf10", LrsLastArg);
    lrs_receive("socket2", "buf11", LrsLastArg);
    lrs_send("socket2", "buf12", LrsLastArg);
    lrs_receive("socket2", "buf13", LrsLastArg);

注:如果输入的数据不同,录制时产生的socket数也不尽相同,不知该错误和这有关系没

[ 本帖最后由 weiwei555 于 2007-5-30 17:34 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

28#
发表于 2007-5-30 17:36:20 | 只看该作者

回复 #27 weiwei555 的帖子

把lrs_create_socket("socket2", "TCP", "LocalHost=0", "RemoteHost=192.168.0.54:9080",  LrsLastArg)及之前的都移到初始化里面,暂时先将lr_start_transaction("pop");屏蔽掉,等脚本可以正常运行后再添加事务之类的。还有socket1实现的是什么?
回复 支持 反对

使用道具 举报

该用户从未签到

29#
 楼主| 发表于 2007-5-30 18:05:48 | 只看该作者
好,我去改一下。socket 0,1,2,3的内容都是一样的,。

要是把socket 0,1也移到init里的话会报not exist socket 0,1的错误。所以我把他移会录制时的地方了;但是移回后又报出了Action.c(36): Error : socket2 - Invalid argument. Error code : 10022.这个错

socket是实现什么的我也看不懂,录制时做的操作就是:输入帐号密码登陆,进入程序后数据数据回车,然后等着弹出结果对话框,录制完毕。

但是由于输入数据的不同需要创建的socket数也不尽相同,是否不能实现参数化的性能测试啊?

[ 本帖最后由 weiwei555 于 2007-5-30 19:08 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

30#
发表于 2007-5-30 19:45:10 | 只看该作者
就使用你之前录制的那段代码 然后现在开始进行一些小小的修改
我看了一下 socket0和socket2应该是要做相同的工作 可以将与socket0相关的语句屏蔽掉 socket2的位置暂时保持不便
问一下“socket是实现什么的我也看不懂,录制时做的操作就是:输入帐号密码登陆,进入程序后数据数据回车,然后等着弹出结果对话框,录制完毕。”之中“数据数据”的意思是这个操作是在一个对话框中填入,点击一下确定或查询按钮就会出结果了是吗?

[ 本帖最后由 guxingyun 于 2007-5-30 20:18 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

31#
 楼主| 发表于 2007-5-31 08:56:04 | 只看该作者
数据数据应该数输入数据,打错了。
就是你说理解的意思,输入数据回车就相当如开始进行查询操作了。

好像不能屏蔽的吧,如果屏蔽了的话会报no exist socket 0或1的错误(第一次可以顺利执行,第二次会报错。参数表的第一个数据是我录制时输入的数据,第二个是新加的);因为输入数据的不同(数据的格式都是一样的)会创建不同数量的socket,所以可能不能用参数化对其执行循环测试,但是如果参数表的值是相同的话,就可以顺利的执行而没有任何错误

[ 本帖最后由 weiwei555 于 2007-5-31 09:16 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

32#
发表于 2007-5-31 09:23:24 | 只看该作者
看一下于脚本里socket2有关的send和recv的内容,请教一下开发人员这里的通讯流程是怎样的。看一下操作手册里关于socket录制时的设置,有一个服务器到客户端或客户端到服务器的选择的,各录制一份,看看data.ws中的内容,不知你们的通讯协议是什么格式的,你录一下看看吧,和开发人员沟通一下。

[ 本帖最后由 guxingyun 于 2007-5-31 09:47 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

33#
发表于 2008-4-3 18:06:22 | 只看该作者
真是好文章啊,正好遇到这个问题

我是创建了几个socket
就关闭几个socket

好像就可以正常运行了
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-25 21:48 , Processed in 0.075165 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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