51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 6298|回复: 32
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-5-29 10:19:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
总共有buf数为从buf 0到buf 21,输入数据回车后会在buf 4中开始记录,并且在后面的每个buf中都有由该输入数据产生的相关数据。
请问这种情况该如何设置参数啊?是否所有出现和该输入数据相关的都要参数化么,但是如果输入的数据不同的化由其得到的后续数据也都不一样,但是在我录制的时候必须得输入一个实际的数据(然后在产生的脚本中对其参数化)。那么如果要对其参数化的话具体该如何做呢?


我有试过只对脚本里的第一次记录该输入的数据进行参数化(在参数化属性里设置了3个数据),但是在运行后在详细的日志里只显示调用了第一行的数据,后面的2个数据根本没有使用到
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2007-5-29 17:09:32 | 只看该作者
还是没有找到解决办法
大家有遇到类似问题的吗?给点意见啊
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-5-29 18:20:09 | 只看该作者
没什么好说的,就是关联+参数化啊。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-5-30 09:36:02 | 只看该作者

回复 #2 weiwei555 的帖子

不知你的buf0到buf21中有没有recv,我认为recv中的内容不用参数化。不知你的buf是否包含了send和recv。可以再将情况说得明白些吗?
回复 支持 反对

使用道具 举报

该用户从未签到

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

回复 #4 guxingyun 的帖子

录制脚本的data.ws如下
;WSRData 2 1

send  buf0 444
        "POST http://132.201.69.80:6080/BISWeb/Servicelet HTTP/1.1\r\n"
        "User-Agent: Jakarta Commons-HttpClient/2.0.1\r\n"
        "Host: 132.201.69.80:6080\r\n"
        "Proxy-Connection: Keep-Alive\r\n"
        "Content-Length: 260\r\n"
        "\r\n"
        "<adapter><header><protocol value=\"$protocol\"/><trx value=\"resplan\"/><r"
        "eqid value=\"1180107250078\"/><profile><instance value=\"$instance\"/><sou"
        "rce value=\"$source\"/><userid value=\"MF5258\"/><password value=\"$passwo"
        "rd\"/><ip value=\"$ip\"/></profile></header></adapter>"

recv  buf1 4851
        "HTTP/1.1 200 OK\r\n"
        "Server: WebSphere Application Server/5.1\r\n"
        "Content-Type: text/html; charset=ISO-8859-1\r\n"
        "Content-Language: en\r\n"
        "Transfer-Encoding: chunked\r\n"
        "\r\n"
        "124a\r\n"
        "<?xml version=\"1.0\"?>\n"
        "<adapter>\n"
        "<header><protocol VALUE=\"$protocol\"/><trx VALUE=\"resplan\"/><reqid VALU"
        "E=\"1180107250078\"/><profile><instance VALUE=\"$instance\"/><source VALUE"
        "=\"$source\"/><userid VALUE=\"MF5258\"/><password VALUE=\"$password\"/><ip"
        " VALUE=\"$ip\"/></profile><msgid VALUE=\"041rP87$9999999999respla\"/></hea"
        "der>\n"
其余的都类似这个,
send  buf2 441
         录制的脚本       

recv  buf3 4985
         录制的脚本
。。。

然后在antion中就是一组组的lrs_receive和对应的 lrs_send。。。。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-5-30 11:25:27 | 只看该作者

回复 #1 weiwei555 的帖子

我对其中的这句话有点不理解“我有试过只对脚本里的第一次记录该输入的数据进行参数化(在参数化属性里设置了3个数据),但是在运行后在详细的日志里只显示调用了第一行的数据,后面的2个数据根本没有使用到”这3个数据是什么意思,是3次输入吗,让脚本自运行3次来实现这3条数据的调用吗?查看一下你的消息信箱。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2007-5-30 13:34:44 | 只看该作者

回复 #6 guxingyun 的帖子

这句话要表达的意思就是:我在程序输入数据后,会从buf 4开始记录这个输入的数据,但是在后面的所有的send和receive的buf都会有这个输入数据或由它查找到的相关数据,但是我只在buf 4里对它进行了参数化、
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2007-5-30 13:56:53 | 只看该作者

回复 #7 weiwei555 的帖子

也就是说从4输入数据后,之后5-21的send和rece都是一气呵成的,也就是说用户没有作其他的操作?我认为参数化的重点放在send上,只要是send中涉及到的在步骤4中的输入数据,都是要参数化的。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2007-5-30 14:20:04 | 只看该作者

回复 #8 guxingyun 的帖子

恩,就是你说的意思,打个简单的比喻吧,相当如你在学校里用一个信息管理系统,在系统里输入学号查询,然后会出现该学生的所有相关信息,(当然该学号在服务器端也有对应的关键字数据),查询到的信息当然会因为学号的不同而不同,我学LR才不到一个月。到处都摸不着头绪,很麻烦
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2007-5-30 14:34:27 | 只看该作者

回复 #8 guxingyun 的帖子

如果只参数化send中的话,那么运行时receive的数据应该会有些和输入的数据所要求的receive值对不上了么
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2007-5-30 14:50:19 | 只看该作者
关注这个问题,我之前也遇到类似的问题,没有解决。
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2007-5-30 14:52:32 | 只看该作者

回复 #10 weiwei555 的帖子

好的,那么先确定一下你要实现的目标是什么,输入不同的数据(send)收到不同的reve信息,这个recv信息你是要保存起来呢还是要验证接收到的数据是否正确?你录制的这段代码是一个功能项还是几个功能项?一般一个功能项录制一个脚本.
其二,recv的值是根据send的值而确定的,虽然在脚本回放的过程中脚本中的recv的值第一次录制时的固定的数据,但实际上服务器发送过来的数据是与send对应的,至于如何保存这时的recv中的数据我暂时还不知道,看看执行日志中是否有相关信息.
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2007-5-30 14:52:44 | 只看该作者
主要是运行时并没有循环执行脚本,我参数表里设置了2个数,可是总是只会取第一个数。
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2007-5-30 15:04:45 | 只看该作者

回复 #12 guxingyun 的帖子

1、目的:输入不同的数据得到与其对应的receive结果(receive结果因输入的不同而不同),输入数据回车后,会有大约10多个进行数据处理的操作(当然都是程序在后台自行处理的),在所有数据处理完成后会给出最后结果(我们的程序是弹出一个对话框给出结果),测试从输入数据到弹出结果所耗费的时间

录制的时候当然只会输入一个数据,但是为了测试的更准确性,所以要模拟很多的输入数据来测试该反应时间

2、不需要百存该receive的数据。我有查看详细的日志,我按你的方法只参数化了send里的数据,没有考虑receive里的数据,我在参数表有2个数据9991172301和9991112307,设置的是首先取9991172301这个数据,但是在日志里的buf13和buf15的,所以也不知道其返回结果到底正确不正确,但是运行过程中没有报任何的错误
except receive里还是出现了9991112307这个值。
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2007-5-30 15:19:03 | 只看该作者
好,,支持问题1`
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2007-5-30 15:59:10 | 只看该作者

回复 #13 和 #14 weiwei555 的帖子

关于#13" 主要是运行时并没有循环执行脚本,我参数表里设置了2个数,可是总是只会取第一个数。"有点疑问,第一,没有循环执行脚本,也就是说你这次的操作脚本只执行了一次,也就是Runtime Setting里的Pacing设置的是1;第二,参数表里设置了2个数,那么对于出现参数取值的设置是什么,也就是右键菜单下的参数的属性设置是什么样的,应该是sequential,each interation,这样的设置可以保证在这个循环中的取值是一样的。
关于#14,简单验证结果是否正确可以在正常的情况下使用9991172301看一下结果,然后再运行脚本看一下结果,两个比较一下就可以了。运行脚本的前提是保证#13的运行时设置是正确的。

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

使用道具 举报

该用户从未签到

17#
 楼主| 发表于 2007-5-30 16:06:45 | 只看该作者

回复 #16 guxingyun 的帖子

好,我设置的是unique,update value=once
谢谢你啊guxingyun。。。这么热心sdlkfj2

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

使用道具 举报

该用户从未签到

18#
 楼主| 发表于 2007-5-30 16:15:33 | 只看该作者
按你的建议现在可以了,可是循环在执行第二次的时候报错
Starting iteration 2.
Starting action Action.
Action.c(14): lrs_create_socket(socket0, TCP, ...)
Action.c(14): callBind: socket: socket0 (264), local host: (null), local port: 0
Action.c(14): Error : socket0 - Invalid argument. Error code : 10022.

action中的脚本如下:
#include "lrs.h"

Action()
{
   
    lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=192.168.0.56:9080",  LrsLastArg);
    lrs_send("socket0", "buf0", LrsLastArg);
    lrs_receive("socket0", "buf1", LrsLastArg);
    lrs_send("socket0", "buf2", LrsLastArg);
。。。
}

查看了以前的帖子,据说是参数设置有问题,再检查检查

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

使用道具 举报

该用户从未签到

19#
发表于 2007-5-30 16:15:55 | 只看该作者

回复 #14 weiwei555 的帖子

脚本在录制时使用的数值是多少,应该不是9991172301吧?是9991112307吗?那样的话#14楼提到的“except receive里还是出现了9991112307这个值。”会好理解一些。
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2007-5-30 16:19:56 | 只看该作者

回复 #18 weiwei555 的帖子

报错指出socket是无效的,应该是在Action的结尾没有关闭的原因,在return 0;;语句之前添加lrs_close_socket("socket0"); 然后再试一下。
还有#16楼的设置方式应该不会出错才对,unique ,once。

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

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-25 19:25 , Processed in 0.084180 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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