51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2559|回复: 3
打印 上一主题 下一主题

[原创] loadrunner winsocket 测试问题!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-12-29 21:28:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这几天一直在弄一个loadrunner的cs测试脚本,使用windows socket的cs脚本,弄了几天终于弄出点东东来。
偶的测试脚本如下:

unsigned char uc_key[9];
unsigned char pinkey[17];
unsigned char *mask = (unsigned char *) "19?2<8276:=0839;";

Action()
{
   
    char acTest[512];
    char acTest2[512];
    char* pcTest3;
    int i;
    char pinblock[17];
    char acct[26];
    char acc1[17];
    char balance[12];
    char seq_str[6];
     int i_seq=1;
    char socket_desc[10];
    int handler;
    int ret;   


    lr_load_dll("mydll.dll");

    i_seq++;
   
    sprintf(seq_str,"%.5d",i_seq);
    sprintf(socket_desc,"sock%.5d",i_seq);
    //char  *filename="1.out";
    //long  filestream;
   
    //filestream=fopen(filename,"w");
    lrs_create_socket(socket_desc, "TCP", "RemoteHost=192.168.101.79:7001", LrsLastArg);
   
   

    //生成发送的串
    sprintf(acTest,"ABCDEA");
    strcat(acTest,"1205");
    strcat(acTest,"RQK");
    strcat(acTest,seq_str);
    strcat(acTest,seq_str);
    strcat(acTest,"0000000000000000O");
   

    //指定发送的串
    lrs_set_send_buffer (socket_desc, acTest, strlen(acTest));
    //发送,由于之前运行了lrs_set_send_buffer,所以这里的"buf0"参数无效

    lrs_send(socket_desc, "buf0", LrsLastArg);

    lrs_set_recv_timeout2(0,0);
    //接收返回的串
    lrs_receive(socket_desc, "buf1", LrsLastArg);
    //把返回的串放到变量中
    pcTest3=lrs_get_received_buffer (socket_desc, 0, -1, NULL);

    //fprintf(filestream,"recv=[%s]\n",pcTest3);
    memcpy(uc_key,pcTest3+18,8);
    unshuffle_key(uc_key);
    //lr_output_message("recv=[%s]\n",pcTest3);
    lr_output_message("uc_key=[%s]\n",uc_key);
    memset(pinkey,0,sizeof(pinkey));

    for (i = 0; i < strlen(uc_key);i++)
    {
        pinkey[2*i]='3';
        pinkey[2*i+1]=uc_key;
    }
    lr_output_message("pinkey=[%s]\n",pinkey);
    //对返回串中的数据操作
    if( (strncmp(pcTest3,"ABP",3))==0 )
    {
        //modadd((unsigned char *)uc_key,(unsigned char *)"35827629",8);
        //lr_output_message("next uc_key=[%s]\n",uc_key);
        //String header = "ABCDEA" + terminalid + tranactioncode + seq + seq + "0124011200000002C";
        //header 6+4+3+5+5+17
      
        i_seq++;
        sprintf(socket_desc,"sock%.5d",i_seq);
        sprintf(seq_str,"%.5d",i_seq);
        sprintf(acTest2,"ABCDEA");
        strcat(acTest2,"1205");
        strcat(acTest2,"INQ");
        strcat(acTest2,seq_str);
        strcat(acTest2,seq_str);
        strcat(acTest2,"0000000000000000O");
        //sprintf(acTest,"ABCDEA1205INQ09046090460000000000000000O");
        //track3,track2  104+37
        strcat(acTest2,"999551002600007435017=1561560000000000000003000000214000000001=000000000000=000000000000=0000000274060009551002600007435017=00002202740600000");
        //pinblock
        strcpy(pinblock,"1205000006111111");
        encrypt_pinblock((unsigned char *)pinblock,pinkey);
        lr_output_message("encrypted pinblock=[%s]\n",pinblock);
        strcat(acTest2,pinblock);
        //account
        strcpy(acct,"9551002600000000115000000");
        memcpy(acc1,acct+2,16);
        shuffle((unsigned char *)acc1, (const unsigned char *)uc_key,(const unsigned char *)mask, 16);
        strcpy(acct,"95");
        memcpy(acct+2,acc1,16);
        memcpy(acct+2+16,"5000000",7);
        strcat(acTest2,acct);

        lrs_create_socket(socket_desc, "TCP", "RemoteHost=192.168.101.79:7001", LrsLastArg);

    //    handler=lrs_get_socket_handler(socket_desc);
    //    lr_output_message("handler=[%d]\n",handler);

        ret=lrs_set_send_buffer (socket_desc, acTest2, strlen(acTest2));
        lr_output_message("ret=[%d]\n",ret);

        lrs_send(socket_desc, "buf0", LrsLastArg);

        lrs_set_recv_timeout2(0,0);

        lrs_receive(socket_desc, "buf1", LrsLastArg);
        pcTest3=lrs_get_received_buffer (socket_desc, 0, -1, NULL);
        //lr_output_message("recv2=[%s]\n",pcTest3);
        memset(balance,0,sizeof(balance));
        memcpy(balance,pcTest3+59,11);
        unshuffle((unsigned char *)balance, (const unsigned char *)uc_key, (const unsigned char *)mask, 11);
        lr_output_message("balance=[%0.2f]\n",atof(balance));
        lrs_free_buffer(pcTest3);
      
    }
    //fclose(filestream);

    return 0;
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2006-12-29 21:29:40 | 只看该作者
刚才的脚本如果执行一次是没问题的,可是当我执行2次的时候,就运行报错了。
错误日志如下:
Virtual User scrīpt started
Starting action vuser_init.
vuser_init.c(7): lrs_startup(257)
Ending action vuser_init.
Running Vuser...
Starting iteration 1.
Starting action Action.
Action.c(54): lrs_create_socket(sock00002, TCP, ...)
Action.c(68): lrs_set_send_buffer(sock00002, buf, 40)
Action.c(71): lrs_send(sock00002, buf0)
Action.c(73): lrs_set_recv_timeout2(0, 0)
Action.c(75): lrs_receive(sock00002, buf1)
Action.c(77): lrs_get_received_buffer(sock00002, buf_p, size_p)
Action.c(83): uc_key=[65040238]
Action.c(91): pinkey=[3635303430323338]
Action.c(115): encrypted pinblock=[??>>5006>=;9<?><]
Action.c(126): lrs_create_socket(sock00003, TCP, ...)
Action.c(131): lrs_set_send_buffer(sock00003, buf, 222)
Action.c(132): ret=[0]
Action.c(134): lrs_send(sock00003, buf0)
Action.c(136): lrs_set_recv_timeout2(0, 0)
Action.c(138): lrs_receive(sock00003, buf1)
Action.c(138): Mismatch (expected 26 bytes, 261 bytes actually received)
Action.c(139): lrs_get_received_buffer(sock00003, buf_p, size_p)
Action.c(144): balance=[0.00]
Action.c(145): lrs_free_buffer(buf_p)
Ending action Action.
Ending iteration 1.
Starting iteration 2.
Starting action Action.
Action.c(54): lrs_create_socket(sock00002, TCP, ...)
Action.c(68): lrs_set_send_buffer(sock00002, buf, 40)
Action.c(71): lrs_send(sock00002, buf0)
Action.c(73): lrs_set_recv_timeout2(0, 0)
Action.c(75): lrs_receive(sock00002, buf1)
Action.c(77): lrs_get_received_buffer(sock00002, buf_p, size_p)
Action.c(83): uc_key=[65479956]
Action.c(91): pinkey=[3635343739393536]
Action.c(115): encrypted pinblock=[732>1>1:=9;3300:]
Action.c(126): lrs_create_socket(sock00003, TCP, ...)
Action.c(131): lrs_set_send_buffer(sock00003, buf, 222)
Action.c(131): Error: C-interpreter run time error: Action.c (131):  Error -- memory violation : Exception ACCESS_VIOLATION received.
Action.c(131): Notify: CCI trace: Action.c(131): LrsSetSendBuffer(0x00b70024 "sock00003", 0x00b7022e "ABCDEA1205INQ00003000030000000000000000O...", 222)
.
Action.c(131): Notify: CCI trace: Compiled_code(0): Action()
.
Ending Vuser...
Starting action vuser_end.
vuser_end.c(7): lrs_cleanup()
Ending action vuser_end.
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2006-12-30 09:15:57 | 只看该作者
没看明白!多少给点指示吧脚本大概是什么功能
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2007-1-5 15:35:46 | 只看该作者
发送一个报文向服务器取密钥,然后根据密钥加密一些重要字段,再发送其他交易。
socket短连接通讯方式,其实就是模拟atm机器上的交易。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-25 19:34 , Processed in 0.074915 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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