tcp 服务器 性能测试,LoadRunner测试TCP协议服务器性能

/*********************************************************************

* Created by Mercury Interactive Windows Sockets Recorder

*

* Created on: Tue Dec 30 16:04:06

*********************************************************************/

#include "lrs.h"

#include "def.h"

Action()

{

int sendLoginCount=0,sendCrossCount=0;

int loginIndex,loginIndex2;

char* clientId = guid_gen();

char clientId2[100];

char* clientId3;

int clientIdlen;

char* loginSrc = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n\n"

"    $ClientId\n"

"    $IP\n"

"    $Port\n"

"    \n"

"    \n"

"";

char* loginStr;

int loginStrLen;

char* loginStrLenHex;

char loginStrLenStr[5];

char send_loginHeader[100]="\\x12$Len\\x00\\x010";

char* send_loginHeaderf;

char send_loginStr[1500]="";

//添加路口相关字符串

char* crossSrc= "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n\n"

"    $ClientId\n"

"    $CrossId\n"

"";

char* send_addCrossHeader = "\\x12$Len\\x00\\x02";

char* crossId = lr_eval_string("");

char* crossStr;

char send_crossStr[1700];

char crossStrLenStr[5];

int crossStrLen;

char* send_addCrossHeaderf;

int crossAddIndex,crossAddIndex2;

strcpy(clientId2,lr_eval_string(clientId));

clientId3 = clientId;

//登陆数据

loginStr = strreplace(loginStr,loginSrc,"$ClientId",clientId,strlen(loginSrc));

loginStr = strreplace(loginStr,loginStr,"$IP","127.0.0.1",strlen(loginStr));

loginStr = strreplace(loginStr,loginStr,"$Port","9300",strlen(loginStr));

lr_output_message("loginStr:%s",loginStr);

loginStrLen = strlen(loginStr)+1;

//lr_output_message("loginStrLen:%d",loginStrLen);

//itoa(loginStrLen,loginStrLenStr,16);

sprintf(loginStrLenStr, "%X", loginStrLen);

//lr_output_message("loginStrLenStr:%s",loginStrLenStr);

if(strlen(loginStrLenStr)==2)

{

char tmpH[5];

strcpy(tmpH,loginStrLenStr);

strcpy(loginStrLenStr,"\\x00\\x00\\x00\\x");

strcat(loginStrLenStr,tmpH);

}else{

char tmpH[5];

char tmpD[5];

strcpy(tmpH,loginStrLenStr);

strcpy(tmpH+1,"\0");

strcpy(tmpD,loginStrLenStr+strlen(loginStrLenStr)-2);

strcpy(loginStrLenStr,"\\x00\\x00\\x0");

strcat(loginStrLenStr,tmpH);

strcat(loginStrLenStr,"\\x");

strcat(loginStrLenStr,tmpD);

//lr_output_message("tmpH:%s",tmpH);

//lr_output_message("tmpD:%s",tmpD);

}

//lr_output_message("loginStrLenStr:%s",loginStrLenStr);

send_loginHeaderf = strreplace(send_loginHeaderf,send_loginHeader,"$Len",loginStrLenStr,strlen(send_loginHeader));

//lr_output_message("send_loginHeader:%s",send_loginHeaderf);

strcpy(send_loginStr,send_loginHeaderf);

//lr_output_message("send_loginStr:%s",send_loginStr);

for(loginIndex=0,loginIndex2=strlen(send_loginStr);loginIndex

{

char loginHex[5];

sprintf(loginHex,"\\x%.2X",loginStr[loginIndex]);

//strcat(send_loginBody,loginHex);

strcat(send_loginStr+loginIndex2,loginHex);

}

strcat(send_loginStr+loginIndex2,"\\x0A");

lr_output_message("send_loginStr:%s",send_loginStr);

//创建TCP连接

lr_start_transaction("login");

lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=127.0.0.1:1234",LrsLastArg);

for(sendLoginCount = 0;sendLoginCount < 10;sendLoginCount++)

{

//lr_output_message("send_loginStr:%s",send_loginStr);

lr_output_message("sendLoginCount:%d",sendLoginCount);

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

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

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

{

char* login_recv;

int login_recvlen;

int i;

lrs_get_last_received_buffer("socket0",&login_recv,&login_recvlen);

if(login_recvlen!=0)

{

lr_end_transaction("login", LR_AUTO);

lr_output_message("%s",login_recv+15);

//添加路口

lr_output_message("clientId3:%s",lr_eval_string(clientId2));

crossStr = strreplace(crossStr,crossSrc,"$ClientId",clientId3,strlen(crossSrc));

crossStr = strreplace(crossStr,crossStr,"$CrossId",crossId,strlen(crossStr));

lr_output_message("crossStr:%s",crossStr);

crossStrLen = strlen(crossStr)+1;

sprintf(crossStrLenStr,"%X",crossStrLen);

if(strlen(crossStrLenStr)==2)

{

char tmpH[5];

strcpy(tmpH,crossStrLenStr);

strcpy(crossStrLenStr,"\\x00\\x00\\x00\\x");

strcat(crossStrLenStr,tmpH);

}else{

char tmpH[5];

char tmpD[5];

strcpy(tmpH,crossStrLenStr);

strcpy(tmpH+1,"\0");

strcpy(tmpD,crossStrLenStr+strlen(crossStrLenStr)-2);

strcpy(crossStrLenStr,"\\x00\\x00\\x0");

strcat(crossStrLenStr,tmpH);

strcat(crossStrLenStr,"\\x");

strcat(crossStrLenStr,tmpD);

//lr_output_message("cross_tmpH:%s",tmpH);

//lr_output_message("cross_tmpD:%s",tmpD);

}

//lr_output_message("crossStrLenStr:%s",crossStrLenStr);

send_addCrossHeaderf = strreplace(send_addCrossHeaderf,send_addCrossHeader,"$Len",crossStrLenStr,strlen(send_addCrossHeader));

//lr_output_message("send_addCrossHeaderf:%s",send_addCrossHeaderf);

strcpy(send_crossStr,send_addCrossHeaderf);

//lr_output_message("send_crossStr:%s",send_crossStr);

for(crossAddIndex=0,crossAddIndex2=strlen(send_crossStr);crossAddIndex

{

char crossHex[5];

sprintf(crossHex,"\\x%.2X",crossStr[crossAddIndex]);

//strcat(send_loginBody,loginHex);

strcat(send_crossStr+crossAddIndex2,crossHex);

}

strcat(send_crossStr+crossAddIndex2,"\\x0A");

lr_output_message("send_crossStr:%s",send_crossStr);

//lr_output_message("send_loginStr:%s",send_loginStr);

lr_start_transaction("addCross");

for(sendCrossCount=0;sendCrossCount<10;sendCrossCount++)

{

lr_output_message("send_crossStr:%s",send_crossStr);

lr_output_message("sendCrossCount:%d",sendCrossCount);

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

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

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

{

char* cross_recv;

int cross_recvlen;

lrs_get_last_received_buffer("socket0",&cross_recv,&cross_recvlen);

if(cross_recvlen!=0)

{

lr_end_transaction("addCross", LR_AUTO);

lr_output_message("cross_recv:%s",cross_recv+15);

break;

}else{

//lr_end_transaction("addCross", LR_FAIL);

}

}

}

if(sendCrossCount>10)

{

lr_end_transaction("addCross", LR_FAIL);

}

break;

}else{

//lr_end_transaction("login", LR_FAIL);

}

}

}

if(sendLoginCount>10)

{

lr_end_transaction("login", LR_FAIL);

}

while(1)

{

char* recv;

int recvlen;

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

lrs_get_last_received_buffer("socket0",&recv,&recvlen);

if(recvlen!=0)

{

lr_output_message("recv:%s",recv+15);

}else{

}

}

lrs_close_socket("socket0");

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: LoadRunner是一款常用的应用性能测试工具,它可以模拟多种负载情况,测试应用在不同负载下的性能表现,帮助开发人员发现和解决应用性能问题。LoadRunner支持多种协议,包括HTTP、HTTPS、FTP、SMTP等,可以对Web应用、桌面应用、移动应用等进行测试。它可以模拟多种用户行为,包括登录、搜索、购物、下单等,可以对应用的各个方面进行测试,包括响应时间、吞吐量、并发用户数等。LoadRunner是一款功能强大的性能测试工具,可以帮助开发人员提高应用的性能和稳定性。 ### 回答2: App性能测试主要用于评估和优化移动应用程序的性能。针对单个用户或并发用户进行测试,以确定应用程序在不同负载情况下的响应时间、资源消耗以及稳定性。LoadRunner是一种广泛使用的性能测试工具,可帮助开发人员和测试者发现和解决应用程序的性能问题。 LoadRunner具有以下特点: 1. 能够模拟真实的用户负载,通过测试真实的客户体验来评估应用程序的性能。 2. 可以对移动应用程序的各个方面进行测试,包括网络延迟、数据传输速度、CPU使用率、内存使用率、用户界面响应速度等。 3. 支持多种移动设备的测试,如iOS和Android系统,以及对不同网络情况的测试,如WIFI、3G、4G等。 4. 可以自动化测试过程,减少手动测试工作量,提高测试效率。 5. 可以生成详细的测试报告,包括测试结果、负载情况、性能指标等,以便分析和解决性能问题。 在使用LoadRunner进行App性能测试时,需要遵循以下步骤: 1. 确定测试目标和指标,例如响应时间、并发用户数、负载测试时间等。 2. 设计测试方案,包括脚本编写、场景设计、负载生成等。 3. 运行测试并监控测试过程,以确保测试质量和准确性。 4. 分析测试结果,确定性能问题和优化方案。 5. 报告测试结果和优化方案,并分享测试经验和教训。 总之,LoadRunner是一种有效的App性能测试工具,可以帮助开发人员和测试者检测和解决应用程序的性能问题,提高应用程序的质量和稳定性。 ### 回答3: 近年来,随着移动互联网技术的飞速发展,越来越多的企业开始关注并利用APP来推广、销售和服务等方面,而APP的性能对于其使用体验、用户留存以及企业的形象都具有重要影响,因此,APP性能测试也成为了各大企业不可或缺的环节之一。 而在APP性能测试中,LoadRunner作为业界最主流和最成熟的性能测试工具,其强大的性能测试功能和智能化的测试分析能力,受到越来越多企业的青睐。 相比于其他性能测试工具,LoadRunner最大的优势就在于其强大的承受能力。它可以模拟高达数万用户同时访问和使用APP的情况,从而给APP服务器带来强大的压力和负载,发现和分析APP的瓶颈和瓶颈,提供调优建议,进而保障APP在高并发场景下的稳定性和性能表现。 同时,LoadRunner还拥有智能化的测试分析能力,能够对测试结果进行深入的分析和解读,提供详细的测试报告和测试分析,帮助企业及时发现和解决性能问题,保障APP在上线后的稳定性和用户体验。 由此可见,对于企业而言,APP性能测试是一项非常重要和必须的环节,而LoadRunner作为业界最主流和最成熟的性能测试工具,其强大的性能测试功能和智能化的测试分析能力,将帮助企业实现对APP性能的全面测试和保障。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值