操作教程|使用MeterSphere对恒生UFX系统进行压力测试

恒生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系统的证券交易接口和股票期权交易接口的压力测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/434172.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【CSP试题回顾】201604-1-折点计数

CSP-201604-1-折点计数 解题代码 #include <iostream> #include <vector> #include <algorithm> using namespace std;int n, pointSum;int main() {cin >> n;vector<int>myData(n);for (int i 0; i < n; i){cin >> myData[i];}// 统…

LinkedList集合源码分析

LinkedList集合源码分析 文章目录 LinkedList集合源码分析一、字段分析二、构造函数分析三、方法分析四、总结 看到实现了Deque 就要联想到这个数据结构肯定是属于双端队列了。Queue 表示队列&#xff0c;Deque表示双端队列。 一、字段分析 LinkedList 字段很少&#xff0c;就…

Python影像分析-根据卫星图像估算土壤湿度

在这篇文章中,我将讨论用于估计土壤湿度的最流行的模型,称为梯形模型。该模型源自卫星,这些卫星以一致的比例和分辨率提供地表温度和植被指数,例如归一化植被指数 (NDVI)。” 目录 🌟简介📥下载 Sentinel-3 表面温度和 NDVI 图像📉绘制 NDVI 与 LST(梯形空间)的图�…

Python爬虫:设置随机 User-Agent

Python爬虫&#xff1a;设置随机 User-Agent 在Python中编写爬虫时&#xff0c;为了模拟真实用户的行为并防止被服务器识别为爬虫&#xff0c;通常需要设置随机的User-Agent。你可以使用fake-useragent库来实现这一功能。首先&#xff0c;你需要安装fake-useragent库&#xff…

【C++专栏】C++入门 | 命名空间、输入输出、缺省参数

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;C专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家 点赞&#x1f44d;收藏⭐评论✍ C入门 | 命名空间、输入输出、缺省参数 文章编号&#xff1a;C入门 / 0…

基于stm32的电压采样与质量检测系统

150基于stm32的电压采样与质量检测系统[proteus仿真] 电压检测系统这个题目算是课程设计和毕业设计中常见的题目了&#xff0c;本期是一个基于stm32的电压采样与质量检测系统 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】&#xff0c;赞赏任意文章 2&#xf…

【递归搜索回溯专栏】专题一递归:汉诺塔

本专栏内容为&#xff1a;递归&#xff0c;搜索与回溯算法专栏。 通过本专栏的深入学习&#xff0c;你可以了解并掌握算法。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;递归搜索回溯专栏 &#x1f69a;代码仓库&#xff1a;小小unicorn的代…

java性能调优面试,程序员Java视频

前言 很多人在打算自学Java的时候或许都没有思考过Java的应用方向&#xff0c;市场需要什么样的人才&#xff0c;企业对你有什么要求等等一系列问题&#xff1b;或许你只听说这个行业薪资高…然后懵懵懂懂的上路&#xff0c;不得要害。 对于零基础来学习Java&#xff0c;你或…

Go 简单设计和实现可扩展、高性能的泛型本地缓存

相信大家对于缓存这个词都不陌生&#xff0c;但凡追求高性能的业务场景&#xff0c;一般都会使用缓存&#xff0c;它可以提高数据的检索速度&#xff0c;减少数据库的压力。缓存大体分为两类&#xff1a;本地缓存和分布式缓存&#xff08;如 Redis&#xff09;。本地缓存适用于…

正向代理和反向代理区别

正向代理和反向代理的区别&#xff1a; 特点正向代理反向代理位置位于客户端和目标服务器之间位于目标服务器和客户端之间代理对象代理服务器代表客户端发送请求到目标服务器代理服务器代表目标服务器接收客户端的请求配置客户端需要手动配置代理服务器客户端不需要知道代理服…

阻塞队列、生产者消费者模型、阻塞队列的模拟实现等干货

文章目录 &#x1f490;生产者消费者模型&#x1f490;模拟实现阻塞队列&#x1f4a1;注意点一&#x1f4a1;注意点二 阻塞队列是一种“特殊”的数据结构&#xff0c;但是也遵循队列的“先进先出”特性&#xff0c;它的特殊在于&#xff1a; 阻塞队列的两个特性&#xff1a; 1…

Java精品项目--第7期基于SpringBoot的驾校后台管理系统的设计分析与实现

项目使用技术栈 JavaSpringBootMavenMySQLMyBatisShiroHTMLVue.js&#xff08;非前后端分离&#xff09;… 项目截图

vue3组件通信有哪几种方式?

文章目录 一、父子通信1、props2、模板引用ref和defineExpose 二、跨层级传递数据provid和inject 一、父子通信 1、props 父组件中给子组件绑定属性子组件内通过props选项接收 子传父&#xff0c;通过defineEmits,先声明事件&#xff0c;再emit触发 2、模板引用ref和define…

LabVIEW高精度天线自动测试系统

LabVIEW高精度天线自动测试系统 系统是一个集成了LabVIEW软件的自动化天线测试平台&#xff0c;提高天线性能测试的精度与效率。系统通过远程控制测试仪表&#xff0c;实现了数据采集、方向图绘制、参数计算等功能&#xff0c;特别适用于对天线辐射特性的精确测量。 在天线的…

HashMap 源码解读

文章目录 一、什么是HashMap HashMap 是一种快速的查找并且插入、删除性能都良好的一种 K/V键值对的数据结构&#xff0c;key唯一&#xff0c;value允许重复它基于哈希表的 Map 接口实现&#xff0c;是常用的 Java 集合之一&#xff0c;是非线程安全的。 二、HashMap的数据结…

使用MockJS模拟数据,如何获取入参?

场景描述 在使用MockJS进行模拟数据的时候&#xff0c;会遇到一种场景&#xff0c;当参数1时&#xff0c;展示A类数据&#xff0c;当参数B时&#xff0c;展示B类数据&#xff0c;为了实现这场景&#xff0c;那就要在模拟数据时拿到请求参数&#xff1f; 实现逻辑 mock方法的…

【详识C语言】自定义类型之三:联合

本章重点 联合 联合类型的定义 联合的特点 联合大小的计算 联合&#xff08;共用体&#xff09; 联合类型的定义 联合也是一种特殊的自定义类型 这种类型定义的变量也包含一系列的成员&#xff0c;特征是这些成员公用同一块空间&#xff08;所以联合也叫共用体&#xff09;…

【自然语言处理】【大模型】BitNet:用1-bit Transformer训练LLM

BitNet&#xff1a;用1-bit Transformer训练LLM 《BitNet: Scaling 1-bit Transformers for Large Language Models》 论文地址&#xff1a;https://arxiv.org/pdf/2310.11453.pdf 相关博客 【自然语言处理】【大模型】BitNet&#xff1a;用1-bit Transformer训练LLM 【自然语言…

OBS插件开发(二)推流实时曲线

不发视频了&#xff0c;截个图算了&#xff0c;嫌麻烦 1&#xff0c;自定义QWidget图表绘制 &#xff0c;动态更新 2&#xff0c;OBS直播帧率&#xff0c;码率监控 3&#xff0c;主要用于前端推流状况可视化&#xff0c;异常报警&#xff0c;及时性&#xff0c;无人值守直播

MySQL基础-----SQL语句之DDL数据定义语句

目录 前言 开启登录数据库 一、数据库操作 1.查询所有数据库 2.切换使用数据库 3.查询当前使用的数据库 4.创建数据库 创建一个hello数据库, 使用数据库默认的字符集。 创建一个itheima数据库&#xff0c;并且指定字符集 5.删除数据库 二、表操作 1.查询当前数据库所有…