使用LoadRunner的socket协议对C/S系统测试的实例

发表于:2010-12-20 14:13

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:leey    来源:51Testing软件测试论坛

  最近看到有些同学在找C/S方面的性能测试资料,似乎网上LR的资料还是web方面的居多,所以把自己之前测过的一个项目的脚本共享出来,供需要的同学们做入门参考。

  首先简单说下被测系统,这是一个轻量级的即时消息通讯(IM)平台,用c++开发的,Loadrunner里面使用的是Socket协议,其实大部分C/S项目的测试都是要用Socket协议的。

  下面开始介绍脚本,完整的脚本不算小,需要的tx请下载附件,下面贴的Action函数只是一个极大简化后的基本框架,或者说socket测试的基本思路。

  在这个实例脚本中,主要测试的是这个IM系统的响应速度、事务处理速度、最大处理容量等指标。

  脚本实现的主要功能:

  1.登录

  2.查询在线用户列表

  lrs_send("socket0", "buf9", LrsLastArg);

  3.自定义函数从响应的数据包中分析用户列表

  void Save_RecvBuffer(char *socketID, char *SaveBuffer)

  void Gen_onlineUser(char outputUser[100][20], int *outputNum, char *LastRecvBuffer)

  4.组装要发送的数据包

  lrs_set_send_buffer("socket0", msg, strlen(msg) );

  5.随机向其他在线用户发消息

  lrs_send("socket0", "buf6", LrsLastArg);

  6.登出

  总结

  通常来讲,Socket协议的性能测试主要就是数据包的收发和数据内容的分析、处理,性能分析也是集中在数据包的发送和接收时间上。

  LR里面Socket协议不支持自动关联,所以要自己手动关联,可以用lrs_save_param_ex()等函数。

  这个例子中所收发的数据都是不加密的,如果是加密后的二进制数据包的话,就可能要用lrs_length_send()来代替lrs_send()函数了。

  写的比较简单和混乱 ,大家凑或看吧,呵呵。

  //下面是简化后的脚本/////////////////////////////////////////////////

Action()
{

//集合点
lr_rendezvous("Login");

//事务点
lr_start_transaction("Logintest");

//创建socket
lrs_create_socket("socket0", "TCP", "RemoteHost=10.20.5.213:8001",  LrsLastArg);

//发包
lrs_send("socket0", "buf0", LrsLastArg);

//收包
lrs_receive("socket0", "buf1", LrsLastArg);

//事务结束点
lr_end_transaction("Login", LR_AUTO);

//断开socket
lrs_disable_socket("socket0", DISABLE_SEND_RECV);
lrs_close_socket("socket0");

return 0;
}

  【资料下载】 (请点击右键选择另存为)

原帖地址:http://bbs.51testing.com/viewthread.php?tid=97531&extra=&page=1

版权声明:本文由会员leey首发于51Testing软件测试论坛。

原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号