浅谈ETL测试(二)

简介:   今天继续和大家分享下作为大数据测试工程师对ETL测试的一些认识。ETL测试认知续篇。  一、ETL测试类型  Production Validation Testing  ---该类型的ETL测试是在数据迁移至生产系统时进行的。为了保证生产业务的正常运营,生产系统中的数据必须以正确的顺序进行排序。在该ETL测试类型中要注意从数据层面进行自动化测试和管理能力的植入。

  今天继续和大家分享下作为大数据测试工程师对ETL测试的一些认识。ETL测试认知续篇。

  一、ETL测试类型

  Production Validation Testing

  ---该类型的ETL测试是在数据迁移至生产系统时进行的。为了保证生产业务的正常运营,生产系统中的数据必须以正确的顺序进行排序。在该ETL测试类型中要注意从数据层面进行自动化测试和管理能力的植入。

  Source to Target Testing(Validation Testing)

  ---该类型的测试主要由源转换的数据是否满足预期的转换目标。

  Application Upgrades(升级测试)

  ---该类型的ETL测试是可以自动生成的,能节省大量的测试开发时间。主要检查旧应用或存储库中提取的数据是否与新的应用或新的存储库中的数据完全相同。

  Metadata testing(元数据测试)

  ---元数据测试包括数据类型检查、数据长度和索引/约束检查。

  Data Completeness Testing(数据完整性测试)

  ---当把所有期望的数据从源加载到目标表时,就算完成了数据完整性测试。在数据完整性测试过程中,我们还可以进行一些简单的转换或无转换的源与目标之间的计数、聚合和实际数据比较和验证的测试。

  Data Accuracy Testing(数据准确性测试)

  ---该类型测试验证数据正确地完成加载和按预期目标进行转换。

  Data Transformation Testing(数据转换测试)

  ---测试数据转换是一个复杂的过程,并不是简单地写一个源SQL查询并与目标表进行比较来实现的。可能需要为每个验证case写较复杂的SQL联合查询,来验证转换规则。

  Data Quality Testing(数据质量测试)

  ---数据质量测试包含语法和基准测试。为了避免在业务过程中由于日期或唯一编号(例如订单号)引起的错误,进行数据质量测试。

  Incremental ETL Testing(增量ETL测试)

  ---该类型测试主要验证旧数据和新数据的完整性,并添加新数据。增量测试验证增量ETL过程中,插入和更新是否满足预期的要求。

  GUI/Navigation Testing

  ---该类型测试主要检查生成的大数据报告的UI\导航方面是否正常。

  语法测试:根据无效字符、字符模式、不正确大小写、顺序等出具脏数据测试结果

  基准测试:基于数据模型检查数据,例如二手手机靓号购买客户ID数据质量测试,包含:数字检查、日期检查、精度检查、数据检查、零校验等等

  二、ETL测试的方法

  1.数据量统计

  源表和目标表数据量统计。全量的加工表跟对标数据表之间的指标/维度数据值的量级、条数等

  2.转换规则测试

  <1>.数据格式的合法性。对于数据源中时间、数值、字符等数据的处理,是否符合数据仓库规则,是否进行统一的转换 ----收数的时候走统一的校验逻辑。

  <2>.值域的有效性。是否有超出维表或者业务值域的范围。---目前价格等数值型的,统一使用(22,6)精度的规则。

  <3>.空值的处理。是否捕获字段空值,或者需要对空值进行替换为其他含义值的处理。

  <4>.主键的有效性。主键是否唯一。

  <5>.乱码的检查。特殊符号或者乱码符号的处理规则。---在解析文本文件时使用统一的分隔符,规则是字段值不会出现类似这样的字符串,如使用分隔符:#¥%&*,保证其唯一性,否则在解析文件入库时会出现串列现象。

  <6>.脏数据的处理。理论上收数层做完之后,不存在数据规格问题的脏数据。但是目前依据数据系统情况看,还无法完全避免。所以一些重要指标的计算逻辑需要考虑到可能会有脏数据的问题。

  3.抽样测试

  通过抽样,测试源表和目标表映射是否正确。

  4.加载规则测试

  一般加载方式有两种:全量加载和增量加载

  <1>.增量加载方式,为了避免收数时个别数据源问题导致可能会断更几天的情况,我们通常使用滑块窗口方式增量,当数据源问题恢复后自动补全了滑块内缺失的部分。

  对于增量抽取,捕捉变化的数据有如下几种:

  1).监控增量数据

  因为项目在上线前一般都会试运行一段时间,所以在这段时间,就要每天做表中数据量的的监控。

  对于日全量表的监控:只要看源表和目标表数据量是否一致就可以

  对于增量数据量监控:看全量+增量的数据是否与源表数据量是否一致。根据不同的业务规则,查看是否正确。

  然后通过多日监控,可以发现不管是增量还是全量,数据量基本都会处于一个值左右,幅度不会太大,如果出现特殊情况,就要去考虑检查一下它的正确性了。这种通常要根据线上的业务监控来实现。

  2).监控增量运行时间

  通过监控增量的运行时长,可以发现性能问题和批量数据的运行是否成功。对于时间浮动比较大的增量表,可以第一时间发现问题并解决问题。

  运行时间监控:对于业务性能要求高的情况。比较在意的是性能问题,以确保在规定的时间内,完成跑批。我们要通过监控增量运行时间,及时发现程序的性能问题。

  <2>.全量加载方式

  由于我们采取的是全量加载+增量加载(采用时间戳方式),我这里指的全量加载即数据仓库中数据的初始化。

  全量加载的测试方案相对要简单些。

  1).测试源和目标表的数据量的一致性

  2).运行1,2,3,4测试方法测试一般来说即可。

  5.性能测试

  确保数据在规定和预计的时间内被加载到数据仓库中,以确认改进的性能和可扩展性。

  6.测试用例

  项目中的关键业务,复杂逻辑部分作为测试重点

  基础数据:可以为真实数据,也可以单纯手工造数据。因为ETL数据量较大,并且表中字段数量比较多,各表关联比较大,所以本人觉得还是用真实数据效率比较高。

  测试用例的编写:测试用例可以单独设计,也可以采用调度的思想进行设计,采用调度方法进行设计时,能一次验证多个用例,另外也方便回归。

  三、怎么创建ETL测试用例

  <1>.ETL测试的目的是确保在业务转换完成后从源加载到目标表的数据是正确无误的。

  <2>.ETL测试同样还涉及在源和目标表之间转换时的各个阶段的数据的验证。

  <3>.在从事ETL测试时,有三份文档是ETL测试人员实时使用的:

  1). ETL映射表:一个ETL映射表包含源和目标表的所有的信息,包括每个列及其引用表等约束关系。ETL测试人员需要以此为依据来编写测试SQL查询语句,因为在ETL测试各阶段可能需要编写具有多个连接的大查询来验证数据。ETL映射表在为数据验证编写查询时提供大量的有用的信息。

  2). 源、目标数据库模式:该模式应该便于验证映射表中的所有细节。

  3). 开发实现需求的设计文档。

目录
相关文章
ETL测试工具简介
ETL测试 ETL测试过程与其他测试过程类似,包括一些阶段。 确定业务需求 测试计划 设计测试用例和测试数据 测试执行和错误报告参考 总结报告 测试结束 ETL测试的类型 生产验证测试: 也称为表平衡或产品对帐。
|
22天前
|
网络协议 安全 测试技术
性能工具之emqtt-bench BenchMark 测试示例
【4月更文挑战第19天】在前面两篇文章中介绍了emqtt-bench工具和MQTT的入门压测,本文示例 emqtt_bench 对 MQTT Broker 做 Beachmark 测试,让大家对 MQTT消息中间 BenchMark 测试有个整体了解,方便平常在压测工作查阅。
116 7
性能工具之emqtt-bench BenchMark 测试示例
|
1月前
|
测试技术 C语言
网站压力测试工具Siege图文详解
网站压力测试工具Siege图文详解
29 0
|
15天前
|
机器学习/深度学习 数据采集 人工智能
【专栏】AI在软件测试中的应用,如自动执行测试用例、识别缺陷和优化测试设计
【4月更文挑战第27天】本文探讨了AI在软件测试中的应用,如自动执行测试用例、识别缺陷和优化测试设计。AI辅助工具利用机器学习、自然语言处理和图像识别提高效率,但面临数据质量、模型解释性、维护更新及安全性挑战。未来,AI将更注重用户体验,提升透明度,并在保护隐私的同时,通过联邦学习等技术共享知识。AI在软件测试领域的前景广阔,但需解决现有挑战。
|
4天前
|
SQL 测试技术 网络安全
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
14 0
|
6天前
|
测试技术 API
探索软件测试中的自动化工具与挑战
本文探讨了软件测试领域中自动化工具的应用与挑战。通过分析目前主流的自动化测试工具,探讨了其在提高测试效率、减少人工成本、增强测试覆盖率等方面的优势。然而,自动化测试也面临着诸如脆弱性、维护成本高等挑战。最后,提出了一些应对挑战的建议,以期为软件测试领域的自动化工作提供一些启示。
13 1
|
11天前
|
机器学习/深度学习 人工智能 测试技术
提升软件测试效率与准确性的策略与工具
【5月更文挑战第2天】 在软件开发生命周期中,测试阶段是确保产品质量的关键。然而,传统的测试方法往往耗时且容易出错。本文将探讨一系列现代软件测试策略和工具,旨在提高测试效率和准确性。我们将分析自动化测试框架、持续集成(CI)、测试驱动开发(TDD)以及人工智能(AI)在测试中的应用,并讨论如何结合这些技术和方法来优化测试流程。
|
12天前
|
敏捷开发 监控 测试技术
探索自动化测试工具Selenium Grid的高效集成策略
【4月更文挑战第30天】在现代Web应用的快速迭代和持续部署中,测试自动化已成为确保产品质量的关键。Selenium Grid作为一款支持多种浏览器和操作系统的测试工具,提供了并行执行测试用例的能力,极大地提升了测试效率。本文将深入探讨如何高效地将Selenium Grid集成到现有的测试框架中,以及实施过程中的最佳实践,帮助团队最大化测试覆盖率,同时降低资源消耗。
|
12天前
|
中间件 测试技术 API
探索自动化测试工具的新边界:Selenium与Appium的集成实践
【4月更文挑战第30天】 随着移动应用和Web应用的不断融合,传统的自动化测试工具需要适应新的测试环境。本文将详细分析Selenium和Appium这两款流行的自动化测试工具的集成实践,探讨如何构建一个能够同时支持Web和移动端应用的自动化测试框架。通过对比两者的技术架构、功能特性以及在实际项目中的集成过程,我们旨在为读者提供一个清晰的指导,帮助他们在复杂的应用环境中实现高效、稳定的自动化测试流程。
|
13天前
|
机器学习/深度学习 人工智能 机器人
深入理解自动化测试:框架、工具与实践
【4月更文挑战第30天】 在现代软件开发周期中,自动化测试已成为确保产品质量和加速市场交付的关键环节。本文将探讨自动化测试的核心框架、常用工具以及实际应用的最佳实践,旨在为软件测试工程师提供深入的理解和有效的策略,以改进其自动化测试流程。我们将分析几种流行的测试自动化框架,包括Selenium、Appium和JUnit,并讨论如何根据项目需求选择适合的工具。此外,文中还将介绍持续集成(CI)环境下的自动化测试策略,以及如何通过测试结果分析和报告来优化测试过程。目标是帮助读者构建更健壮、更高效的自动化测试系统。

热门文章

最新文章