ETL 快速入门指南

ETL 快速入门指南

何为ETL
ETL 与 BI 的区别
ETL测试 与 数据库测试 的区别
ETL流程
ETL测试原理
ETL测试人员应具备的能力
ETL测试的计划应该具备什么内容
ETL测试过程可能面临的问题
ETL相关测试类型
ELT测试项目周期相关内容
测试用例设计
ETL 性能测试及其关键指标
如何建立一个有效的ETL测试
如何验证数据的精确性
如何验证元数据
如何验证数据转化
如何核对数据的质量
数据完整性校验
ETL自动化工具使用

何为ETL

E extract 提取;T transform 转换;L load 加载

ETL 与 BI 的区别

1. 阶段上:ETL先BI后 2. 目的:ETL数据处理BI数据分析及可视化

ETL测试 与 数据库测试 的区别

功能 数据库测试 ELT测试
首要目标 数据验证和整合 BI报告的数据提取,转换和加载
适用系统 发生业务流的交易系统 包含历史数据且不在业务流程环境中的系统
常用工具 QTP,Selenium QuerySurge,Informatica等
业务需求 它用于集成来自多个应用程序的数据,影响严重 它用于分析报告,信息和预测
模型 ER 多维
数据库类型 通常在OLTP系统中使用 适用于OLAP系统
数据类型 具有更多联接的规范化数据 具有较少联接,更多索引和聚合的非规范化数据

ETL流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oGU47JSs-1584207304165)(media/15834615025650/15834623687107.jpg)]

ETL测试原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SDjRm8Yt-1584207304166)(media/15834615025650/15834628032459.jpg)]

Staging层:提取并存储数据
Data Integration层:转化并存储数据
Access层:处理数据生成相关信息

ETL测试人员应具备的能力

1. 理解需求:了解数据;了解数据模型 2. 数据检查: * 提取阶段:计数核对;核对记录伴随源数据;数据类型核对;过滤无效和重复数据;核对所有键到位 * 转换阶段:数据区间校验;转化前后计数核对;从缓存区到中间表的数据流校验;替代键校验 * 加载阶段:中间表到目标系统计数核对;确保键中的域值没有缺失;核对聚合值和计算量度是否被加载;确保模型视图基于目标表;核对CDC已经被应用到增量负载表;检验纬度表和历史表中的数据;核对BI报告基于实际负载和纬度表并符合所有预期结果 * 其他:整套系统的性能 3. 技能掌握:相关的ETL工具及其功能;相关的ETL数据仓库系统;测试计划和用例的设计;测相关测试文档的输出

ETL测试的计划应该具备什么内容

1. 源数据和目标数据之间计数匹配验证 2. 源数据和目标数据之间数据验证,包括:数据集成,数据区间,重复数据 3. 源数据和目标数据之间数据映射或者数据转换测试,包括:检测目标系统功能性数据 4. 终端用户测试是对测试结果生成报告并检查是否符合预期,其中包括:寻求其中差距和交叉检测数据,一份合格的报告基于布局,数据和相关的统计数据 5. 回归测试是对问题的回归验证并指导报告最终符合要求 6. 集成测试是将所有单独业务系统合并之后验证是否存在数据偏差 7. 基于数据仓库系统架构的相关验证: * 新数据仓库测试,其中关注数据源和数据仓库的创建 * 数据迁移测试 * 数据变更测试

ETL测试过程可能面临的问题

1. 数据层面:数据缺失,数据有误,数据重复,历史数据造成系统的复杂 2. 业务层面:数据查看权限获取困难,对数据所对应的业务流程不清楚,构建用例数量庞大复杂 3. 技术层面:需要掌握复杂的SQL原理,在可能没有映射信息情况下完成测试 4. 环境问题:不稳定的测试环境可能延迟开发和测试的处理

ETL相关测试类型

1. 生产验证测试:生产环境验证数据和比对源数据 2. 源系统到目标系统记数核对测试:仅仅完成源数据和目标数据的计数比对 3. 源系统到目标系统数据核对测试:在目标系统验证转化之后的数据值和关联值 4. 数据集成/区间值测试:数据从多个源系统转换和加载完成后在目标系统验证集成数据和数据的区间 5. 应用迁移测试:比较新老系统间的数据一致性 6. 数据校验测试:数据类型校验,数据长度校验,数据索引校验,数据规则校验 7. 重复数据校验测试:是否定义主键,排查映射,排查环境,排查操作环节 8. 数据转换测试:通过SQL语句遍历表的每一行数据验证转换规则以及其结果与目标系统的数据进行比对 9. 数据质量测试:数值校验,日期校验,空值校验,精确值校验,无效字符串,大小写等 10. 增值测试:严重新增和更改同步结果的情况 11. 回归测试:为添加新功能改变转换和聚合规则而对此前的数据进行的检验 12. 复核测试:缺陷修复完成后的测试 13. 集成测试:将独立的系统合并后对其整体进行测试 14. 前端测试:对前端所有部分进行验证,包括值域,计算和汇总 15. 数据备份恢复测试:模拟系统在及其恶劣的情况下能由备份系统来接管并保证数据不丢失,以便系统恢复后可以还原

ELT测试项目周期相关内容

1. 理解和确认需求 2. 评估测试所需时间 3. 根据需求纬度输出测试计划 4. 根据场景输出测试用例 5. 完成用例评审并进行准备工作 6. 执行用例 7. 输出结论和相关报告

测试用例设计

用例场景 用例说明
数据结构 主要验证源和目标数据的类型,长度,格式,列名是否正确
验证映射文档 涉及变更日志,维护数据类型、长度、转换规则等
验证限制条件 确认所有限制条件被正确的使用在预期的表中
数据一致性校验 检验是否滥用约束条件、长度,数据类型相关的属性
数据完整性校验 检验数据加载情况,记录计数情况,边界值,主键唯一性
数据正确性校验 检验数据的值,拼写,精确值,空值,非唯一性
数据转换校验 验证入参是否有预期的结果,是否父子关系数据是否被建立,数值范围是否符合要求,数据类型是否符合数据模型
数据质量校验 数值校验,日期校验,精确值校验,空置校验等
空值校验 检验空值和非空提示
重复值校验 验证主键和其他列是否存在重复
日期值校验 有效时间校验,时间格式校验,脏数据和空值校验
数据完整性校验 差集无匹配,交集计数匹配独立源,差集无匹配交集计数少于独立源计数表有重复数据
其他场景 校验源源系统未提取重复数据,这过程需要维护一系列SQL语句
数据清楚 移除从加载到中间层的无用数据

ETL 性能测试及其关键指标

性能测试步骤如下: 1. 找出生产上被转换的数据 2. 创建或者转移生产数据到本地服务 3. 增加负载直到ETL无效 4. 针对检测的数据在数据库表格中进行计数 5. 记录ETL有效状态下所能承受的最大负载量

关键性能指标:

  1. 有效承受负载的时间
  2. 过程中确认性能时间是提升还是降低
  3. 核对所有预期负载是否被提取和转换

如何建立一个有效的ETL测试

1. 一个有效的ETL测试设计多方利益,因此相关评审需要BA,架构团队,QA团队,DBA,开发和产品共同参加 2. 测试策略的设计: * 纬度设计 - [相关测试类型](#Etltype) * 测试环境的准备 * 测试数据的有效性 - 推荐使用接近生产的数据 * 数据质量和性能的指标

如何验证数据的精确性

1. 比对源和目标数据的准确性,通过交差集的方式比对两者偏差 2. 关键数据列去重之后的比对

如何验证元数据

主要验证源和目标表结构,相关验证包括列,数据转换规则,数据类型和相关域的定义 数据类型验证:数数据长度验证,数据转换规则 相关域定义验证:索引值验证,限制条件(主键,外键,非空,唯一,检验,默认)

如何验证数据转化

1. 第一阶段:与产品一起确立相关场景的入参,期望结果和验证方式(这除了是测试的一部分也可以收集需求) 2. 第二阶段:创建测试数据,通过自动化的方式完成这个过程,并先将数据保存于电子表(并可支持任何改动) 3. 第三阶段:利用穿件的结果数据进行比对,包括范围和具体值 4. 第四阶段:更加精确的去验证域 5. 第五阶段:验证数据仓库的数据类型是否与制定的数据模型和设计一致 6. 第六阶段:在多表之前创建数据场景,验证相关集成 7. 第七阶段:验证数据中的父子关系 8. 最后阶段:进行查找转换(标准:没有聚合,每个源表只返回一个值)

如何核对数据的质量

1. 数字格式是否匹配 2. 日期的格式是否匹配 3. 精确值是否匹配 4. 数据的准确行校验(数据会有一定的判断规则) 5. 置空的数据是否符合要求 6. 其他相关数据有效性的校验

数据完整性校验

1. 计数验证:比较源表和目标表的记录数 2. 数据概况:验证两个表之间的聚合函数:count,max,min,sum 等 3. 列数据概况:验证两个表单列的去重内容 4. 复值验证:通过单列和组合列的方式验证主键或唯一键是否存在重复

ETL自动化工具使用

这里推荐 QuerySurge:专门解决数据测试的并可以无缝对接你的DevOps策略 1. 它通过简便的方式设置相关查询不需要手动数据SQL语句 2. 它设定了一个重用的库方便你去组合相关查询 3. 它可以帮你比对源和目标仓库的数据 4. 它可以设定各种时间方式运行:立即,某个时间点,或者某个事务结束 5. 最终它会帮你生成报告,更新视图,并邮件通知团队

你可能感兴趣的:(Eric_Yao,日常笔记)