本主题介绍 ISO 8583 客户端工具,该工具允许通过各种通道和消息打包配置发送和接收 ISO 8583 消息。
本章包含:
了解 ISO 8583 客户端工具
ISO 8583 是一种用于交换持卡人使用支付卡进行的电子金融交易的系统的标准。然而,在测试 ISO 8583 标准时出现了一些挑战:
- 一致性:ISO 8583 存在许多变体和本地实现。
- 可维护性:现有的业务关键型、与支付相关的系统正在发展,需要维护和测试。
Parasoft SOAtest 提供一个全面的测试框架,减轻这些挑战,并允许您为基于 ISO 8583 的系统建立一致的、现代的质量管理方法,使标准成为整个 SOA/IT 质量治理计划的一部分。您还可以利用 SOAtest的生产力框架(如数据源、测试套件、丰富的数据验证等),并构建一个持续的回归测试基础设施,以安全地改进您的电子支付系统。
Parasoft SOAtest ISO 8583 工具提供了一个易于使用的 GUI,可用于不清楚的二进制消息格式。您可以使用 ISO 8583 工具:
- 模拟发送和接收 ISO 8583 消息的客户端(例如,card acquires)
- 使用消息字段配置的可视接口配置消息
- 提供可定制的消息头
- 为基于 ISO 8583 的系统创建回归测试,使用丰富而灵活的数据验证
- 将 ISO 8583 测试链成多个步骤的场景,以执行复杂的金融事务
- 易于配置,发送和接收任何结构化的,固定长度的二进制消息,不一定是基于 ISO 8583
配置 ISO 8583 工具
工具选项可以在 ISO 8583 工具配置面板中配置,可以通过双击 Test Case Explorer 中的工具节点来访问该面板。
工具设置选项卡
在 Tool Settings 选项卡中,币可以配置以下基本工具设置:
- Name: 指定工具的名称。
- Host and Port: 指定将消息发送到的目标系统。
Message Exchange Pattern: Expect Synchronous Response: 指定 SOAtest 是否接收响应。如果选择 Expect Synchronous Response, SOAtest 发送消息并接收响应。 如果没有选择 Expect Synchronous Response, SOAtest 只发送消息不接收响应。
- Connection Settings: 指定所选传输协议的保持连接或关闭连接。
- Keep-Alive connection: 如果选中,当前测试将打开 TCP 连接,以便后续使用相同主机和端口配置的 ISO 8583 工具测试可以重用它。例如,后续的测试将重用相同的套接字连接。
- Close connection (default): 如果选中,那么接下来的测试将打开一个新的 TCP 连接(新的套接字)。
- Message Type (MTI) Selector: 指定要接受或忽略的消息类型指示符值,使您能够微调工具处理的消息(例如,过滤掉系统消息)。使用文本字段指示希望接受或忽略的特定 MTI(s) 或 MTI 范围。例如,您可能只想忽略 0800,或者指定一个范围,比如 0100-0199。
- Message Fields: 指定 ISO 8583 消息字段打包。可用的选项基于 jPOS 提供的配置(www.jpos.org)。每个配置都建立消息中允许的字段 Id,以及它们应该具有的数据类型和长度。
- 从下拉菜单选择 Custom 将使您能够浏览到用于描述特定消息配置的 packager 文件。自定义打包器是基于 JPOS 的 XML 文件。有关此类 packager 文件的示例,请参阅 www.jpos.org。在撰写本文时,可以在 http://jpos.svn.sourceforge.net/viewvc/jpos/trunk/jpos6/modules/jpos/cfg/packager/找到各种 XML 打包器配置。
- Transport Channel: 确定如何发送和接收消息的协议配置。这些选项影响如何处理 ISO 8583 消息头和消息拖车、如何发送和接收整个消息长度值,以及可能的其他因素。基于 jPOS (www.jpos.org)和其他常见配置中可用的通道,可以从几个通道选项中进行选择。
从下拉菜单中选择 Custom 允许您提供自己的通道实现。启用下拉菜单旁边的文本字段中的自定义结果,并可以指定完全限定的类名。自定义通道类需要实现接口
org.jpos.ISOChannel
或继承org.jpos.BaseChannel
。通道实现的示例可在 http://jpos.svn.sourceforge.net/viewvc/jpos/trunk/jpos6/modules/jpos/src/org/jpos/iso/channel/中找到。一旦编写了这样一个自定义通道类,就需要将其添加到 SOAtest 类路径中。关于如何将 jars 添加到 SOAtest 类路径的更多消息,请查阅 System Properties Settings。
- Scripting Hook: 允许在发送前对 ISO 8583 消息进行自定义操作。脚本钩子中使用的方法期望三个参数的顺序如下:
ISOMsg
,ISOChannel
和Context
。使用 ISO 8583 工具输入区域中提供的内容初始化ISOMsg
对象之后,以及在发送消息之前,执行钩子脚本。有关 Javadocs 和相关的 jPOS 类,请参阅 http://jpos.org/doc/javadoc/index.html
输入类型选项卡
在 Input Type 选项卡中,您可以配置 ISO 8583 消息(在 Message 子选项卡中),以及可选数据头(在 Headers 选项卡中)。
消息子选项卡
可以在 Message 选项卡中配置以下选项:
- 输入模式:Form ISO 8583 视图是配置请求消息的另一种(也是首选的)GUI(Literal XML 和 Form XML 视图也可用)。在 Form ISO 8583 视图中可以使用 Add 按钮添加新字段。选择一个或多个字段(选择多个字段时按住 CTRL),然后单击 Remove 以删除所选字段。当选择一个字段时,也可以拖动它。
在任何消息视图中声明字段时,字段的顺序并不影响字段的实际发送方式。字段总是根据数字字段 ID 按升序发送。这与 ISO 8583 消息规范一致。但是,在使用脚本时,可以根据首先初始化的值来考虑顺序。有关详情,请参阅 Scripting ISO 8583 Header and Message Fields。
以下选项在 Form ISO 8583 视图中可用:- Field ID: 输入一个数值。只允许消息字段配置(或 packager 文件)声明的值。但是,可以在 packager 中声明比实际使用的字段更多的字段。
- Value: 单击特定字段值区域时,可以在 Fixed 或 Script之间进行选择。当数据源在测试中可见时,参数化也是一个可用的选项。
- Type: 允许在 String 和 Binary之间进行选择。当它被设置为 Binary时,它表示该值包含内容的十六进制文本表示,其中每两个十六进制数字表示一个字节。String 指示应根据该特定字段(消息字段配置)的消息包装程序中指定的类型解释该值。
- Description: (可选)允许您为清晰起见指定消息的描述。此选项不以任何方式影响发送的消息。
- Use Data Source: 使用空字符串排除:(只有在数据源可用时才可见。)选中此单元格中的复选框后,可以将值映射到数据源列。当测试在数据源行上执行和迭代时,它将根据该列上的数据源行是否为空,包含或排除指定的 ISO 字段。当数据源值为空时,字段将被排除。这个特性对于创建使用数据源迭代许多测试用例的回归测试非常有用,其中一些测试用例具有特定的 ISO 字段,而另一些则没有。因此,这有效地使基于数据源的字段包含成为动态的。
Literal XML 和 Form XML 视图允许以 XML 格式提供 ISO 8583 消息。除非选择了 jPOS XML 通道和 XML 打包器,否则在线上的实际消息将以二进制格式(而不是 XML)发送。消息的 XML 表示定义如下:
<isomsg> <header>{Hexadecimal representation binary content}</header> <field id="{INTEGER}" value="{STRING}" [type="binary"]/>+ </isomsg>
因此,示例消息可以类似于:<isomsg> <header>16380c18601860a186b01868fff486e0bb21</header> <field id="0" value="0100"/> <field id="2" value="5048993400009931"/> <field id="3" value="031000"/> ... <field id="128" value="0D0F030D040C0602" type="binary"/> </isomsg>
type
属性是可选的,当它的值被设置为 “binary
”时,它表示 value 属性包含内容的十六进制文本表示,其中每两个十六进制数字表示一个字节。省略type
属性将导致基于该特定字段(消息字段配置)的消息包装程序中指定的类型解释值。表单 XML 允许在出现数据源时对数据源进行参数化。
标题选项卡
标题选项卡可用于为 ISO 8583 消息配置自定义二进制头。数据头字段可以重新排列(通过拖放),并且可以使用相应的按钮添加和删除新字段。按住 CTRL 键选择多个字段,以便同时删除多个字段。按钮旁边显示的总体大小是所有字段大小的总和。
可以在 标题选项卡中配置以下选项:
- Name: 指定数据头的名称。
- Value: 单击特定字段值区域时,可以在 Fixed 或 Script之间进行选择。当数据源在测试中可见时,参数化也是一个可用的选项。
- Type: 指定数据头字段的数据类型。可用类型影响如何通过网络发送值单元格中的内容。Binary (hex) 选项指示值单元格以十六进制表示原始二进制内容,应该按原样发送。十六进制表示假设每个字节有两个十六进制数字。
- Size: 指示字段的大小。
- Exclusion: (只有在数据源可用时才可见。)选中此单元格中的复选框后,可以将值映射到数据源列。当测试在数据源行上执行和迭代时,它将根据该列上的数据源行是否为空,包含或排除指定的 ISO 字段。当数据源值为空时,字段将被排除。这个特性对于创建使用数据源迭代许多测试用例的回归测试非常有用,其中一些测试用例具有特定的 ISO 字段,而另一些则没有。因此,这有效地使基于数据源的字段包含成为动态的。
查看通讯报文
当执行 ISO 8583 测试时,通讯报文查看器将显示发送和接收消息的 XML 表示。这种表示的目的是使分析更容易;它不反映线路上的实际字节流。消息的十六进制转储(与在套接字级别捕获的转储完全相同)显示在通讯报文查看器的标题部分。
为跨测试重用提取值并创建回归控件
一旦设置了 ISO 8583 消息传递场景,就可以对响应消息应用回归控制或各种值验证特性。
若要应用回归控制,请完成以下步骤:
- 右键单击 ISO 8583 测试,并从快捷菜单中选择 Create/Update Regression Control 。这将导致附加一个 Diff 工具,并以 XML 表示形式捕获 ISO 8583 响应。您还可以使用 Add Output/Add Test 按钮来链接其他基于 XML 的验证工具,或者使用 XML 数据库来提取一个值并在随后的测试中使用它。
编写 ISO 8583 数据头和消息字段脚本
当在值单元格中选择 Script 时,可以编写自定义代码来生成字段值。这种用法的例子是加密内容或生成 MAC 值。
脚本方法将接受零个、一个或两个参数。
当声明一个参数时,它引用当前请求 ISO 8583 消息的 ISOMsg 对象表示。ISOMsg 对象的字段初始化为当前字段。
例如,如果您正在编写第十个字段的脚本,那么 ISOMsg 对象将根据这些字段值设置所有之前的 9 个字段(如果有的话)。这就是重新排列 ISO 字段的不同之处,尽管重新排列顺序并不影响发送消息的实际字段顺序。当声明第二个参数时,它将引用上下文,这允许访问环境变量、数据源值等。
有关更多详情,请查阅 SOAtest 可扩展性 API 文档。您可以通过 Parasoft> Help 菜单(查找标题为 "Parasoft SOAtest Extensibility API” 的图书)方法访问扩展框架 API 的文档。