数据管道测试自动化的最佳实践

数据管道测试自动化的最佳实践

源节点: 2035833

数据集成过程就像任何其他软件一样受益于自动化测试。 然而,很难找到具有一组合适的自动化测试的数据管道项目。 即使一个项目有很多测试,它们也常常是非结构化的,没有传达它们的目的,并且很难运行。

一个特点 数据管道 开发就是频繁发布高质量的数据,以获得用户的反馈和接受。 在每次数据管道迭代结束时,预计下一阶段的数据质量很高。 

自动化测试对于数据管道的集成测试至关重要。 在高度迭代和自适应的开发环境中,手动测试是不切实际的。

手动数据测试的主要问题

首先,时间过长,是管道频繁交付的关键抑制因素。 主要依赖手动测试的团队最终将测试推迟到专门的测试期,从而导致错误不断累积。 

其次,手动数据管道测试对于回归测试的重现性不足。 

自动化数据管道测试需要初步规划和持续努力,但一旦技术团队采用自动化,项目的成功就更有保证了。

数据管道的变体

  • 提取、转换和加载 (ETL)
  • 提取、加载和转换 (ELT)
  • 数据湖、数据仓库管道
  • 实时管道
  • 机器学习管道

用于测试自动化考虑的数据管道组件

数据管道由多个组件组成,每个组件负责特定任务。 数据管道的元素包括:

  • 数据源: 数据的来源
  • 数据摄取: 从数据源收集数据的过程
  • 数据转换: 将收集的数据转换为可用于进一步分析的格式的过程
  • 数据验证/确认: 确保数据准确一致的流程
  • 数据存储: 将经过转换和验证的数据存储在数据仓库或数据湖中的过程
  • 数据分析: 分析存储的数据以识别模式、趋势和见解的过程

自动化数据管道测试的最佳实践

自动化的内容和时间(或者即使您需要自动化)是测试(或开发)团队的关键决策。 选择适合自动化的产品特性在很大程度上决定了自动化的成败。 

在对数据管道进行自动化测试时,最佳实践包括:

  • 定义明确和具体的测试目标: 在开始测试之前,必须定义要通过测试实现的目标。 这样做将帮助您创建有效、高效的测试,提供有价值的见解.
  • 测试数据管道的所有工作流程: 数据管道通常由几个组件组成:数据摄取、处理、转换和存储。 测试每个组件以确保数据通过管道正确和顺畅地流动非常重要。
  • 使用可信的测试数据: 测试数据管道时,使用模拟真实场景的真实数据非常重要。 这将有助于识别处理不同数据类型时可能出现的任何问题。
  • 使用有效的工具实现自动化: 这可以使用测试框架和工具来实现。
  • 定期监控管道: 即使在测试完成后,也必须定期监控管道以确保其按预期工作。 这将有助于在问题成为严重问题之前识别问题。
  • 让利益相关者参与: 让数据分析师、数据工程师和业务用户等利益相关者参与测试过程。 这将有助于确保测试对所有利益相关者都具有相关性和价值。
  • 维护文档: 维护描述测试、测试用例和测试结果的文档很重要。 这将有助于确保测试可以随着时间的推移进行复制和维护。

当心; 应避免自动更改不稳定的功能。 今天,没有任何已知的业务工具或方法/流程集可以被视为数据管道的完整端到端测试。 

考虑您的测试自动化目标

数据管道测试自动化被描述为使用工具来控制 1) 测试执行, 2) 实际结果与预测结果的比较,以及 3) 测试前提条件和其他测试控制和测试报告功能的设置。 

通常,测试自动化涉及使使用正式测试过程的现有手动过程自动化。

虽然手动数据管道测试可以揭示许多数据缺陷,但它们既费力又费时。 此外,手动测试可能无法有效检测某些缺陷。 

数据管道自动化涉及开发原本必须手动执行的测试程序。 一旦测试自动化,它们就可以快速重复。 对于使用寿命长的数据管道,这通常是最具成本效益的方法。 即使是管道生命周期内的小修复或增强功能也可能导致早期工作的功能中断。

在数据管道开发中集成自动化测试提出了一系列独特的挑战。 当前的自动化软件开发测试工具不容易适应数据库和数据管道项目。 

各种各样的数据管道架构进一步使这些挑战复杂化,因为它们涉及多个数据库,需要特殊编码来进行数据提取、转换、加载、 数据清理、数据聚合和数据丰富。

测试自动化工具可能很昂贵,通常与手动测试一起使用。 但是,从长远来看,它们可能会变得具有成本效益,尤其是在回归测试中反复使用时。

测试自动化的频繁候选人   

  • BI报表测试 
  • 商业、政府合规
  • 数据聚合处理
  • 数据清理和归档
  • 数据质量测试
  • 数据核对(例如,源到目标)
  • 数据转换
  • 维表数据加载
  • 端到端测试
  • 英语培训班 验证和验证测试
  • 事实表数据加载 
  • 文件/数据加载验证
  • 增量负载测试
  • 负载和可扩展性测试
  • 缺少文件、记录、字段
  • 性能测试 
  • 参照完整性
  • 回归测试
  • 安全测试
  • 源数据测试和分析
  • 分期、ODS 数据验证 
  • 单元、集成和回归测试

由于处理的复杂性以及应验证的源和目标的数量,可能需要自动化这些测试。 

对于大多数项目,数据管道测试流程旨在验证和实施数据质量。

当今可用的各种数据类型带来了测试挑战

今天有各种各样的数据类型可用,从传统的结构化数据类型(如文本、数字和日期)到非结构化数据类型(如音频、图像和视频)。 此外,各种类型的半结构化数据,如 XML 和 JSON,在 Web 开发和数据交换中得到广泛应用。

随着物联网 (IoT) 的出现,各种数据类型出现了爆炸式增长,包括传感器数据、位置数据和机器对机器通信数据。 随着这些数据类型被提取和转换,如果没有合适的工具,测试会变得更加复杂。 这催生了新的数据管理技术和分析技术,如流处理、边缘计算和实时分析。

图 1 显示了当今广泛使用的数据类型示例。 在测试所需的转换是否正确执行时,大量代表挑战。 因此,数据专业人员必须精通各种数据类型,并能够适应测试新兴趋势和技术。

图 1:各种数据源和数据目标的示例

评估管道组件以进行可能的自动化测试

敏捷和其他现代开发的一个关键要素是自动化测试。 我们可以将这种意识应用到数据管道中。

数据管道测试的一个重要方面是执行的测试数量将继续增加以检查添加的功能和维护。 图 2 显示了可以在数据管道中应用测试自动化的许多领域.

图 2:从数据管道开始到结束的“热点”测试

在实现测试自动化时,可以从源层跟踪数据,通过数据管道处理,到数据管道中的加载,最后到前端应用程序或报告。 假设在前端应用程序或报告中发现损坏的数据。 在这种情况下,自动化套件的执行可以帮助更快地确定个别问题是否位于数据源、数据管道过程、新加载的数据管道数据库/数据集市或商业智能/分析报告中。

强调快速识别复杂数据管道架构中的数据和性能问题,为提高开发效率、缩短构建周期和满足发布标准目标提供了一个关键工具。

确定要自动化的测试类别

诀窍是确定什么应该自动化以及如何处理每项任务。 自动化测试时应考虑一组问题,例如:

  • 自动化测试的成本是多少?
  • 谁负责测试自动化(例如,开发、QA、数据工程师)?
  • 应使用哪些测试工具(例如,开源、供应商)?
  • 所选工具是否满足所有期望?
  • 测试结果将如何报告?
  • 谁解释测试结果?
  • 测试脚本将如何维护?
  • 我们将如何组织脚本以便轻松准确地访问? 

图 3 显示了来自实际项目经验的手动测试用例与自动测试用例的持续时间示例(用于测试执行、缺陷识别和报告)。

图3: 比较手动和自动测试执行持续时间。

自动化数据管道测试旨在涵盖加载数据管道的最关键功能——源数据和目标数据的同步和协调。

自动化测试的好处和局限性

 测试自动化挑战

  • 报告测试: 通过自动化测试商业智能或分析报告
  • 数据复杂度: 数据管道测试通常涉及复杂的数据结构和转换,这些结构和转换很难实现自动化并且需要专业知识。
  • 流水线复杂度: 数据管道可能很复杂,可能涉及多个处理阶段,这对测试和调试来说可能具有挑战性。 此外,对管道某一部分的更改可能会对下游产生意想不到的后果。

测试自动化的好处

  • 更快地执行测试用例: 自动化可以加快测试场景的实施。
  • 创建一个可重用的测试套件: 使用自动化工具运行测试脚本后,可以备份它们以便于调用和重用。
  • 简化测试报告: 许多自动化工具的一个有趣特性是它们能够生成报告和测试文件。 这些功能准确地表示数据状态,清楚地识别缺陷,并用于合规性审计。 
  • 减少人员配备和返工成本: 花在手动测试或纠正缺陷后重新测试上的时间可以花在 IT 部门内的其他计划上。

潜在的限制

  • 不能完全替代人工测试: 尽管自动化可用于各种应用程序和测试用例, 它不能完全替代人工测试。 复杂的测试用例仍然存在,其中自动化无法捕获所有内容,并且对于用户验收测试,最终用户通常必须手动执行测试。 因此,在此过程中正确组合自动化和手动测试至关重要。 
  • 工具成本: 商业测试工具可能很昂贵,具体取决于它们的大小和功能。 从表面上看,企业可能将此视为不必要的成本。 但是,仅重用就可以迅速使其成为一种资产。 
  • 培训费用: 测试人员不仅应该接受编程方面的培训,还应该接受安排自动化测试的培训。 自动化工具使用起来可能很复杂,可能需要用户培训。
  • 自动化需要规划、准备和专用资源: 自动化测试的成功主要取决于精确的测试要求和测试开始前对测试用例的仔细开发。 不幸的是,测试用例开发仍然主要是一个手动过程。 因为每个组织和数据管道应用程序都是独一无二的,所以许多自动化测试工具不会创建测试用例。

数据管道测试自动化入门

并非所有数据管道测试都适合自动化。 评估上述情况以确定哪些类型的自动化将有益于您的测试过程以及需要多少自动化。 评估您的测试要求并确定可以通过自动化测试实现的效率提升。 投入大量时间进行回归测试的数据管道团队将受益最大。 

开发用于自动化测试的业务案例。 IT 必须首先提出案例,以便将价值传递给业务。 

评估选项。 在评估 IT 部门的当前状态和要求后,确定哪些工具与组织的测试流程和环境保持一致。 选项可能包括供应商、开源、内部或混合工具。 

结论

随着测试自动化迅速成为手动测试的重要替代方案,越来越多的企业正在寻找成功实施自动化的工具和策略。 这导致了基于 Appium、Selenium、Katalon Studio 和许多其他工具的测试自动化工具的显着增长。 但是,数据管道和数据工程师、BI 和质量保证团队必须具备正确的编程技能才能充分使用这些自动化工具。 

许多 IT 专家预测,测试人员和开发人员之间的知识鸿沟必须而且将会不断缩小。 与传统的手动方法相比,自动化数据管道测试工具可以显着减少测试代码所花费的时间。

随着数据管道开发能力的不断提高,对更全面、更现代的自动化数据测试的需求也在增加。

时间戳记:

更多来自 数据多样性