ETL测试 - 快速指南



ETL测试–简介

数据仓库系统中的数据是使用ETL(提取、转换、加载)工具加载的。顾名思义,它执行以下三个操作:

  • 从事务系统(可以是Oracle、Microsoft或任何其他关系数据库)提取数据;

  • 通过执行数据清洗操作转换数据;然后

  • 将数据加载到OLAP数据仓库。

您还可以使用ETL工具从平面文件(如电子表格和CSV文件)提取数据,并将其加载到OLAP数据仓库中进行数据分析和报告。让我们举个例子来更好地理解它。

示例

假设有一家制造公司拥有多个部门,例如销售、人力资源、物料管理、EWM等。所有这些部门都有单独的数据库,它们用于维护与其工作相关的 信息,并且每个数据库都有不同的技术、架构、表名、列等。现在,如果公司想分析历史数据并生成报表,则应将所有这些数据源中的数据提取并加载到数据仓库中以保存用于分析工作。

ETL工具从所有这些异构数据源中提取数据,转换数据(例如应用计算、连接字段、键、删除不正确的字段等),并将数据加载到数据仓库中。稍后,您可以使用各种商业智能(BI)工具,使用此数据生成有意义的报表、仪表板和可视化。

ETL工具和BI工具的区别

ETL工具用于从不同的数据源提取数据,转换数据,并将其加载到DW系统中;但是BI工具用于为最终用户生成交互式和临时报表,为高级管理人员生成仪表板,为每月、每季度和每年的董事会会议生成数据可视化。

最常见的ETL工具包括:SAP BO Data Services (BODS)、Informatica – PowerCenter、Microsoft – SSIS、Oracle Data Integrator ODI、Talend Open Studio、Clover ETL开源等。

一些流行的BI工具包括:SAP Business Objects、SAP Lumira、IBM Cognos、JasperSoft、Microsoft BI平台、Tableau、Oracle Business Intelligence Enterprise Edition等。

ETL流程

现在让我们更详细地讨论ETL过程中涉及的关键步骤:

提取数据

它涉及从不同的异构数据源提取数据。从事务系统提取数据会根据需求和使用的ETL工具而有所不同。它通常通过在非营业时间运行计划作业来完成,例如在晚上或周末运行作业。

Extracting Data

转换数据

它涉及将数据转换为适合轻松加载到DW系统的格式。数据转换包括应用计算、连接和定义数据上的主键和外键。例如,如果您想要数据库中没有的总收入百分比,您将在转换中应用百分比公式并加载数据。同样,如果您在不同的列中拥有用户的姓名和姓氏,则可以在加载数据之前应用连接操作。某些数据不需要任何转换;此类数据称为**直接移动**或**直通数据**。

数据转换还涉及数据的校正和清洗,删除不正确的数据、不完整的数据形成以及修复数据错误。它还包括在将数据加载到DW系统之前的数据完整性和格式化不兼容的数据。

将数据加载到DW系统

它涉及将数据加载到DW系统中以进行分析报告和信息处理。目标系统可以是简单的分隔平面文件或数据仓库。

ETL工具功能

典型的基于ETL工具的数据仓库使用暂存区、数据集成和访问层来执行其功能。它通常是三层架构。

  • **暂存层** - 暂存层或暂存数据库用于存储从不同源数据系统提取的数据。

  • **数据集成层** - 集成层转换来自暂存层的数据并将数据移动到数据库,其中数据被排列成层次结构组,通常称为**维度**,以及**事实**和**聚合事实**。DW系统中事实表和维度表的组合称为**模式**。

  • **访问层** - 最终用户使用访问层来检索用于分析报告和信息的数据。

下图显示了这三层如何相互交互。

ETL Tool Functions

ETL测试 - 任务

在将数据移动到生产数据仓库系统之前进行ETL测试。有时也称为**表平衡**或**生产协调**。就其范围和完成此操作所需的步骤而言,它与数据库测试不同。

ETL测试的主要目标是识别和减轻在处理用于分析报告的数据之前发生的数据缺陷和一般错误。

ETL测试–要执行的任务

以下是ETL测试中涉及的常见任务:

  • 了解要用于报告的数据
  • 审查数据模型
  • 源到目标映射
  • 源数据的数据检查
  • 包和模式验证
  • 目标系统中的数据验证
  • 数据转换计算和聚合规则的验证
  • 源系统和目标系统之间的样本数据比较
  • 目标系统中的数据完整性和质量检查
  • 数据的性能测试

ETL测试与数据库测试

ETL测试和数据库测试都涉及数据验证,但它们并不相同。ETL测试通常在数据仓库系统中的数据上执行,而数据库测试通常在事务系统上执行,这些系统中的数据来自不同的应用程序到事务数据库。

在这里,我们重点介绍了ETL测试和数据库测试之间的主要区别。

ETL测试

ETL测试包括以下操作:

  • 验证数据从源系统到目标系统的移动。

  • 验证源系统和目标系统中的数据计数。

  • 验证数据提取,根据需求和预期进行转换。

  • 验证在转换过程中是否保留表关系——连接和键。

常见的ETL测试工具包括**QuerySurge、Informatica**等。

数据库测试

数据库测试更强调数据准确性、数据正确性和有效值。它包括以下操作:

  • 验证是否维护主键和外键。

  • 验证表中的列是否具有有效的数据值。

  • 验证列中的数据准确性。**示例** - 月数列的值不应大于12。

  • 验证列中缺失的数据。检查是否存在实际上应该具有有效值的空列。

常见的数据库测试工具包括**Selenium、QTP**等。

下表捕获了数据库和ETL测试的关键特征及其比较:

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

ETL测试 - 分类

ETL测试分类是根据测试和报告的目标进行的。测试类别因组织标准而异,也取决于客户要求。通常,ETL测试根据以下几点进行分类:

  • **源到目标计数测试** - 它涉及匹配源系统和目标系统中记录的数量。

  • **源到目标数据测试** - 它涉及源系统和目标系统之间的数据验证。它还涉及数据集成和阈值检查以及目标系统中的重复数据检查。

  • **数据映射或转换测试** - 它确认源系统和目标系统中对象的映射。它还涉及检查目标系统中数据的功能。

  • **最终用户测试** - 它涉及为最终用户生成报表,以验证报表中的数据是否符合预期。它涉及查找报表中的偏差,并交叉检查目标系统中的数据以进行报表验证。

  • 重新测试 − 它包括修复目标系统中数据的错误和缺陷,并再次运行报告以进行数据验证。

  • 系统集成测试 − 它包括测试所有各个系统,然后合并结果以查找是否存在任何偏差。可以使用三种方法来执行此操作:自顶向下、自底向上和混合。

根据数据仓库系统的结构,ETL 测试(无论使用什么工具)可以分为以下几类:

新的数据仓库系统测试

在这种类型的测试中,构建并验证了一个新的数据仓库系统。数据输入来自客户/最终用户以及不同的数据源,并创建一个新的数据仓库。之后,借助 ETL 工具在新系统中验证数据。

迁移测试

在迁移测试中,客户拥有现有的数据仓库和 ETL,但他们正在寻找新的 ETL 工具来提高效率。它涉及使用新的 ETL 工具从现有系统迁移数据。

变更测试

在变更测试中,从不同的数据源向现有系统添加新数据。客户还可以更改现有的 ETL 规则,或者也可以添加新的规则。

报表测试

报表测试包括创建报表以进行数据验证。报表是任何数据仓库系统的最终输出。报表根据其布局、报表中的数据和计算值进行测试。

ETL 测试 – 挑战

ETL 测试不同于数据库测试或任何其他常规测试。在执行 ETL 测试时,可能会面临不同类型的挑战。这里列出了一些常见的挑战:

  • ETL 过程中数据丢失。

  • 数据不正确、不完整或重复。

  • 数据仓库系统包含历史数据,因此数据量太大且极其复杂,难以在目标系统中执行 ETL 测试。

  • ETL 测试人员通常无法访问 ETL 工具中的作业计划。他们几乎无法访问 BI 报表工具来查看报表的最终布局和报表中的数据。

  • 由于数据量过大和复杂性,难以生成和构建测试用例。

  • ETL 测试人员通常不知道最终用户的报表需求和信息的业务流程。

  • ETL 测试涉及各种复杂的 SQL 概念,用于在目标系统中进行数据验证。

  • 有时不会向测试人员提供源到目标的映射信息。

  • 不稳定的测试环境会延迟流程的开发和测试。

ETL – 测试人员的角色

ETL 测试人员的主要职责是验证数据源、提取数据、应用转换逻辑以及将数据加载到目标表中。

ETL 测试人员的主要职责如下所示。

验证源系统中的表

它包括以下操作:

  • 计数检查
  • 与源数据协调记录
  • 数据类型检查
  • 确保没有加载垃圾邮件数据
  • 删除重复数据
  • 检查所有键都已到位

应用转换逻辑

在加载数据之前应用转换逻辑。它包括以下操作:

  • 数据阈值验证检查,例如,年龄值不应超过 100。

  • 应用转换逻辑前后记录计数检查。

  • 从暂存区到中间表的数据流验证。

  • 代理键检查。

数据加载

数据从暂存区加载到目标系统。它包括以下操作:

  • 从中间表到目标系统的记录计数检查。

  • 确保键字段数据不丢失或为空。

  • 检查事实表中是否加载了聚合值和计算度量。

  • 检查基于目标表的建模视图。

  • 检查是否已在增量加载表上应用 CDC。

  • 检查维度表和历史表中的数据。

  • 根据加载的事实表和维度表以及预期结果检查 BI 报表。

测试 ETL 工具

ETL 测试人员还需要测试工具和测试用例。它包括以下操作:

  • 测试 ETL 工具及其功能
  • 测试 ETL 数据仓库系统
  • 创建、设计和执行测试计划和测试用例。
  • 测试平面文件数据传输。

ETL 测试 – 技术

在开始测试过程之前,定义正确的 ETL 测试技术非常重要。您应该征得所有利益相关者的同意,并确保选择正确的技术来执行 ETL 测试。测试团队应该熟悉这种技术,并且应该了解测试过程中涉及的步骤。

可以使用各种类型的测试技术。本章将简要讨论测试技术。

生产验证测试

为了执行分析报告和分析,生产中的数据应该正确。此测试是在将数据移动到生产系统后对数据进行的。它涉及在生产系统中进行数据验证,并将其与源数据进行比较。

源到目标计数测试

当测试人员的时间不足以执行测试操作时,就会进行这种类型的测试。它包括检查源系统和目标系统中的数据计数。它不涉及检查目标系统中数据的数值。它也不涉及数据在映射后是否按升序或降序排列。

源到目标数据测试

在这种类型的测试中,测试人员会验证从源系统到目标系统的数据值。它检查源系统中的数据值以及转换后目标系统中的相应值。这种类型的测试非常耗时,通常在金融和银行项目中执行。

数据集成/阈值验证测试

在这种类型的测试中,测试人员会验证数据的范围。如果目标系统中的所有阈值都符合预期结果,则会进行检查。它还包括在转换和加载后,从多个源系统集成目标系统中的数据。

示例 − 年龄属性的值不应大于 100。在日期列 DD/MM/YY 中,月份字段的值不应大于 12。

应用程序迁移测试

当您从旧应用程序迁移到新应用程序系统时,通常会自动执行应用程序迁移测试。此测试节省了大量时间。它检查从旧应用程序提取的数据是否与新应用程序系统中的数据相同。

数据检查和约束测试

它包括执行各种检查,例如数据类型检查、数据长度检查和索引检查。在这里,测试工程师执行以下场景:主键、外键、NOT NULL、NULL 和 UNIQUE。

重复数据检查测试

此测试包括检查目标系统中的重复数据。当目标系统中存在大量数据时,生产系统中可能存在重复数据,这可能会导致分析报告中的数据不正确。

可以使用类似以下的 SQL 语句来检查重复值:

Select Cust_Id, Cust_NAME, Quantity, COUNT (*) 
FROM Customer
GROUP BY Cust_Id, Cust_NAME, Quantity HAVING COUNT (*) >1;

由于以下原因,目标系统中会出现重复数据:

  • 如果未定义主键,则可能会出现重复值。
  • 由于映射不正确或环境问题。
  • 从源系统到目标系统传输数据时的手动错误。

数据转换测试

数据转换测试不是通过运行单个 SQL 语句来执行的。它非常耗时,并且需要为每一行运行多个 SQL 查询以验证转换规则。测试人员需要为每一行运行 SQL 查询,然后将输出与目标数据进行比较。

数据质量测试

数据质量测试包括执行数字检查、日期检查、空值检查、精度检查等。测试人员执行语法测试以报告无效字符、不正确的上下大小写顺序等,并执行引用测试以检查数据是否符合数据模型。

增量测试

增量测试用于验证是否按预期结果执行 INSERT 和 UPDATE 语句。此测试是使用旧数据和新数据逐步执行的。

回归测试

当我们更改数据转换和聚合规则以添加新功能时,这也有助于测试人员查找新的错误,这称为回归测试。在回归测试中出现的 数据错误称为回归。

重新测试

修复代码后运行测试称为重新测试。

系统集成测试

系统集成测试包括单独测试系统的组件,然后集成模块。系统集成可以通过三种方式完成:自顶向下、自底向上和混合。

导航测试

导航测试也称为测试系统的前端。它涉及从最终用户的角度进行测试,检查前端报表的所有方面,包括各个字段中的数据、计算和聚合等。

ETL 测试 – 流程

ETL 测试涵盖 ETL 生命周期中涉及的所有步骤。它从了解业务需求开始,到生成汇总报告结束。

ETL 测试生命周期中的常见步骤如下所示:

  • 了解业务需求。

  • 验证业务需求。

  • 测试估算用于提供运行测试用例和完成汇总报告的预计时间。

  • 测试计划包括根据业务需求的输入查找测试技术。

  • 创建测试场景和测试用例。

  • 测试用例准备就绪并获得批准后,下一步是执行预执行检查。

  • 执行所有测试用例。

  • 最后一步是生成完整的汇总报告并提交关闭流程。

ETL 测试 – 场景

ETL测试场景用于验证ETL测试流程。下表解释了ETL测试人员使用的一些最常见的场景和测试用例。

测试场景 测试用例

结构验证

这包括根据映射文档验证源表和目标表的结构。

应验证源系统和目标系统中的数据类型。

源系统和目标系统中数据类型的长度应相同。

数据字段类型及其格式在源系统和目标系统中应相同。

验证目标系统中的列名。

验证映射文档

这包括验证映射文档,以确保已提供所有信息。映射文档应包含更改日志、维护数据类型、长度、转换规则等。

验证约束

这包括验证约束并确保它们应用于预期的表。

数据一致性检查

这包括检查外键等完整性约束的误用。

虽然属性的定义在语义层保持相同,但在不同的表中,属性的长度和数据类型可能会有所不同。

数据完整性验证

这包括检查是否将所有数据从源系统加载到目标系统。

计算源系统和目标系统中的记录数量。

边界值分析。

验证主键的唯一值。

数据正确性验证

这包括验证目标系统中数据的数值。

表中发现拼写错误或不准确的数据。

在导入时禁用完整性约束时,会存储空值或非唯一数据。

数据转换验证

这包括创建一个包含输入值和预期结果的场景电子表格,然后与最终用户一起验证。

通过创建场景来验证数据中的父子关系。

使用数据分析来比较每个字段的值范围。

验证仓库中的数据类型是否与数据模型中提到的相同。

数据质量验证

这包括执行数字检查、日期检查、精度检查、数据检查、空值检查等。

示例 - 日期格式对于所有值都应相同。

空值验证

这包括检查在该字段中提到非空值的位置的空值。

重复值验证

这包括在目标系统中验证重复值,而数据来自源系统的多个列。

根据业务需求,验证主键和其他列是否存在任何重复值。

日期验证检查

验证ETL流程中执行的各种操作的日期字段。

执行日期验证的常见测试用例:

  • 开始日期不得大于结束日期

  • 日期值的格式应正确。

  • 日期值不应包含任何垃圾值或空值

全数据验证减法查询

这包括使用减法查询验证源表和目标表中的完整数据集。

  • 您需要执行源减目标目标减源

  • 如果减法查询返回一个值,则应将其视为不匹配的行。

  • 您需要使用交集语句匹配源和目标中的行。

  • 交集返回的计数应与源表和目标表的单个计数匹配。

  • 如果减法查询不返回任何行,并且交集计数小于源计数或目标表计数,则表包含重复行。

其他测试场景

其他测试场景可以验证提取过程没有从源系统提取重复数据。

测试团队将维护一个SQL语句列表,这些语句用于验证没有从源系统提取重复数据。

数据清洗

在将数据加载到暂存区之前,应删除不需要的数据。

ETL测试——性能

ETL性能调优用于确保ETL系统能否处理预期的大量用户和事务负载。性能调优通常涉及ETL系统上的服务器端工作负载。它用于测试多用户环境中的服务器响应并查找瓶颈。这些瓶颈可能存在于源系统和目标系统、系统映射、会话管理属性等配置中。

ETL Performance

如何执行ETL测试性能调优?

请按照以下步骤执行ETL测试性能调优:

  • 步骤1 - 查找正在生产环境中转换的负载。

  • 步骤2 - 创建相同负载的新数据或从生产数据移动到本地性能服务器。

  • 步骤3 - 在生成所需的负载之前禁用ETL。

  • 步骤4 - 从数据库表中获取所需数据的计数。

  • 步骤5 - 记下ETL的最后一次运行并启用ETL,以便它能够承受足够的压力来转换创建的整个负载。运行它

  • 步骤6 - ETL完成运行后,获取创建数据的计数。

关键绩效指标

  • 找出转换负载所需的时间。
  • 找出性能时间是否得到改善或下降。
  • 检查是否提取和传输了整个预期负载。

ETL测试——可扩展性

ETL测试的目标是获得可信的数据。通过使测试周期更有效,可以获得数据可信度。

全面的测试策略是建立有效的测试周期。测试策略应涵盖ETL流程每个阶段的测试计划,每次数据移动时以及声明每个利益相关者的责任,例如业务分析师、基础设施团队、质量保证团队、DBA、开发人员和业务用户。

为了确保从各个方面做好测试准备,测试策略应重点关注的关键领域是:

  • 测试范围 - 描述将使用的测试技术和类型。

  • 设置测试环境。

  • 测试数据可用性 - 建议使用涵盖所有/关键业务需求的类似生产环境的数据。

  • 数据质量和性能验收标准。

ETL测试——数据准确性

在ETL测试中,数据准确性用于确保数据根据预期准确加载到目标系统。执行数据准确性的关键步骤如下:

值比较

值比较涉及比较具有最小或无转换的源系统和目标系统中的数据。可以使用各种ETL测试工具来完成此操作,例如Informatica中的Source Qualifier Transformation。

在数据准确性测试中还可以执行一些表达式转换。SQL语句可以使用各种集合运算符来检查源系统和目标系统中的数据准确性。常见的运算符是Minus和Intersect运算符。这些运算符的结果可以被视为目标系统和源系统中值的偏差。

检查关键数据列

可以通过比较源系统和目标系统中的不同值来检查关键数据列。这是一个可用于检查关键数据列的示例查询:

SELECT cust_name, Order_Id, city, count(*) FROM customer 
GROUP BY cust_name, Order_Id, city;

ETL测试——元数据

检查元数据涉及相对于映射文档验证源表和目标表的结构。映射文档包含源列和目标列、数据转换规则和数据类型的详细信息,所有这些字段都定义了源系统和目标系统中表的结构。

数据长度检查

目标列数据类型的长度应等于或大于源列数据类型。让我们举个例子。假设源表中有名和姓,每个的定义数据长度为50个字符。然后,目标系统中全名列的目标数据长度应至少为100或更多。

数据类型检查

数据类型检查涉及验证源数据类型和目标数据类型,并确保它们相同。转换后,目标数据类型可能与源数据类型不同。因此,还需要检查转换规则。

约束/索引检查

约束检查涉及根据设计规范文档验证索引值和约束。所有不能具有空值的行都应具有非空约束。主键列根据设计文档进行索引。

ETL测试——数据转换

执行数据转换有点复杂,因为它不能通过编写单个SQL查询然后将输出与目标进行比较来实现。对于ETL测试数据转换,您可能必须为每一行编写多个SQL查询以验证转换规则。

首先,确保源数据足以测试所有转换规则。成功执行数据转换的ETL测试的关键是从源系统中选择正确且足够的数据样本以应用转换规则。

ETL测试数据转换的关键步骤如下:

  • 第一步是创建一个输入数据场景和预期结果的列表,并与业务客户一起验证这些场景。这是在设计期间进行需求收集的好方法,也可以用作测试的一部分。

  • 下一步是创建包含所有场景的测试数据。利用ETL开发人员自动化使用场景电子表格填充数据集的整个过程,以允许灵活性和移动性,因为场景可能会发生变化。

  • 接下来,利用数据分析结果来比较目标数据和源数据中每个字段的值范围和提交情况。

  • 验证ETL生成的字段(例如,代理键)的准确处理。

  • 验证仓库中的数据类型与数据模型或设计中指定的相同。

  • 在测试引用完整性的表之间创建数据场景。

  • 验证数据中的父子关系。

  • 最后一步是执行查找转换。您的查找查询应直接且没有任何聚合,并预期每个源表只返回一个值。您可以像之前的测试一样,直接在源限定符中连接查找表。如果不是这种情况,请编写一个使用查找表连接主表的查询,并比较目标中相应列中的数据。

ETL测试——数据质量

在ETL测试期间检查数据质量涉及对加载到目标系统中的数据执行质量检查。它包括以下测试:

数字检查

数字格式在整个目标系统中应相同。例如,在源系统中,列编号的格式为x.30,但如果目标只有30,则它必须加载目标列号不加前缀x.

日期检查

日期格式在源系统和目标系统中应一致。例如,它在所有记录中都应相同。标准格式为:yyyy-mm-dd。

精度检查

精度值应在目标表中按预期显示。例如,在源表中,值为15.2323422,但在目标表中,它应显示为15.23或四舍五入为15。

数据检查

这包括根据业务需求检查数据。不符合特定条件的记录应被过滤掉。

示例 - 只有日期ID >=2015且帐户ID != '001'的记录应加载到目标表中。

空值检查

某些列应根据要求和该字段的可能值具有空值。

示例 - 除非活动状态列为“T”或“已故”,否则“终止日期”列应显示空值。

其他检查

可以进行常见的检查,例如开始日期不得大于结束日期。

ETL测试——数据完整性

数据完整性检查用于验证数据加载后目标系统中的数据是否符合预期。

为此可以执行的常见测试如下:

  • 检查聚合函数(sum、max、min、count),

  • 检查和验证源和目标之间列的计数和实际数据(无转换或简单转换)。

计数验证

比较源表和目标表中记录数量的计数。可以通过编写以下查询来完成:

SELECT count (1) FROM employee; 
SELECT count (1) FROM emp_dim; 

数据概要验证

它涉及检查源表和目标表(事实表或维度表)中的聚合函数,例如计数、求和和最大值。

列数据概要验证

它涉及比较每个不同值的唯一值和行数。

SELECT city, count(*) FROM employee GROUP BY city; 
SELECT city_id, count(*) FROM emp_dim GROUP BY city_id;

重复数据验证

它涉及根据业务需求验证列中或列组合中应唯一的主键和唯一键。可以使用以下查询执行重复数据验证:

SELECT first_name, last_name, date_of_joining, count (1) FROM employee
GROUP BY first_name, last_name HAVING count(1)>1;

ETL测试 – 备份恢复

系统备份恢复计划旨在确保系统能够尽快从故障中恢复,并在不丢失任何重要数据的情况下尽早恢复运行。

ETL备份恢复测试用于确保数据仓库系统能够成功从硬件、软件或网络故障中恢复,而不会丢失任何数据。

必须制定适当的备份计划,以确保最大限度的系统可用性。备份系统应能够轻松恢复,并应在不丢失任何数据的情况下接管故障系统。

ETL测试备份恢复涉及将应用程序或DW系统暴露于任何硬件组件、软件崩溃等的极端条件下。下一步是确保启动恢复过程、完成系统验证并实现数据恢复。

ETL测试 – 自动化

ETL测试主要使用SQL脚本并在电子表格中收集数据。这种执行ETL测试的方法非常缓慢且耗时,容易出错,并且是在样本数据上执行的。

手动ETL测试中的技术挑战

您的ETL测试团队编写SQL查询以测试数据仓库系统中的数据,他们需要使用SQL编辑器手动执行这些查询,然后将数据放入Excel电子表格中并手动比较它们。此过程耗时、资源密集且效率低下。

市场上有各种工具可以自动化此过程。最常见的ETL测试工具是QuerySurge和Informatica数据验证。

QuerySurge

QuerySurge是一款数据测试解决方案,专为测试大数据、数据仓库和ETL流程而设计。它可以为您自动化整个流程,并很好地融入您的DevOps策略。

QuerySurge的关键功能如下:

  • 它具有查询向导,可以快速轻松地创建测试QueryPairs,而无需用户编写任何SQL。

  • 它具有包含可重用查询代码段的设计库。您也可以创建自定义QueryPairs。

  • 它可以比较来自源文件和数据存储的数据与目标数据仓库或大数据存储的数据。

  • 它可以在几分钟内比较数百万行和列的数据。

  • 它允许用户安排测试运行:(1)立即,(2)任何日期/时间,或(3)在事件结束后自动运行。

  • 它可以生成信息丰富的报告、查看更新并将结果自动通过电子邮件发送给您的团队。

为了自动化整个过程,您的ETL工具应在ETL软件完成其加载过程后通过命令行API启动QuerySurge。

QuerySurge将自动无人值守地运行,执行所有测试,然后通过电子邮件向团队中的每个人发送结果。

与QuerySurge一样,Informatica数据验证提供了一个ETL测试工具,可帮助您加快和自动化开发和生产环境中的ETL测试过程。它允许您在更短的时间内提供完整、可重复和可审核的测试覆盖率。它不需要任何编程技能!

ETL测试 - 最佳实践

要测试数据仓库系统或BI应用程序,需要采用以数据为中心的方法。ETL测试最佳实践有助于最大限度地降低执行测试的成本和时间。它提高了要加载到目标系统的数据质量,从而为最终用户生成高质量的仪表板和报表。

我们在这里列出了一些可以遵循的ETL测试最佳实践:

分析数据

分析数据以了解需求以设置正确的数据模型至关重要。花时间了解需求并为目标系统拥有正确的数据模型可以减少ETL挑战。研究源系统、数据质量并为ETL模块构建正确的数据验证规则也很重要。应根据源系统和目标系统的数据结构制定ETL策略。

修复源系统中的不良数据

最终用户通常知道数据问题,但他们不知道如何解决这些问题。在这些错误到达ETL系统之前找到并纠正这些错误非常重要。解决此问题的常见方法是在ETL执行时,但最佳实践是在源系统中查找错误,并在源系统级别采取步骤来纠正它们。

找到兼容的ETL工具

常见的ETL最佳实践之一是选择与源系统和目标系统最兼容的工具。ETL工具生成源系统和目标系统SQL脚本的能力可以减少处理时间和资源。它允许在最合适的环境中处理转换。

监控ETL作业

ETL实施过程中的另一个最佳实践是调度、审核和监控ETL作业,以确保加载按预期执行。

集成增量数据

有时,数据仓库表的大小很大,不可能在每个ETL周期中刷新它们。增量加载确保自上次更新以来仅更改的记录被引入ETL流程,这对可伸缩性和刷新系统所需的时间产生巨大影响。

通常,源系统没有时间戳或主键来轻松识别更改。如果在项目的后期阶段发现此类问题,则可能非常昂贵。ETL最佳实践之一是在初始源系统研究中涵盖此类方面。此知识有助于ETL团队识别更改数据捕获问题并确定最合适的策略。

可扩展性

最佳实践是确保提供的ETL解决方案具有可扩展性。在实施时,需要确保ETL解决方案能够满足业务需求及其未来的潜在增长。

广告