51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 5362|回复: 6

[原创] 关于使用LoadRunner做Socket协议的测试问题

[复制链接]

该用户从未签到

发表于 2009-5-14 09:08:59 | 显示全部楼层 |阅读模式
1、未解决问题:
首先,我们的产品是TETRA,需要使用LoadRunner对中心控制单元、中心交换单元、调度单元等模块进行测试,这些单元之间的通信是靠发送PDU数据包来实现的,使用LoadRunner模拟PDU数据包对这些单元进行交互。现在出现的问题是,LoadRunner是靠模拟客户端向服务器端发送数据来实现协议包的交换的,这是一个硬伤,也就是说LoadRunner需要自己主动向服务器发送连接请求,才可以创建套接字。而我们的测试需求里肯定包括了模拟服务器端来测试客户端的功能,其实也不是什么服务端和客户端,可以理解为对等模块,我需要LoadRunner被动地先接收来自其它模块的请求,再返回响应数据。
2、目前使用的方案:
使用函数lrs_accept_connection()来侦听请求,但从未实现过,因为旧的套接字本身就是请求连接的套接字,就算创建新的套接字,这个套接字的属性将跟旧的是一模一样的,这不是我需要的。除此之外,曾经考虑过开发一套需要的函数,能够在LoadRunner里实现所需要的功能,但是觉得难度太大。
请高手大虾们赐教,在下感激不胜!
回复

使用道具 举报

该用户从未签到

发表于 2009-5-14 10:01:50 | 显示全部楼层
你得先创建一个监听socket来接收连接。

然后让开发修改一下测试程序,主动与监听进行一下连接,这样就可以录制脚本了。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2009-5-14 10:28:26 | 显示全部楼层
我遇到过你的需求,我的实现方法是想服务器主动推空白报文包(或者发心跳包),然后把等待时间设置非常长。。当然这个办法非常笨。不过可行!
注:心跳包只是防止断开的。没有具体毛细。。。

[ 本帖最后由 Fin 于 2009-5-14 10:30 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2009-5-14 11:54:32 | 显示全部楼层
目前为什么可以先发送数据再接收数据,就是因为我可以明确对方(服务器)的端口,而客户端的端口是可变的,且我的lrs_create_socket函数创建的端口也是可变的,每回放一次就会变一次,不信可以使用获取本地端口的函数获取看看。所以要先接收数据,除非是远端端口我很明确,创建好套接字后,就可以接收数据了,这一点我个人认为不容易实现。为了实现自动化,我不能回放一次就修改一次脚本,如果能够像PERL语言那样可以获取远端端口,那问题就很容易解决。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-9-19 10:58:18 | 显示全部楼层
遇到同样的问题了,现在需要先主动收取服务端发来的一条socket,然后从里面取到一个id,再给服务端返回这个id,现在做关联根本抓不到这条消息,因为服务端有可能在任意时间发这条消息过来。
有大侠能解决这个问题吗~~
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-9-20 23:28:47 | 显示全部楼层
问题总算搞定了。。。哎,对于这个问题网上竟然没有一个正解。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2014-5-24 15:12:38 | 显示全部楼层
回复 6# shifengboluo

解决的方法写出来,分享给大家都学习学习。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-3-19 15:25 , Processed in 0.084012 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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