大数据测试 ETL 测试

王一 · 2022年06月29日 · 最后由 王一 回复于 2022年07月17日 · 6537 次阅读

ETL(extract transform load)是一个完整的从数据源,经过转换处理,最终到数据仓库的过程。
6 种常见的 ETL 测试类型:
1、元数据测试
元数据测试指验证表定义是否符合数据模型或者应用程序设计的规范。包括数据类型、长度、索引、约束及元数据的命名规范。
demo:
数据类型检查:验证表和列的数据类型定义是否符合数据模型的规范,如数据模型定义 id 为 number,而数据库中类型为 char
数据长度检查:验证数据库列的长度是否符合数据模型的设计,如 id 长度 5,但数据库中定义的是 10
索引和约束:验证在数据库表中是否按照设计规范定义了适当的约束和索引,如 pid 定义为 not null,但是设计规范允许为 null

2、数据完整性测试
数据完整性测试目的是验证是否将所有预期数据从源加载到目标中。主要测试点:比较源数据和目标数据的计数,如最大 最小 平均 总和 等值。
由于数据量大,不能一一验证,可以从以下方面验证:
比较源和目标之间一列中的唯一值;
比较列的最大、最小、均值、最长长度值和最小长度值;
比较源和目标之间的列中的空值;
对于重要的列,比较源和目标之间的列中数据分布比例。

3、数据转换测试 -- 关键
数据转换是 ETL 关键,决定了转换后的数据是否可以适用目标系统。可以通过白盒和黑盒测试对数据转换进行测试。
白盒测试步骤:
查看源到目标映射文档来了解转换设计的逻辑;
使用 SQL 或者过程语言 PL/SQL 对数据进行转换;
将转换后的测试数据的结果与目标中的数据进行比较。---大白话:了解转换逻辑,用于开发不同的方式转换出测试结果然后与开发提供代码执行的结果进行对比。
黑盒测试:指直接校验应用程序的功能,无需查看应用程序内部结构和工作方式。自己设置测试数据,然后设计出预期结果,将应用的执行结果与预期结果进行比较哦。

4、增量 ETL 测试
通常将 ETL 过程为完全模式和增量模式下运行。在完全模式下运行是,ETL 需要从源系统重新加载所有或者大部分数据。增量 ETL 仅适用某种变更捕获机制来识别变更,只加载源系统中的变更数据。增量 ETL 测试的目的是验证源上的更新是否已经正确加载到目标系统中。
增量的测试方法:
重复数据检查:
在更新记录时,增量 ETL 应该能在目标表中查找现有记录并进行更新。我们需要确保更新后的目标表中没有重复项。如:业务需求表明身份证号唯一,我们可以通过如下代码查看是否重复:select id_card,count(1) from user group by id_card having count(1)>1
比较数据值:
验证源中更改的数据值是否正确反应到目标数据中。ETL 过程更新的记录由运行 ID 或者 ETL 运行日期标记,该日期可以用于表欧式目标系统是中最近更新或者插入的记录。

5、ETL 集成测试 - 端到端的测试
一旦数据通过 ETL 过程转换并加载到目标系统中,它就会被目标系统中的另一个程序或流程应用。在数据集成项目中,通常定期在两个不同的程序之间共享数据。ETL 集成测试的目的是对 ETL 流程和使用的应用程序中的数据执行端到端的测试。步骤:
在源系统中,设置测试数据
执行 ETL 过程将测试数据加载到目标中
查看或者处理目标系统中的数据
验证数据和使用该数据的应用程序的功能。

6、ETL 性能测试
对于不同的数据量,ETL 过程中的行为可能有所不同
当数据量小时,查询会比较快,但当数据量大时,查询可能会出现瓶颈,从而减慢 ETL 任务的执行速度;
一个增量 ETL 任务正在更新比预期的记录更多的记录,当目标表中的数据量较小时,增量 ETL 任务性能较好,当数据量变大时,会极大的降低增量 ETL 速度;
性能测试步骤:
估算未来一段时间 ETL 的每个源表中的预期数据量;
通过生层样本数据或者制作生产(清理)数据的副本来设置用于性能测试的测试数据;
执行完整的 ETL 过程将测试数据加载到目标中;
查看每个单独的 ETL 的运行时间和 ETL 的执行顺序。重新访问并列 ETL 任务,让任务并行执行;
为增量 ETL 过程设置测试数据,并在增量 ETL 期间按预期的数据更改量进行设置;
执行增量 ETL。通过查看 ETL 任务加载时间和任务的执行顺序,发现性能瓶颈。

共收到 3 条回复 时间 点赞
仅楼主可见

我是菜鸟,老师可不敢当,可以互相交流经验呦~🐭

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册