紧接上篇【rainbowzhou 面试3/101】技术提问,上篇从整体到局部,介绍了一下大数据存储以及测试人员如何进行测试的内容;本篇将介绍大数据处理以及处理过程中的测试方法,希望对大家有所帮助。
什么是ETL?ETL测试怎么做?
ETL(Extracting-Transfroming-Loading)是指从任何外部系统提取、转换、加载数据到目标地,这是数据集成过程的三大基本步骤。ETL测试即对从源数据到目标地转换过程中的数据进行检查,跟踪整个ETL过程的效率和速度,尤其是业务逻辑转换的实现验证与数据质量的检查是重中之重!
大数据处理方式
大数据处理方式通常可以分为两类,一类是批处理(也叫离线处理),常见的批处理引擎为MapReduce;另一类是流处理(也称之为实时处理),常见的流处理引擎有SparkStreaming(微批处理)和Flink。
什么是离线处理? 离线处理即离线数据处理一般采用T 1的方式,就是每天凌晨处理前一天的数据。对离线数据的处理一般使用Sqoop、MapReduce等。
什么是实时处理? 实时处理即实时接入的数据,一般是指分钟级别以下的数据。通常对实时数据的处理一般可分为实时计算、实时存储、实时展示和实时分析等。
离线处理场景及测试要点
离线处理ETL过程主要集中在离线数据仓库。因此针对不同数仓层级,测试的重点也不相同。 数据仓库通常可分为:数据接入层、数据明细层、数据汇总层、数据集市层、数据应用层、临时层和公共维度层等。其中数据明细层和数据汇总层合称为数据仓库层。
详细说明如下:
- 数据接入层(Operation Data store ,ODS):也称为贴源层,它和源业务系统在数据上是同构的,通常是从业务系统数据库直接导入,无须过多的校验处理,而且这一层数据粒度是最细的;
- 数据明细层(Data Warehouse Detail ,DWD):该层是业务数据与数据仓库的隔离层,主要进行去除脏数据,去重、去噪、异常数据处理、规则转换、维度补全和数据标准化等操作,并对数据进行一定程度的整合,将相同主题的数据汇总;
- 数据汇总层(Data Warehouse Service):对各个表进行Join操作,产生业务所需的完整数据。该层主要存放明细事实宽表、聚合事实宽表等;
- 数据集市层(Data Warehouse Market,DWM):该层是面向主题组织数据的,数据组织结构通常呈星状或雪花状。从数据粒度来讲,该层数据是轻度汇总级别的数据,已经不存在明细数据了,而从广度来说,它包含了所有业务数据;
- 数据应用层(Data Application):在该层中,数据高度汇总,数据粒度较大,但不一定涵盖所有业务数据,可能只是数据集市层数据的一个子集;
对应的测试范围及重点
数仓层级 | 测试范围 | 测试重点 |
---|---|---|
数据接入层 | 表、字段 | 表命名规范检查,字段信息检查,数据质量检查,数据完整性检查 |
数据明细层 | 表、字段 | 表命名规范检查,字段信息检查,数据质量检查,数据完整性检查,数据清洗逻辑检查 |
数据汇总层 | 表、重点字段 | 表命名规范检查,字段信息检查,指标计算、内在逻辑对应关系检查 |
数据应用层 | 表、重点字段 | 表命名规范检查,字段信息检查,指标计算、内在逻辑对应关系检查 |
实时处理场景及测试要点
实时处理ETL过程分为原始数据采集、实时数据处理、数据存储、数据应用。 详细说明如下:
- 原始数据采集:可理解为上游原始数据采集,可通过Flume采集,传输到Kafka或MQ进行提供数据;
- 实时数据处理:是数据流转路径的核心,根据业务需求对原始数据进行处理并转发。
- 数据存储:保存处理后的数据。对于业务功能,可以在这里获取需要使用的数据。
- 数据应用:数据的具体使用。可以对数据进行业务层面的处理以及可视化展示
测试要点如下:
- 链路数据的一致性,重点在于确保整个链路的数据处理和消费情况一致,可按时间、频率进行一致性校验;
- 链路数据的完整性,重点在于数据从源头到处理、再到前端展示,不会出现因为数据处理、存储和展示异常导致数据丢失;
- 链路数据的及时性,重点在于链路过程中的传输时间和处理时间是否按照约定的格式与规范;
- 数据的消费性能,重点在于对业务数据进行压力测试,以得出其消费性能;
- 数据的可恢复性,若系统异常中断,在系统恢复后,数据能否正常恢复流转;
- 数据的流转监控,通过监控及时发现数据流转过程中出现的问题。
以上讲述了ETL常见的两种测试场景,以及离线及实时处理的测试点,从测试的角度说明了对离线及实时处理的过程应如何展开测试。通过上述方法,结合实际项目经验,掌握不同类型ETL测试重点来保证测试整体的质量。
看完今天的分享对你是不是有所启发呢,有任何想法都欢迎大家后台私信我,一起探讨交流。