Loadrunner windows sockets性能测试脚本开发视频完成

来源:互联网 发布:游戏优化器 编辑:程序博客网 时间:2024/05/01 04:08

转自云层http://www.51testing.com/index.php?uid-104-action-viewspace-itemid-212043

由于回到深圳事情颇多,而且又有各种活动,今天花了点时间终于把拖欠多时的视频做出来了。

这次的工程很大,整个视频长达54分钟,估计看的人都要睡着了,不过我写的时候可是很辛苦的,所以要大家耐心的看调试和分析过程了。

这个项目是使用的loadrunner8.0自带的flights项目制作的,脚本可以在LR9上运行,但环境无法迁移到其他平台。

土豆这次就不更新了,太大了。

下载地址:

ftp://user1:user1@www.atstudy.com/cloud/sockets.swf

关键技术:

sockets协议的录制,请求的分析,如何做参数化,如何做关联

脚本:

由于在录制视频的时候不小心写错了几个东西导致有些订单生成和用户信息有问题了,这里再说明一下,视频中的有几个小bug

1.在插入订单的时候错误的把订单号和航班号写反了,导致订单一直插不进去,郁闷啊

2.在插入用户时,忘了把关联到得新用户编号写回来,导致用户id一直是261

3.在查询用户是否存在时,忘了参数化当前用户名,导致该用户一直都是存在的,不会触发新建用户id逻辑

---------------------------华丽的分割线,下面是主代码,data.ws文件和完整脚本看附件-------------------------

splitchartoparamarr(char *x,char *y,char *paramarrname)
//该函数的作用是将输入的字符串x,通过y符号分割,保存到paramarrname参数数组中
{
 extern char * strtok(char * string, const char * delimiters );
char charstring[1000],separators[100],paramname[110];
//定义输入字符串,字符串长度为1000,分隔符长度为100,参数元素名长度110
char * token;
 int i=0;//初始化计数器
 char paramcount[10],paramarrcount[110];
//定义生成参数数组的编号及参数名

 strcpy(charstring,x); 
 strcpy(separators,y);

token = (char *)strtok(charstring, separators);
// Get the first token

if (!token) {
    lr_output_message ("No tokens found in string!");
    return( -1 );
    }

while (token != NULL ) { // While valid tokens are returned

//lr_output_message ("%s", token );//输入分割值
  i++;
     sprintf(paramname,"%s_%d",paramarrname,i);
  //lr_output_message ("%s", paramname );//输出参数名
  lr_save_string(token,paramname);

    token = (char *)strtok(NULL, separators); // Get the next token
  
    }
 sprintf(paramarrcount,"%s_count",paramarrname);
 itoa(i,paramcount,10);
 lr_save_string(paramcount,paramarrcount);

}

 

/*********************************************************************
 * Created by Mercury Interactive Windows Sockets Recorder
 *
 * Created on: Wed Apr 07 13:23:40
 *********************************************************************/

#include "lrs.h"


vuser_init()
{
 int randno;
 char flystring[100];
    lrs_startup(257);

    lrs_create_socket("socket0", "TCP", "RemoteHost=computer:3456",  LrsLastArg);

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

    lrs_receive("socket0", "buf1", LrsLastArg);

    lr_think_time(11);

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

    lrs_receive("socket0", "buf3", LrsLastArg);

    lr_think_time(14);

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

    lrs_receive("socket0", "buf5", LrsLastArg);

 lrs_save_searched_string ("socket0", LRS_LAST_RECEIVED, "param1", "LB/BIN=##", "RB/BIN=##", 1,0, -1);

 splitchartoparamarr(lr_eval_string("<param1>"),"#","flyno");
//该函数的作用是将输入的字符串x,通过y符号分割,保存到paramarrname参数数组中

 randno=rand()%atoi(lr_eval_string("<flyno_count>"))+1;
 sprintf(flystring,"<flyno_%d>",randno);
 lr_save_var(lr_eval_string(flystring),4,0,"flysno");
    lr_think_time(23);
 

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

    lrs_receive("socket0", "buf7", LrsLastArg);

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

    lrs_receive("socket0", "buf9", LrsLastArg);
 lrs_save_searched_string ("socket0", LRS_LAST_RECEIVED, "orderid", "LB/BIN=##", "RB/BIN=##", 1,0, -1);

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

    lrs_receive("socket0", "buf11", LrsLastArg);
 lrs_save_searched_string ("socket0", LRS_LAST_RECEIVED, "userid", "LB/BIN=##", "RB/BIN=##", 1,0, -1);
 if(atoi(lr_eval_string("<userid>"))==-1)
 {
      lrs_send("socket0", "buf12", LrsLastArg);
      lrs_receive("socket0", "buf13", LrsLastArg);
      lrs_send("socket0", "buf14", LrsLastArg);
      lrs_receive("socket0", "buf15", LrsLastArg);
   lrs_save_searched_string ("socket0", LRS_LAST_RECEIVED, "userid", "LB/BIN=##", "RB/BIN=##", 1,0, -1);
      lrs_send("socket0", "buf16", LrsLastArg);
      lrs_receive("socket0", "buf17", LrsLastArg); 
}

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

    lrs_receive("socket0", "buf19", LrsLastArg);

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

    lrs_receive("socket0", "buf21", LrsLastArg);

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

    lrs_receive("socket0", "buf23", LrsLastArg);

    return 0;
}

 

原创粉丝点击