ETL 测试教程
什么是 ETL 测试?
ETL 测试是为了确保业务转换后从源加载到目标的数据是准确的。它还涉及在源和目标之间使用的各个中间阶段的数据验证。ETL 代表提取-转换-加载。
数据仓库测试
数据仓库测试 是一种测试方法,其中测试数据仓库中的数据的完整性、可靠性、准确性和一致性,以符合公司的数据框架。数据仓库测试的主要目的是确保数据仓库中的集成数据足够可靠,以便公司做出决策。
什么是ETL?
ETL 代表提取-转换-加载,它是将数据从源系统加载到数据仓库的过程。数据从 OLTP 数据库中提取,转换为与数据仓库模式匹配,然后加载到数据仓库数据库中。许多数据仓库还包含来自非 OLTP 系统(例如文本文件、遗留系统和电子表格)的数据。
让我们看看它是如何工作的
例如,有一家零售店,它有销售、营销、物流等不同部门。每个部门都独立处理客户信息,并且存储数据的方式也大不相同。销售部门按客户姓名存储数据,而营销部门按客户 ID 存储数据。
现在,如果他们想查看客户的历史记录,并想知道他/她由于不同的营销活动购买了哪些不同的产品;这会非常繁琐。
解决方案是使用 数据仓库 使用 ETL 将来自不同来源的信息存储在统一的结构中。ETL 可以将不同的数据集转换为统一的结构。Later 使用 BI 工具从这些数据中获取有意义的见解和报告。
本 ETL 测试教程中的下图为您提供了 ETL 测试流程和各种 ETL 测试概念的路线图:
1)提取物
- 提取相关数据
2) 变换
- 将数据转换为 DW(数据仓库)格式
- 构建键 – 键是一个或多个唯一标识实体的数据属性。各种 键的类型 是主键、备用键、外键、复合键、代理键。数据仓库拥有这些键,并且绝不允许任何其他实体分配它们。
- 数据清理:提取数据后,将进入下一阶段,即数据清理和一致性。清理是指删除数据中的遗漏,并识别和修复错误。一致性是指解决不兼容数据之间的冲突,以便它们可用于企业数据仓库。除此之外,该系统还创建元数据,用于诊断源系统问题并提高数据质量。
3)负载
- 将数据加载到DW(数据仓库)
- 构建聚合——创建聚合就是汇总和存储可用的数据 事实表 以提高最终用户查询的性能。
ETL测试流程
与其他测试过程类似,ETL 也经历不同的阶段。ETL 测试过程的不同阶段如下
ETL 测试分五个阶段进行
- 确定数据来源和要求
- 数据采集
- 实现业务逻辑和维度建模
- 构建并填充数据
- 生成报告
ETL 测试的类型
- 生产验证测试
测试过程: “表平衡”或“生产协调”这类 ETL 测试是在数据移入生产系统时进行的。为了支持您的业务决策,生产系统中的数据必须按正确的顺序排列。 Informatica的 数据验证选项提供 ETL 测试自动化和管理功能,以确保生产系统不受数据的损害。 - 来源 Target 测试(验证测试)
测试过程: 进行此类测试是为了验证转换的数据值是否是预期的数据值。 - 实践应用 Upgrades
测试过程: 此类 ETL 测试可以自动生成,从而节省大量测试开发时间。此类测试检查从旧应用程序或存储库中提取的数据是否与存储库或新应用程序中的数据完全相同。 - 元数据测试
测试过程: 元数据测试包括数据类型检查、数据长度检查和索引/约束检查等测试。 - 数据完整性测试
测试过程: 为了验证所有预期数据是否已从源加载到目标中,需要进行数据完整性测试。可以运行的一些测试包括比较和验证源和目标之间经过简单转换或无需转换的列的计数、聚合和实际数据。 - 数据准确性测试
测试过程: 进行此测试是为了确保数据按预期准确加载和转换。 - 数据转换测试
测试过程: 测试数据转换是因为在许多情况下,无法通过编写一个源来实现 SQL 查询并将输出与目标进行比较。可能需要对每一行运行多个 SQL 查询来验证转换规则。 - 数据质量测试
测试过程:数据质量测试包括语法和参考测试。为了避免业务过程中因日期或订单号而导致的任何错误,进行了数据质量测试。
语法测试:它将根据无效字符、字符模式、不正确的大小写顺序等报告脏数据。
参考测试:它将根据数据模型检查数据。例如:客户 ID
数据质量测试包括数量检查、日期检查、精度检查、数据检查、空值检查等。
- 增量 ETL 测试
测试过程: 进行此测试是为了检查新数据和旧数据的完整性。增量测试验证在增量 ETL 过程中插入和更新是否按预期进行处理。 - GUI/导航测试
测试过程: 进行此测试是为了检查前端报告的导航或 GUI 方面。
如何创建 ETL 测试用例
ETL 测试是一个可以应用于信息管理行业中不同工具和数据库的概念。 ETL 测试的目的是确保业务转换后从源加载到目的地的数据是准确的。 它还涉及在源和目标之间使用的各个中间阶段的数据验证。
在执行 ETL 测试时,ETL 测试人员将始终使用两个文档:
- ETL 映射表:ETL 映射表包含源表和目标表的所有信息,包括每一列及其在参考表中的查找。ETL 测试人员需要熟悉 SQL 查询,因为 ETL 测试可能涉及编写具有多个连接的大型查询以在 ETL 的任何阶段验证数据。ETL 映射表在编写数据验证查询时提供了很大的帮助。
- 源数据库架构, Target: 应将其放在手边以验证地图表中的任何细节。
ETL 测试场景和测试用例
- 映射文档验证
测试用例: 验证映射文档是否提供了相应的ETL信息。每个映射文档都应保留变更日志。 - 验证
测试用例:1)根据相应的映射文档验证源和目标表结构。
2)源数据类型和目标数据类型应该相同
3)源和目标中的数据类型的长度应该相等
4)验证是否指定了数据字段类型和格式
5)源数据类型长度不应小于目标数据类型长度
6)根据映射文档验证表中列的名称。 - 约束验证
测试用例: 确保按预期为特定表定义约束 - 数据一致性问题
测试用例:1)尽管语义定义相同,但特定属性的数据类型和长度在文件或表中可能有所不同。
2)滥用完整性约束 - 完整性问题
测试用例:1)确保所有预期数据都加载到目标表中。
2)比较源和目标之间的记录数。
3)检查是否有任何被拒绝的记录
4)检查目标表的列中的数据是否被截断
5)检查边界值分析
6)比较加载到仓库的数据和源数据之间的关键字段的唯一值 - 正确性问题
测试用例:1)拼写错误或记录不准确的数据
2)空值、非唯一值或超出范围的数据 - 转型
测试用例: 转型 - 数据质量
测试用例:1)号码检查:需要号码检查并验证
2)日期检查:必须遵循日期格式,并且所有记录的日期格式应相同
3)精度检查
4)数据检查
5)空检查 - 空值验证
测试用例: 验证空值,其中特定列指定为“非空”。 - 重复检查
测试用例:1)需要验证唯一键、主键和任何其他列都应该根据业务要求是唯一的,并且不存在任何重复的行
2)检查从源中的多列中提取并合并为一列的任何列中是否存在重复值
3)根据客户要求,需要确保目标中的多个列组合没有重复 - 日期验证
测试用例: 日期值在 ETL 开发中的很多领域都有使用1)了解行创建日期
2)根据ETL开发视角识别活动记录
3)根据业务需求视角识别活动记录
4)有时会根据日期值生成更新和插入。 - 完成数据验证
测试用例:1)验证源表和目标表中的完整数据集,减去最佳解决方案中的查询
2)我们需要源减去目标,目标减去源
3)如果减查询返回任何值,则应将其视为不匹配的行
4)需要使用 intersect 语句匹配源和目标之间的行
5)intersect 返回的计数应该与源表和目标表的单独计数相匹配
6)如果减去查询返回的行数并且相交数小于源数或目标表数,那么我们可以认为存在重复的行。 - 数据清洁度
测试用例: 在加载到暂存区之前,应该删除不必要的列。
ETL 错误的类型
错误类型 | 描述 |
---|---|
用户界面错误/外观错误 |
• 与应用程序的 GUI 相关 • 字体样式、字体大小、颜色、对齐方式、拼写错误、导航等 |
边界值分析(BVA)相关错误 | • 最小值和最大值 |
等价类划分 (ECP) 相关错误 | • 有效和无效类型 |
输入/输出错误 |
• 有效值不被接受 • 接受无效值 |
计算错误 |
• 数学错误 • 最终输出错误 |
加载条件错误 |
• 不允许多个用户 • 不允许客户预期的负载 |
竞争条件错误 |
• 系统崩溃和挂起 • 系统无法运行客户端平台 |
版本控制错误 |
• 没有徽标匹配 • 没有可用的版本信息 • 这通常发生在 迭代测试 |
硬件错误 | • 设备没有响应应用程序 |
帮助源错误 | • 帮助文档中的错误 |
数据库测试和 ETL 测试之间的区别
ETL测试 | 数据库测试 |
---|---|
验证数据是否按预期移动 | 主要目标是检查数据是否遵循数据模型中定义的规则/标准 |
验证源和目标中的计数是否匹配
验证转换的数据是否符合预期 |
验证没有孤立记录并且维护外主键关系 |
验证 ETL 期间外主键关系是否得到保留 | 验证没有冗余表并且数据库已最佳规范化 |
验证加载的数据是否存在重复 | 验证所需列中是否缺少数据 |
ETL 测试人员的职责
ETL 测试人员的主要职责分为三类
- 舞台台/SFS 或 MFS
- 应用业务转型逻辑
- Target 应用转换后,从阶段文件或表加载表。
ETL 测试人员的一些职责包括
- 测试 ETL 软件
- ETL数据仓库的测试组件
- 执行后端数据驱动测试
- 创建、设计和执行 测试用例、测试计划和测试工具
- 识别问题并为潜在问题提供解决方案
- 批准需求和设计规范
- 数据传输和测试平面文件
- 为各种场景(例如计数测试)编写 SQL 查询3
ETL 中的性能测试
ETL 中的性能测试 是一种测试技术,用于确保 ETL 系统能够处理多个用户和事务的负载。ETL 的主要目标 性能测试 是通过识别和消除性能瓶颈来优化和提高会话性能。源数据库和目标数据库、映射、会话和系统都可能存在性能瓶颈。
用于性能测试/调整的最佳工具之一是 Informatica。
ETL 测试自动化
ETL 测试的一般方法是使用 SQL 脚本或“目测”数据。这些 ETL 测试方法非常耗时、容易出错,而且很少能提供完整的 测试覆盖率. 加速、提高覆盖率、降低成本、改善 缺陷 在生产和开发环境中,ETL 测试的检测率自动化是当务之急。Informatica 就是这样一种工具。
ETL 测试的最佳实践
- 确保数据转换正确
- 没有任何数据丢失和截断,预计数据应该加载到数据仓库中
- 确保 ETL 应用程序适当地拒绝并替换为默认值并报告无效数据
- 需要确保在规定和预期的时间范围内将数据加载到数据仓库中,以确认可扩展性和性能
- 无论可见性如何,所有方法都应该有适当的单元测试
- 为了衡量其有效性,所有单元测试都应使用适当的覆盖技术
- 争取每个测试用例都只有一个断言
- 创建 单元测试 针对例外情况
查看 - ETL 测试面试问题与答案