恒生 UFX(United Finance Exchange,统一金融交换)系统(以下简称为 “UFX 系统”),是一款帮助证券公司统一管理外部接入客户的系统,该系统整体上覆盖了期货、证券、基金、银行、信托、海外业务等各类交易接口,适用于各类金融交易业务的对接。第三方系统通过使用 T2SDK(TCP 2 Software Development Kit,TCP 协议软件开发工具包),可以轻松实现和 UFX 系统的对接。
注:T2SDK 的底层采用 TCP(Transmission Control Protocol,传输控制协议)协议,所以取名为 “T2SDK”。T2SDK 以 dll(在 Windows 操作系统中)或 so(在 Linux 操作系统中)的形式提供给开发者。
MeterSphere 作为一款一站式的开源持续测试平台,采用 JMeter 作为接口测试和性能测试引擎,完全继承并延伸了 JMeter 的测试能力。本文以 UFX 系统的期货交易接口为被测对象,通过在 MeterSphere 平台导入 JMeter 的 JMX 文件,使用封装后的 T2SDK 和定制化的 JMeter 镜像对 UFX 系统进行压力测试。
一、在 JMeter 中完成 UFX 系统期货交易的接口测试
首先,调试 T2SDK,完成 UFX 系统的登录认证。该步骤可以参考恒生客户服务平台的《期货看穿式》文档,链接为:https://www.hs.net/doc/ufx/200300_400143.html。
然后,通过调试 T2SDK,进行期货报单和期货委托查询等操作。该步骤可参考恒生客户服务平台的《期货交易》文档,链接为:https://www.hs.net/doc/ufx/200300_200302.html。
接下来,需要在 UFX 系统的 T2SDK 基础上,使用 JMeter 自定义插件的方式,完成 T2SDK 的封装过程。在 JMeter 加载了自定义插件后,JMeter 的接口测试界面如下图所示:
▲ 图 1 JMeter 接口测试操作界面 1
▲ 图 2 JMeter 接口测试操作界面 2
如图所示,在 JMeter 界面需要手动创建三个线程组,分别是 setUp 线程组、Fvip 期货、tearDown 线程组。三个线程组的具体作用如下:
■ setUp 线程组:模拟 UFX 系统客户端使用 T2SDK,与 UFX 系统服务端建立连接;
■ Fvip 期货:按照期货交易的业务流程,分别执行 331480、331481、331482、331100、338301 这五个功能号的接口请求;
■ tearDown 线程组:模拟 UFX 系统客户端使用 T2SDK,与 UFX 系统服务端断开连接。
二、在 JMeter 中完成 UFX 系统期货交易的性能测试
首先,在 JMeter 中完成 UFX 系统期货交易功能的接口测试后,将 “setUp 线程组” 和 “tearDown 线程组” 保持默认设置,执行一次请求。
然后,设置 “Fvip 期货” 线程组的用户并发数和压测时长等参数,执行压测任务,JMeter 的压测界面如图 3 所示。
▲ 图 3 JMeter 压力测试操作界面
三、在 MeterSphere 中使用定制化 JMeter 镜像,对 UFX 系统的期货交易接口开展压力测试
首先,在 MetereSphere 使用的 JMeter 镜像基础上,加入 JMeter 自定义插件和 UFX 系统的相关配置文件,构建一个定制化的 JMeter 镜像。
▲ 图 4 定制化 JMeter 镜像的打包过程
然后,在 MeterSphere 平台的 “修改资源池” 页面添加压测服务器的 IP 地址和端口号,并在 “镜像” 配置栏中填写准备好的定制化 JMeter 镜像。
▲ 图 5 在 “修改资源池” 页面添加针对 UFX 系统的定制化 JMeter 镜像
接下来,从 JMeter 中导出 JMX 文件,并且在 MeterSphere 平台顺序选择 “性能测试”→“测试”→“场景配置”→“加载 JMX 文件”,将 JMX 文件导入至 MeterSphere 的 “性能测试” 模块。
▲ 图 6 在 “场景配置” 选项卡中加载 JMX 文件
在性能测试模块的 “测试” 选项卡中,从 “场景配置” 选项卡切换到 “压力配置” 选项卡,填写压测所需的参数,点击 “保存并执行” 按钮。
▲ 图 7 在 “压力配置” 选项卡中填写压测参数
最后,在 MeterSphere 的 “性能测试” 模块中,从 “测试” 选项卡切换到 “报告” 选项卡,即可查看 UFX 系统期货交易接口的性能测试报告。
▲ 图 8 查看 UFX 系统期货交易接口的性能测试报告
四、总结
借助 JMeter 提供的 Java Sampler(Java 取样器)和自定义的 Java 类,可以完成对 T2SDK 的封装,从而实现对 UFX 系统的扩展支持。本文的操作演示说明了 MeterSphere 平台具备良好兼容 JMeter 自定义插件的能力。
注:本文在 MeterSphere 开源持续测试平台进行的压测过程,同样适用于 UFX 系统的证券交易接口和股票期权交易接口的压力测试。