LR录制winsocket协议脚本.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
LR录制winsocket协议脚本

TCP协议的winsocket录制脚本 唱歌评测服务是使用TCP协议,是基于socket协议的编程,所以使用LR录制winsocket。下面说一下LR的winsocket协议是个很通用的协议,只要windows上通信的软件都可以使用,但是最好还是只用于录制基于socket协议的编程的应用程序。使用该协议时,靠自动录制估计是行不通的,得靠手工填写脚本。如本次我要录制本机上的服务引擎(是个exe文件)基本上自动录制的脚本是没有什么用的,下面介绍下步骤: 选择如下图所示,在录制的时候可以运行开发提供的测试工具,这样可以录制http协议的消息到data.ws,但是只能录制到发送方的消息体,无法录制服务端SES回复的消息。 录制完成后Action中如下: Action() { ??? lrs_create_socket(socket0, TCP, LocalHost=45678, Backlog=5,? LrsLastArg); ??? lrs_accept_connection(socket0, socket1); ??? lrs_send(socket1, buf0, LrsLastArg); ?? ? lrs_disable_socket(socket1, DISABLE_SEND); ??? lrs_close_socket(socket1); ??? return 0; } 编译没有错误,但是运行的时候 lrs_send(socket1, buf0, LrsLastArg);一直报Action.c(14): Error : Timeout expired while trying to accept connection. Error code : 9017. 最后发现录制出现的脚本是不可用的,需要手工添加传送和接收的消息,在data.ws中添加消息交互信息,而录制的Action多半也是不可用的。 下面说一下data.ws,这个是http协议录制中没有的,这里面是soket消息交互的内容,一般需要手工填写,至于具体内容是什么样的,应该询问开发人员的消息定义格式。 以一次客户端发送的请求登录消息为例,定义消息时设置要了协议,要发送的内容为usrname和password,这些内容在逻辑设计手册上有定义。 send buf0 56 GET /ses_login HTTP/1.1\r\n usrname: iavp\r\n password: iavp\r\n 下面说下自动录制的Action错误: 发现实际上录制时候自动生成的LocalHost=45678是不对的,应该写成IP地址 lrs_create_socket(socket0, TCP, RemoteHost=42:45678, LrsLastArg); lrs_accept_connection(socket0, socket1); 这个消息是不需要的,本次是长连接,整个一次评测过程中只有一个socket,如果是短连接,每次也都要重新lrs_create_socket。 有的内容是变化的,需要进行参数化,本次录制的内容比较简单,只有sessionID 需要参数化,以下是客户端收到服务端的响应的消息,其中包括sessionid。 recv buf1 67 HTTP/1.1 200 OK\r\n response: /ses_login\r\n sessionid: num\r\n retcode: 0\r\n \r\n Sessionid的参数化步骤如下:点击进入tree模式 在需要参数化的Sessionid:1,选到1,然后右键进入create Parameter,进行参数化即可,然后应用到所有的Sessionid中即可。 以上就是LoadRunner录制的过程,比较简单,只要明确知道消息交互的格式就可以了,如果是短连接的话则发送接收一次消息就断开socket,所以需要重连,协议也不一样,短连接使用http1.0协议。 回放的时候出现mismatch的错误,接收到0byte,进行单步调试,发现连接是失败的,原因有2个: 一是回放的时候SES需要开启,录制的时候不用开启; 二是因为数据是动态的Flags= MSG_PEEK;这个标志表示不对Buf大小进行检查 lrs_receive(socket0, buf1, Flags=MSG_PEEK, LrsLastArg); http长连接脚本: #include lrs.h Action() { lrs_create_socket(socket0, TCP, RemoteHost=42:45678, LrsLastArg); lrs_send(socket0, buf0, L

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档