[性能测试]:关于消费类ISO8583协议脚本的开发
一,要发送的报文,转化成16进制的,报文如下
"\x01\x52"//报文长度338
"\x60\x00\x24\x00\x00"//TPDU
"\x60\x22\x00\x17\x04\x02"//报文头
"\x02\x00"//应用数据
"\x70\x24\x06\xC0\x20\xC0\x9A\x31"//位图2,3,4,11,14,22,23,25,26,35,41,42,49,52,53,55,59,60,64
"\x19"//域2长度
"<借记卡号>"//域2 6225683621000897490 \x62\x25\x68\x36\x21\x00\x08\x97\x49\x00
"\x00\x00\x00"//域3
"\x00\x00\x00\x00\x00\x25"//域4
"<系统跟踪号>"//域11 流水号 \x02\x02\x34
"\x28\x08"//域14卡有效期 有效期不校验
"\x05\x10"//域22
"\x00\x01"//域23
"\x00"//域25
"\x12"//域26
"\x37"//域35长度
"\x62\x25\x68\x36\x21\x00\x08\x97\x49\x3D\x28\x08\x22\x01\x47\x00\x00\x01\x00"//域35 核心第二磁道是否校验 \x62\x14\x62\x21\x43\x00\x00\x88\x28\x3D\x28\x08\x22\x01\x47\x00\x00\x01\x00
"\x31\x31\x30\x30\x30\x30\x30\x31"//域41* 11000001
"\x33\x30\x36\x35\x38\x38\x32\x36\x33\x30\x30\x30\x30\x30\x31"//域42 306588263000001
"\x31\x35\x36"//域49
"\x5A\xB1\xBA\xA5\xBE\x55\xC0\xCE"//域52 PIN 核心校验
"\x26\x00\x00\x00\x00\x00\x00\x00"//域53 2带主账号的加密方式
"\x01\x38"//域55长度
"\x9F\x26\x08\x82\xCD\xFB\x9F\x42\xB3\x51\xF2\x9F\x27\x01\x80\x9F\x10\x13\x07\x01"
"\x01\x03\xA0\xA0\x04\x01\x0A\x01\x00\x00\x00\x00\x00\x16\xEB\xF0\x9B\x9F\x37\x04"
"\xF4\x3E\x4C\x87\x9F\x36\x02\x00\xF1\x95\x05\x08\x00\x04\x60\x00\x9A\x03\x17\x05"
"\x03\x9C\x01\x00\x9F\x02\x06\x00\x00\x00\x00\x00\x25\x5F\x2A\x02\x01\x56\x82\x02"
"\x7C\x00\x9F\x1A\x02\x01\x56\x9F\x33\x03\xE0\xF0\xC8\x9F\x34\x03\x02\x03\x00\x9F"
"\x35\x01\x22\x84\x08\xA0\x00\x00\x03\x33\x01\x01\x01\x9F\x09\x02\x00\x20\x9F\x1E"
"\x08\x38\x34\x36\x37\x36\x39\x35\x39\x9F\x03\x06\x00\x00\x00\x00\x00\x00"//域55 ARQC校验 交换校验IC卡芯片是否为伪芯片
"\x00\x62"//域59长度
"\x41\x32\x30\x35\x37\x30\x31\x30\x30\x32\x30\x32\x30\x32\x30\x30\x38\x38\x34\x36"
"\x37\x36\x39\x35\x39\x30\x33\x30\x30\x36\x30\x38\x38\x32\x38\x33\x30\x34\x30\x30"
"\x38\x20\x20\x20\x20\x20\x20\x20\x20\x30\x35\x30\x30\x38\x31\x37\x30\x34\x30\x32\x20\x20"//域59
"\x00\x19"//域60长度
"\x22\x00\x00\x05\x00\x05\x03\x00\x10\x00"//域60 \x22【\x00\x00\x01批次号每次测试都要改】\x00\x05\x0【3\x00\x1】0\x00 \x22\x00\x00\x01\x00\x05\x09\x00\x10\x00
"\x4D\x1B\x8D\xD9\x04\xF2\xA7\xA8"//域64 MAC 卡交换和核心都校验 如上3001此次改造点
ACTION编写的脚本如下:
#include "lrs.h" typedef long time_t;
struct _timeb
{
time_t time;
unsigned short millitm;
short timezone;
short dstflag;
};
struct _timeb SendTime ;
int toHexString(char* OutStr,char* InStr,int len);
static int ef_millitm=;
static int quchong=;
Action()
{ int rc = ;
int SndBufLen;
int RecBufLen;
char *RecBuf;
double trans_time;
int opt_value;
char tmp[]={};
char res[]={};
char ACC[]={}; ftime(&SendTime); //lr_error_message("time:%d,millitm:%d,ip:%s",SendTime.time,SendTime.millitm,lr_eval_string("<IP_PORT>")); if(ef_millitm==SendTime.millitm)
{
sprintf(tmp,"%03d%03d",(SendTime.time%),(SendTime.millitm+quchong));
quchong++;
}
else
{ sprintf(tmp,"%03d%03d",(SendTime.time%),SendTime.millitm);
quchong=;
} ef_millitm=SendTime.millitm;
//lr_error_message("SendTime.time = %d",SendTime.millitm);
//lr_error_message("SendTime.time = %d",SendTime.time%1000); toHexString(res,tmp,);
toHexString(ACC,lr_eval_string("<AC_1>"),);
//lr_error_message("tes = %s",tmp);
lr_save_string(res,"系统跟踪号");
lr_save_string(ACC,"借记卡号"); // 建立发送通道连接 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
lr_start_transaction("消费"); // 发送报文 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
lr_start_transaction("消费_发送报文");
rc = lrs_send(lr_eval_string("<p_Socket>"), "SendBuf1", LrsLastArg);
if(rc == )
{
lr_end_transaction("消费_发送报文", LR_PASS);
}
else
{
lr_end_transaction("消费_发送报文", LR_FAIL);
lr_end_transaction("消费", LR_FAIL);
lr_error_message("消费_发送报文失败;错误码是:%d;", rc);
// lrs_disable_socket(lr_eval_string("<p_Socket>"), DISABLE_SEND_RECV);
// lrs_close_socket(lr_eval_string("<p_Socket>"));
lr_exit(LR_EXIT_ITERATION_AND_CONTINUE, LR_FAIL);
}
rc = ;
//RecBuf = (char*)calloc(1024, sizeof(char));
// 接收报文 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++++++
lr_start_transaction("消费_接收报文");
rc = lrs_receive(lr_eval_string("<p_Socket>"), "ReceiveBuf1", LrsLastArg); trans_time=lr_get_transaction_duration("消费"); if(trans_time>)
{
lr_error_message("消费响应时间为:%f,请求流水号为:%s",trans_time,res);
} if((rc == )||(rc == ))
{
lrs_get_last_received_buffer(lr_eval_string("<p_Socket>"), &RecBuf, &RecBufLen); if(RecBufLen == )
{
lr_end_transaction("消费_接收报文", LR_FAIL);
lr_end_transaction("消费", LR_FAIL);
//lr_error_message("交易出错!出错的流水号是:%s",lr_eval_string("<DateTime><VuserID><Number>"));
lr_error_message("消费 未接收到返回,卡号:%s,流水号:%s",lr_eval_string("<AC_1>"),tmp);
lr_exit(LR_EXIT_ITERATION_AND_CONTINUE, LR_FAIL);
}
else if(RecBufLen != )
{
lrs_save_param(lr_eval_string("<p_Socket>"),NULL,"rsp_code_1",,);
lr_end_transaction("消费_接收报文", LR_FAIL);
lr_end_transaction("消费", LR_FAIL);
lrs_free_buffer(RecBuf); lr_error_message("消费返回报文不正确,长度:%d,流水号:%s,应答码:%s,ip:%s",RecBufLen,tmp,lr_eval_string("<rsp_code_1>"),lr_eval_string("<IP_PORT>"));
lr_exit(LR_EXIT_ITERATION_AND_CONTINUE, LR_FAIL);
}
lrs_save_param_ex(lr_eval_string("<p_Socket>"), "user", RecBuf, , RecBufLen, "ascii", "NewRecBuf");
//判断卡是否正常 需要删除
// lrs_save_param(lr_eval_string("<p_Socket>"),NULL,"rsp_code_1",74,10);
// if(strcmp(lr_eval_string("<rsp_code_1>"),"00")!= 0)
// {
// lr_error_message("出错报文定位的报文是:%s,卡号:%s,流水号:%s", lr_eval_string("<rsp_code_1>"),lr_eval_string("<AC_1>"),res);
// }
//
lrs_save_param(lr_eval_string("<p_Socket>"),NULL,"rsp_code",,);
//lr_save_var(lr_eval_string("<NewRecBuf>")+182,2,0,"ret"); //lr_error_message("======定位的报文是:%s", lr_eval_string("<rsp_code>")); if(strcmp(lr_eval_string("<rsp_code>"),"")==)
{
lr_end_transaction("消费_接收报文", LR_PASS);
lr_end_transaction("消费", LR_PASS);
}
else
{
lr_end_transaction("消费_接收报文", LR_FAIL);
lr_end_transaction("消费", LR_FAIL);
//lr_error_message("交易出错!出错的流水号是:%s",lr_eval_string("<DateTime><VuserID><Number>"));
lr_error_message("交易出错!卡号:%s,流水号是:%s",lr_eval_string("<AC_1>"),tmp);
}
}
else
{
lr_end_transaction("消费_接收报文", LR_FAIL);
lr_end_transaction("消费", LR_FAIL);
lr_error_message("消费_接收报文失败;错误码是:%d,流水号:%s", rc,res);
lrs_free_buffer(RecBuf);
lr_exit(LR_EXIT_ITERATION_AND_CONTINUE, LR_FAIL);
} lrs_free_buffer(RecBuf); return ;
} //将字符串转换成16进制 //855071 变为\x85\x50\x71
int toHexString(char* OutStr,char* InStr,int len)
{
int i=;
for(;i<len;i++)
{
if((i==)||(i%==))
{
sprintf(OutStr+*i,"%s%c","\\x",(unsigned char)InStr[i]);
}
else
{
sprintf(OutStr+*i+,"%c",(unsigned char)InStr[i]);
}
}
return ;
}
[性能测试]:关于消费类ISO8583协议脚本的开发的更多相关文章
- [性能测试]:关于MQ协议脚本开发
消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们. 银行脚本使用MQ通信的较多,下面介绍一个MQ的脚本: M ...
- Loadrunner 脚本开发-利用loadrunner开发Windows Sockets协议脚本
脚本开发-利用loadrunner开发Windows Sockets协议脚本 by:授客 QQ:1033553122 欢迎加入软件性能测试交流QQ群:7156436 实践举例 Socket服务端简单实 ...
- lr_java user协议脚本开发
1.准备工作,安装jdk,配置环境变量 lr11 jdk1.6 32位 lr12 jdk1.7 32位 注:若原已安装了jdk1.8,现要安装jdk1.7,若遇到安装好1.7并配置好环境后,在cmd中 ...
- 性能测试学习第九天_脚本编写以及controller场景
创建java脚本 环境配置: 安装jdk(lr11最高支持java1.6) 配置环境变量 在lr选择java Vuser协议 脚本结构: 一般在init中编写初始化脚本,在action中编写业务流程, ...
- 性能测试培训:WebSocket协议的接口性能之Jmeter
性能测试培训:WebSocket协议的接口性能之Jmeter poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.poptest测试开 ...
- Loadrunner11中webservice协议脚本总结
Loadrunner11中webservice协议脚本总结 简介 webservices协议是建立可交互操作的分布式应用程序的新平台,它通过一系列的标准和协议来保证程序之间的动态连接,其中最基 ...
- loadrunner之WebServices协议脚本编写(三种请求模式)
以天气预报网站为例:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl 一.web_service_call模式 步骤如下 ...
- LR回放https协议脚本失败:[GENERAL_MSG_CAT_SSL_ERROR]connect to host "XXX" failed:[10054] Connection reset by peer [MsgId:MERR-27780]
最近做一个负载均衡项目的性能测试,使用LR录制脚本协议为https协议,回放脚本时出现报错: [GENERAL_MSG_CAT_SSL_ERROR]connect to host "XXX& ...
- LoadRunner录制HTTPS协议脚本
学习LoadRunner录制HTTPS协议脚本,其实是一个意外的收获.当我拿到要测试的URL时,我像以前的步骤一样录制脚本,但是录制结束后,发现并没有生成脚本,开始以为是LoadRunner的原因,我 ...
随机推荐
- iOS密码输入框的实现
[iOS密码输入框的实现] 就是一个UITextField,把属性 UITextField.secureTextEntry设置为Yes即可.此种UI效果为iOS默认效果.
- CoreDNS for kubernetes Service Discovery
一.CoreDNS简介 Kubernetes包括用于服务发现的DNS服务器Kube-DNS. 该DNS服务器利用SkyDNS的库来为Kubernetes pod和服务提供DNS请求.SkyDNS2的作 ...
- 20169205实验三 敏捷开发与XP实践
20169205实验三 敏捷开发与XP实践 实验内容及步骤 (一)敏捷开发与XP基本知识 敏捷开发(Agile Development)是一种以人为核心.迭代.循序渐进的开发方法. 一项实践在XP环境 ...
- visualstudio 2013 mysql entityframework :实体模型无法添加,闪退
发现电脑中安装的mysql-connector-net,版本为6.9.8 1.卸载此版本 2.重新安装mysql-connector-net 6.8.3 3.注意web.config中版本 4.注意项 ...
- HRBUST1310 火影忍者之~鸣人 2017-03-06 16:01 104人阅读 评论(0) 收藏
火影忍者之-鸣人 火影忍者的男主角漩涡鸣人,因为身上封印着邪恶的九尾妖狐,无父无母的他受尽了村人的冷眼与歧视,他下定决心要成为第六代火影,让所有人都认同他的存在,火影是动漫火影忍者中主人公鸣人所在的国 ...
- OpengGL中图形绘制先后问题
OpengGL中图形绘制先后问题 在opengl中,场景绘制总有个先后的顺序,也有个程序先后的问题,图形程序在前在后,对最终的图形的影响如何? (1)设置图中的点(蓝色)与线条(浅蓝)z分量都是0,如 ...
- Oracle E-Business Suite R12.2的新技术特点
Oracle公司的系统研发开发与执行效率,让人不得不佩服.从2008年1月收购BEA到现在短短几年时间,就把Bea WebLogic产品融合到了Oracle公司自己的原研发产品之庞大的Oracle E ...
- Oracle EBS 初始化用户密码
---修改密码,并且将限制用户下次登录的时候(第一次登录),强制要换一个新的口令: ---此过程可以完全模拟我们在标准用户的Form里面初始化用户的密码的动作! ---最后要说明的是,这个处理过程 ...
- [C#]DES再一例(转)
public class Encrypt { internal string ToEncrypt(string encryptKey, string str) { try { byte[] P_byt ...
- Sharepoint安装的几处注意事项
0.sharepoint自带组件安装,无需另下载安装 1.必须安装域(不安装会提示sharepoint 指定的用户是本地账户) 2.域安装后需要在sharepoint设置的数据库账号具有域权限及高级权 ...