随着敏捷测试的盛行,接口测试方式在测试流程中所占比重日益增长,同时在DevOps过程中亦是不可或缺的一部分。目前接口测试的报文类型很多种,像比较常见的JSON、XML等报文类型,这些报文的详细资料在网上有很多,这里就不详细说明了,今天主要为大家介绍一种常见于银行和金融机构等使用的报文——8583报文。

打开网易新闻 查看更多图片

8583报文在金是融业赫赫有名的,在网上大家可以查到很多关于它的资料,但是对于一个新手来说,理解起来还是有相当难度的,本文从报文结构、解析方法等方面详细介绍了8583报文的使用方法,希望给使用和测试的网友提供一些帮助。

1.简介

8583报文是入网机构与中国银联信息处理中心系统之间进行联机交易时使用的报文,是一个国际标准的包格式。此报文包括交易报文的结构、格式以及报文域,基本是由64个字段域、最多128个字段域组成,每个域都有个性化的规定,并有定长与变长之分。

2.报文结构

2.1报文结构说明

交易报文主要包含四个部分,依次是TPDU、报文头、位图、数据域。其结构如图1所示:

图1

2.2 TPDU

TPDU,全称是Transport Protocol Data Unit,是指传送协议数据单元。代表从一个传输实体发送至另一个传输实体的消息,其结构TPDU = ID(N2)+ 目的地址(N4)+ 源地址(N4),长度为5个字节。

2.3报文头

报文头主要记录了应用类别定义、软件总版本号等信息,其结构报文头 = 应用类别定义(N2)+ 软件总版本号(N2)+ 终端状态(N1)+ 处理要求(N1)+ 软件分版本号(N6),长度为6个字节。

2.4位图

位图是8583报文中最关键的内容,就像一个台复杂仪器总控制器,它可以准确地定位哪些报文域会出现在报文中。位图区可以有一个位图也可以包含两个位图,位图个数的选择根据交易类型而定,位图一定义的是数据域2到数据域64,位图二定义的是数据域66到数据域128。如将位图的第一位设为‘1’,表示使用是两个位图(128个域),否则表示只使用基本位图(64个域)。

2.5数据域

数据域构成了报文的主体,每个数据域代表的意义都不相同。域数据的编码格式分为三种,分别是:BINARY编码,BCD编码,ASCII编码;域数据的长度也分为三种情况,分别是:固定长度,2位变长+域实际数据,3位变长+域实际数据。关于具体每个域的实际作用、使用方法可参考《中国银联银行卡联网技术规范 第2部分 报文接口规范》。

2.6示例报文解析

为了方便对8583报文的理解,我们来分析一段示例报文,具体报文内容如下:

0059600045000060011100000001007024048000C080111662596600000267

61030000000000000001000000230401200630303033303733343130353538

343034353131303133353135360011140000010000393437463535453791

(1)报文长度

0059表示整体报文长度,用两个字节来显示,换算结果是89个字节。

(2)TPDU

6000450000表示的是TPDU,长度为5个字节。

(3)报文头

600111000000为报文头,长度是6个字节,其中:60表示磁条卡金融支付类应用;01表示软件版本号;1标志终端状态;1标识为处理要求;000000是保留使用位。

(4)消息类型

0100表示消息类型,为授权类请求。

(5)位图

7024048000C08011表示位图,通过解析后如下所示:

从解析出来的内容看,解析结果是64位二进制数据,位图中为1的位置即代表相应的域,所以使用到的具体数据域从左到右分别是第2域,第3域,第4域,第11域,第14域,第22域,第25域,第41域,第42域,第49域,第60域,第64域。接下来根据中国银联银行卡联网技术规范逐个介绍一下具体数据域的划分和具体含义。

(6)域2

166259660000026761是2号域的内容,表示的是用户的主账号。其中前两位16表示的是数据长度,6259660000026761表示的是用户的实际卡号。

(7)域3

030000是3号域的内容,6位定长数字字符,表示的是交易码处理。前两位03代表支票担保,0000表示默认值。

(8)域4

000000000001是4号域的内容,12位定长数字字符,表示的是交易金额。当交易为人民币时,最后两位代表的是角和分,所以实际表示金额为0.01。

(9)域11

000000是11号域的内容,6位定长数字字符,表示的是受卡方系统跟踪号。

(10)域14

2304是14号域的内容,4位定长数字字符,表示的是银行卡的有效期。阈值是银行卡的到期年限,到2023年4月份过期。

(11)域22

0120是22号域的内容,3位定长数字字符,表示的是服务点输入方式码。因为是3位BCD码,所以组包时压缩成两个字节,在最后一位补0。

(12)域25

06是25号域的内容,2位定长数字字符,表示的是服务点条件码,06代表预授权请求。

(13)域41

3030303330373334是41号域的内容,8位定长的字母、数字和特殊字符,表示的是受卡机终端标识码。因为是ASCII编码,所以实际转换得到的数据是00030734。

(14)域42

313035353834303435313130313335是42号域的内容,15位定长的字母、数字和特殊字符,表示的是受卡方标识码,即商户代码。因为是ASCII编码,所以实际转换得到的数据是105584045110135。

(15)域49

313536是49号域的内容,3位定长的字母、数字和特殊字符,表示的是交易货币代码。因为是ASCII编码,所以实际转换得到的数据是156。

(16)域60

0011140000010000是60号域的内容,3位变长+最大100位字母、数字和特殊字符,是自定义域。011是3位变长,BCD压缩成两个字节,所以在头部添加一个0,11表示后面有11位内容,具体为14000001000,若用BCD码压缩应为6个字节,所以在最后面补上一个0。

(17)域64

3934374635354537是64号域的内容,8位定长的字母、数字和特殊字符,用来验证信息来源的合法性。因为是ASCII编码,所以实际转换得到的数据是947F55E7。

3.推荐工具

目前市场上没有相对成熟8583报文的测试工具,大多是一些8583位图和字段的解析工具,功能比较单一。下面介绍一款兼容8583报文测试解析的工具——中国农业银行擎云自动化测试平台。擎云平台是一套集业务规则分析、自动化测试案例管理、测试数据管理及测试执行管理、结果分析于一体,用于支持自动化测试的软件平台。我们可以使用该平台来实现8583报文的案例设计、测试执行和结果分析,接下来为大家简单介绍一下擎云平台的使用方法。

3.1案例录制制作

登录擎云平台后,在导航栏中选择“接口测试-案例管理”,点击案例录制按钮,在录制方式中选择“8583报文案例录制”选项,填上对应报文、案例号、案例描述等内容,然后点击案例解析。实际效果如图2所示。

打开网易新闻 查看更多图片

图2

点击案例解析后,可将报文内容按具体域解析出来,然后点击案例录制,即可完成案例的录制生成,具体内容如图3所示。

图3

3.2案例执行

案例生成后,在导航栏中选择“接口测试-接口测试执行”,将案例放入后点击执行,即可以完成测试报文的通信,具体效果如下图4、图5所示。

图4

打开网易新闻 查看更多图片

图5

3.3案例结果展示分析

完成案例执行后,在导航栏中选择“接口测试-结果展现”,选择本次案例执行结果查看,可以看到本次案例执行的结果、分析和统计内容,实际效果如下图6所示。

图6

最后邀请想提升实力的测试人一起学习

如果你的也有很多问题想要解决,你的测试职业规划也需要一点光亮,你也想跟着大家一起分享探讨,我给你推荐一个「Python自动化测试学习交流群」你缺的知识这里有,你少的技能这里有,你要的大牛也在这里……

来吧!!一起进阶自动化测试!!