微信号:SSE-TechService

介绍:上海证券交易所为证券公司、基金管理公司等市场参与者及相关行业机构提供交易技术支持与服务,包括日常交易技术支持、技术交流研讨、市场调查反馈、证券信息技术知识库、测试等服务.

【交易技术前沿】证券行业大数据测试技术初探 \/ 樊芳

2018-07-12 16:05 上交所技术服务


本文选自《交易技术前沿》总第三十期文章(2018年3月)

樊芳
上交所技术有限责任公司技术开发总部质量保障部
ffan@sse.com.cn

摘要:随着移动互联网、物联网、云计算的快速发展,全球数据呈现爆炸式增长。证券行业交易数据也呈现出TB级增长趋势,大数据引发了新一轮技术发展的浪潮,同时也给软件测试带来了新的挑战。本文结合证券交易领域大数据测试经验,梳理了证券行业在当前大数据形势下主要使用的测试方法以及测试范围,研究了其发展前景,并分享了笔者在大数据测试道路上的心得体会。
关键词:大数据 证券行业 测试技术初探

1概述

随着移动互联网、物联网、云计算的快速发展,全球数据出现爆炸式增长。根据研究表明全球信息总量每过两年,就会增长一倍。2011年全球被创建和被复制的数据总量1.8ZB。相较2010年同期上涨超过1ZB,到2020年这一数值将增长到35ZB[1]。然而,大数据快速发展的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行深度分析,从海量数据中挖掘出对证券行业发展有重要价值的信息。针对传统数据库或者数据仓库存在存储空间有限、处理速度较慢、难以快速从价值密码低的大量数据中挖掘实时信息等问题[2],构建适应于证券交易领域的大数据处理平台已经迫在眉睫。由于海量数据的数据量及其分布式的特点,大数据处理技术与传统的方式具有很大的不同,从而为软件测试带来新的挑战。鉴于此情况,为提高大数据信息系统测试质量和效率,提出有效的测试策略已经成为大数据测试领域热点话题。
综上所述,本文结合证券行业大数据平台构建过程的测试要点,对大数据环境下测试领域的技术初探与实践进行了概要介绍。本文第2节主要阐述大数据测试领域的关键技术相关工作,第3节详细介绍证券行业大数据测试的策略。最后,总结本文主要探究内容,展望未来大数据测试领域发展前景。

2大数据测试的关键技术

2.1大数据的特点

随着大数据时代的来临,数据量呈现TB级别增长,大数据分析系统往往由服务器集群组成,目前可达到成千上万个核的集群[3]。集群需要具备7*24小时的正常运行能力,并且有完善的容错能力,集群的管理需要简单有效。此外,集群具备高性能特点,包括毫秒级的资源调度与负载管理。

2.2大数据处理流程

目前大数据领域处理大数据流程图[4]如图1所示:

图1 大数据处理流程

大数据处理流程分为5个阶段:
(1)大数据采集:利用多个数据库来接收发自客户端户的数据,并且用户可以通过这些数据库来进行简单的查询和处理工作,处理结构化数据和非结构化数据常用工具为DataHub。另外,用户日志数据通常使用Flume进行,并使用Kafka进行日志数据的搬移工作。
(2)大数据导入/预处理:将采集端多种结构化数据库和非结构化数据库导入大型分布式数据库,并且可以在导入基础上做一些简单的清洗和预处理工作,目前业界常用的工具有sqoop和Datax。
(3)大数据统计分析:将海量的来自前端的数据快速导入到一个集中的大型分布式数据库或者分布式存储集群,利用分布式技术来对存储于其内的集中的海量数据进行普通的查询和分类汇总等,以满足大多数常见的分析需求。
(4)大数据挖掘:比较典型的有基于聚类的K-means、用于统计学习的SVM等算法,该过程的难点和挑战在于挖掘算法的复杂性,涉及计算的数据量和计算量都非常大。
(5)大数据分析:获得数据用来进行大数据分析,或者使用BI工具产生报表供使用者作出正确有利的决策,这是大数据处理技术要解决的根本问题。该阶段的特点和挑战是在具体业务背景大数据下,如何保障业务的顺畅,有效地管理分析数据,如何针对具体业务逻辑作出决策。

2.3大数据测试方法

Hadoop是目前最热门的大数据处理架构,其数据处理架构及其测试要点如图2所示,下面从功能性测试和非功能性测试两方面来说明大数据测试方法。

图2 Hadoop数据处理框架及其测试要点

2.3.1 功能性测试

大数据功能主要涉及大数据分析应用,包括文件读取与访问控制、元数据操作、锁操作等功能。功能测试需要覆盖根据大数据系统设计实现的API和功能点。功能测试的回归测试所占比例较高,采用自动化测试方法进行测试,同时使用手工测试进行补充,自动化测试工具推荐使用Selenium与testNg的方式实现。

2.3.2 非功能性测试

由于大数据面向具体行业的应用,除了功能性测试,在整个大数据处理框架下需要进行非功能性测试,主要包块性能测试、容错性测试、稳定性测试、数据一致性测试与压力测试。
(1)性能测试:性能是评估一个大数据分析系统的最为关键的维度,大数据系统性能主要包括吞吐量、任务完工时间、内存利用率等多个指标,可以反映大数据分析平台的处理能力、资源利用能力等性能。可以通过大数据平台性能监控器来监测运行状态性能指标和瓶颈问题,性能测试采用自动化方式进行,测试系统在不同负载情况下的性能。
(2)容错性测试:当故障发生时,大数据分析系统应该在进行恢复的同时继续以可接受的方式进行操作,在发生错误时某种程度上可以继续操作,需要根据应用场景来设计解决方案和具体部署,然后手动进行测试。
(3)稳定性测试:大数据分析系统通常都是不间断长期运行,稳定性的重要性不言而喻。稳定性测试主要验证系统在长时间运行下,包括系统是否仍然能够正常运行、功能是否正常。稳定性测试通常采用自动化方式进行,可以采用LoadRunner等工具对测试系统产生负载,同时使用功能测试方法验证功能的正确性。
(4)数据一致性测试:数据一致性是指文件系统中的数据与从外部写入前的数据保持一致,即写入数据与读出数据始终是一致的。 数据一致性能够表明文件系统可以保证数据的完整性,不会导致数据丢失或数据错误,这是文件系统最基本的功能。这部分测试可以应用编写脚本进行自动化测试,LTP也提供了数据一致性的测试工具。
(5)压力测试:大数据分析系统的负载能力总是存在上限,当系统过载时,系统就有可能出现性能下降、功能异常、拒绝访问等问题。压力测试就是要验证系统在一定压力下的运行情况,包括数据多客户端、高OPS压力、高IOPS吞吐量压力,系统是否仍然能够正常运行、功能是否正常。

3证券领域大数据测试策略

3.1大数据测试概述

目前针对证券交易领域存在存储空间不足、海量数据挖掘速度缓慢、数据结构类型单一的问题,证券交易领域结合自身实际发展情况,构建符合证券交易领域的大数据基础设施平台。证券交易领域采用华为FusionInsight HD平台构建企业级大数据存储管理平台。华为FusionInsight HD平台是基于Apache开源社区软件进行功能增强的企业级大数据存储、查询和分析的统一平台。大数据华为平台产品HDManager架构图如4所示。测试过程中侧重验证架构图中组件功能与性能是否达到使用需求,检测架构功能是否完善。值得注意的是,架构组件性能测试与稳定测试相关,重点需要测试平台消息队列处理机制、日志信息采集何种速度不停增长、组件间聚合性能与稳定性、消息被索引和使用的速度、MapReduce作业、查询性能、搜索等。

图3 大数据华为平台产品HDManager架构图

依据FusionInsight HD大数据统一管理平台提供的功能,并结合证券交易领域目前发展特点和需求,证券交易领域设计了符合发展趋势的大数据平台架构,大数据平台结构设计图如图4所示:

图4 大数据平台架构设计图

依据上述大数据平台架构设计图,考虑到证券交易领域监管机构纽带传输数据的情况,大数据平台建设需要将传统数据库或数据仓库数据迁移到大数据平台中,迁移过程充分考虑了架构自身特点及证券交易公司规章制度。大数据平台建设的测试任务主要涉及两个方面:数据迁移测试、基于大数据平台的ETL测试。

3.2数据迁移测试技术

目前数据迁移测试范围主要包括但不仅限于以下部分:元数据及建模检查、数据迁移程序的准确性及健壮性、历史数据迁移结果验证。
元数据及建模验证的步骤如下:当传统数据库数据按照一定顺序装入异构分布式数据完成后,检查所有相关表、视图的属性,如库名、表名等与原始数仓一致,检查表中字段的数量、列名、类型、长度、精度与TD数仓一致,命名规范等。检查元数据文件大小是否、文件路径、文件名称是否与预期一致。
数据迁移程序测试策略按照程序操作手册配置源文件位置、大数据平台分布式数据库连接,执行脚本,检查程序日志,导入完毕后,启动数据比对程序。健壮性测试主要为设计输入错误场景,可根据应急处置文档清理数据并重新装载或覆盖数据。
历史数据迁移部分,自动化程序验证数据表的策略分三个方面:数据总量验证、字段校验、明细数据验证。
(1)数据总量验证:编写脚本获取所有迁移数据表及其记录数。对于每一张表,查询大数据平台中该表的所有记录数,与原始数据库中数据的总条数进行比较。特别需要注意的是,需要根据数据表业务逻辑含义编写测试用例,例如切片表按照时间字段、拉链表开闭链字段、全增全量表等。
(2)字段校验:对于每张表的数值字段,通过sum,avg,groupby等聚合函数编写测试用例,对各种字符类型的数据进行分类,并使用自动化程序对迁移前后的数据进行验证。
(3)明细验证:对于每张表通过编写适当的测试用例来查询迁移后的数据明细,验证大数据平台的明细结果是否与迁移前数据一致。
通过上述三步设计合理的测试用例来进行数据校验,可检测出数据在迁移过程中发生的变化,以及快速验证出数据迁移的错误信息。考虑到迁移数据量级巨大,两个异构数据库之间的查询比对工作量较大,使用数据导出文件比较。根据笔者的经验,比较高效率的方式是首先计算数据文件每行的hashCode值,然后依据结果值判断数据迁移结果是否准确,同时需要设置每个数据表的主键字段,以便进行数据迁移结果不一致情况的问题定位。

3.3大数据ETL测试

3.3.1大数据ETL

大数据ETL即从联机事务数据库中提取数据,进行转换处理,匹配分布式数据库模式,然后载入至分布式数据库中。ETL是Extract-Transform-Load的缩写(提取-转换-载入),它是一个完整的从源系统提取数据,进行转换处理,载入至分布式数据仓库的过程。Extract提取有效的数据,Transform将提取的数据转换为大数据平台ELK支持的模式/格式。构建keys:一个key是一个或多个数据属性的惟一标识实例,key的类型可以是主键(primary key)、外键(foreign key)、替代键(alternate key)、复合键(composite key)以及代理键(surrogate key)。这些key只允许数据仓库进行维护管理,且不允许其他任何实体进行分配。在提取好数据后,则进入数据清理流程。数据清理流程对提取数据中的错误进行标识和修复,解决不同数据集之间的冲突问题,使数据保持一致,以便数据集能用于目标数据仓库。通常,通过转换系统的处理,我们能创建一些元数据(meta data)来解决源数据的问题,并改进数据的质量。Load将转换后的数据载入数据仓库。最后一步为构建聚集:创建聚集对数据进行汇总并存储数据至表中,以改进终端用户的查询体验。ETL处理流程图6如下所示:

图6 大数据ETL流程图

3.3.2ETL测试策略

依据上述ETL测试流程图,测试人员在从事ETL测试时,还有两份文档是ELT测试人员需要实时备有的。ETL映射表:一个ETL映射表包含源和目的地表的所有的信息,包括每个列及其引用表等约束关系。ETL测试人员需要更为优美的SQL查询语句,因为在ETL测试各阶段可能需要编写具有多个连接的查询语句来验证数据。ETL映射表为数据验证编写查询时提供大量的有用的信息。源、目标数据库模式:该模式应该便于验证映射表中的所有细节,为源和目的地之间转换时的各个阶段的数据验证提供基础信息。在此基础之上,测试人员根据ETL测试场景进行划分,并设计相应的测试用例,通常情况下划分ETL测试场景和设计测试用例可通过表1完成。

表1 ETL测试场景和测试用例

3.3.3ETL测试流程

大数据ETL测试是为了确保从源到目的地数据经过业务转换完成后是准确的。同时它还涉及数据的验证,即从源到目的地数据各个不同阶段验证数据。与其他测试过程类似,ETL也需要经历不同的测试阶段,ETL测试过程主要分为以下五大阶段,如图7所示。

图7 大数据ETL测试流程图

4.总结

随着大数据时代的来临,信息的积累与处理为证券行业的发展注入了新的活力。而由于海量数据的数据量及其分布式的特点,大数据处理技术与传统数据存储方式的不同给软件测试带来新的挑战。本文抛砖引玉,结合笔者的测试经验,对大数据测试的相关技术进行了系统化的梳理,主要涉及大数据数据如何验证、大数据ETL测试策略等问题,在大数据测试道路上进行了探索。希望在以后的工作中,充分利用大数据框架实现大数据测试自动化,并对人工智能领域的大数据测试方向进行深层次探索与研究。

参考文献:

[1] 陈如明. 大数据时代的挑战、价值和应对策略[J]. 移动通信, 2012(17):1415.
[2]蔡立志, 阎婷. 大数据背景下软件测试的挑战与展望[J]. 计算机应用与软件, 2014(2):5-8.
[3]FAN Jian-qing, LIU Han. Statistical analysis of big data on pharmacogenomics[J]. Advanced Drug Delivery Reviews, 2013, 65(7): 987-1000.
[4]代亮, 陈婷, 许宏科. 大数据测试技术研究[J]. 计算机应用研究, 2014, 31(6):1606-1611.


 
免责声明


本公众号内容仅供参考。对任何因直接或间接使用本公众号内容而造成的损失,包括但不限于因有关内容不准确、不完整而导致的损失,本公众号不承担任何法律责任。如有问题请反馈至tech_support@sse.com.cn。

-------------------------- 上海证券交易所为证券公司、基金管理公司等市场参与者及相关行业机构提供交易技术支持与服务,包括日常交易技术支持、技术交流研讨、市场调查反馈、证券信息技术知识库、测试等服务。

点击"阅读全文"了解详情

 
上交所技术服务 更多文章 【通知】关于开展综合业务平台轻型化通信服务器全网测试的通知 【交易技术前沿】金融行业的舆情信息监测 \/ 杨珍良 债券质押式协议回购 【通知】关于证券信息技术研究发展中心(上海)2018年联合研究课题承接结果的通知 【交易技术前沿】OPENCL 开发FPGA应用的路径探索 \/ 邹经纬,马辉,钟浪辉,陈敏,陈坚,
猜您喜欢 手游如何做性能测试? 关于Serverless架构及平台选择,你知道多少? 百度真的更懂中文吗? 网卡收包流程 学习 Python 几个坑要注意!