[大数据测试]ETL测试或数据仓库测试入门

转载自: 

http://blog.csdn.net/zhusongziye/article/details/78633934

概述

在咱们学习ETL测试以前,先了解下business intelligence(即BI)和数据仓库。数据库

什么是BI?

BI(Business Intelligence)即商务智能,它是一套完整的解决方案,用来将企业中现有的数据(原始数据或商业数据或业务数据等)进行有效的整合,快速准确地提供报表并提出决策依据,帮助企业作出明智的业务经营决策。后端

原始数据记录了企业平常事务,例如与客户交互的信息、财务信息,员工相关记录等等。app

这些数据能够用于汇报、分析、挖掘、数据质量、交互、预测分析等等工具

什么是数据仓库

数据仓库是为查询和分析而不是事务处理而设计的数据库。学习

数据仓库是经过整合不一样的异构数据源而构建起来的。测试

数据仓库的存在使得企业或组织可以将整合、分析数据工做与事务处理工做分离。字体

数据可以被转换、整合为更高质量的信息来知足企业级用户不一样层次的需求。大数据

什么是ETL

ETL是Extract-Transform-Load的缩写(提取-转换-载入),是一个完整的从源系统提取数据,进行转换处理,载入至数据仓库的过程。.net

咱们从联机事务数据库中提取数据,进行转换处理,匹配数据仓库模式,而后载入至数据仓库数据库中。设计

在一般状况下,大多数的数据仓库要整合非联机事务数据库系统的数据,例如来源文本文件、日志、电子表格等等。

下面咱们一块儿看看ETL是怎么工做的。

例如一个公司,有关于其不一样部门的数据记录,销售、市场、物流等等。每一个部门所处理的客户信息是独立的,并且存储的数据也是相对不一样的,假如销售团队有存储客户的姓名,而物流团队存储的是用户 的ID。

如今咱们想要去检查客户的历史数据,而且想要了解他/她在不一样的营销活动中购买的不一样产品是什么。这将是一项很是枯燥的工做。

该解决方案就是使用数据仓库应用统一的结构来存储通过ETL处理过的不一样源的数据。

ETL可以转换不一样结构/类型的数据集为统一的结构,以便后续使用BI工具生成有意义的分析和表报。

下面咱们看一下ETL过程完整的流程图:

ETLProcess.png

  1. Extract
    提取有效的数据

  2. Transform

  • 将提取的数据转换为数据仓库模式/格式

  • 构建keys:一个key是一个或多个数据属性的唯一标识实例,key的类型能够是主键(primary key)、外键(foreign key)、替代键(alternate key)、复合键(composite key)以及代理键(surrogate key)。这些key只容许数据仓库进行维护管理,且不容许其余任何实体进行分配。

  • 数据清理:在提取好数据后,则进入下一个节点:数据清理。对提取的数据中的错误进行标识和修复。解决不一样数据集之间的不兼容的冲突问题,使数据一致性,以便数据集能用于目标数据仓库。一般,经过转换系统的处理,咱们能建立一些元数据(meta data)来解决源数据的问题,并改进数据的质量。

  1. Load

  • 将转换后的数据载入数据仓库

  • 构建汇集:建立汇集对数据进行汇总并存储数据至表中,以改进终端用户的查询体验。

什么是ETL测试

ETL测试是为了确保从源到目的地数据通过业务转换完成后是准确的。

同时它还涉及数据的验证,即从源到目的地数据各个不一样阶段验证数据。

ETL是Extract-Transform-Load的缩写。

ETL测试过程

与其余测试过程相似,ETL也须要经历不一样的测试阶段。其流程以下:

ETLTestingProcess.png

ETL测试过程主要分为如下五大阶段:

  1. 分析需求、业务和源数据

  2. 获取数据

  3. 实现业务逻辑和维度建模

  4. 构建和填充数据

  5. 生成报告

ETL测试类型

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

  2. Source to Target Testing(Validation Testing)
    该类型的测试主要元组转换的数据是否知足预期的转换目标

  3. Application Upgrades(升级测试)
    该类型的ETL测试是能够自动生成的,能节省大量的测试开发时间。主要检查旧应用或存储库中提取的数据是否与新的应用或新的存储库中的数据彻底相同。

  4. Metadata testing(元数据测试)
    元数据测试包括数据类型检查、数据长度和索引/约束检查。

  5. Data Completeness Testing(数据完整性测试)
    当把全部指望的数据从源加载到目标地时,就算完成了数据完整性测试。在数据完整性测试过程当中,咱们还能够进行一些简单的转换或无转换的源与目标之间的计数、聚合和实际数据比较和验证的测试。

  6. Data Accuracy Testing(数据准确性测试)
    该类型测试验证数据正确的完成加载和按预期目标进行转换。

  7. Data Transformation Testing(数据转换测试)
    测试数据转换是一个复杂的过程,并非简单的写一个源SQL查询并与目标进行比较来实现的。可能须要为每一个行运行多个SQL查询,来验证转换规则

  8. Data Quality Testing(数据质量测试)
    数据质量测试包含语法和基准测试。为了不在业务过程当中因为日期或惟一编号(例如订单号)引发的错误,进行数据质量测试。

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

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

  1. Incremental ETL Testing(增量ETL测试)
    该类型测试主要验证旧数据和新数据的完整性,并添加新数据。增量测试验在增量ETL过程当中,插入和更新是否知足预期的要求。

  2. GUI/Navigation Testing
    该类型测试主要检查生成的大数据报告的UI\导航方面是否正常

怎么建立ETL测试用例

ETL测试是一个能够应用于信息管理领域中不一样工具和数据库的概念。

ETL测试的目的是确保在业务转换完成后从源加载到目的地的数据是正确无误的。

ETL测试一样还涉及在源和目的地之间转换时的各个阶段的数据的验证。

在从事ETL测试时,有两份文档是ELT测试人员实时使用的:

  1. ETL映射表:一个ETL映射表包含源和目的地表的全部的信息,包括每一个列及其引用表等约束关系。ETL测试人员须要更为优美的SQL查询语句,由于在ETL测试各阶段可能须要编写具备多个链接的大查询来验证数据。ETL映射表在为数据验证编写查询时提供大量的有用的信息。

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

ETL测试场景和测试用例

序号 测试场景 测试用例
1 Mapping Doc Validation(映射文件验证) 验证映射文件是否提供了响应的ETL信息,且每一个映射文档的更新日志有记录
2 Validatioin(验证) 1. 根据对应的映射文件验证源与目的地数据仓库的表结构
2. 验证源和目标数据的类型一致
3. 验证源和目标数据的长度一致
4. 验证数据字段类型和格式是指定的类型
5. 验证源的数据类型长度不该小于目标数据类型长度
6. 针对映射表对数据表的列的名称进行验证
3 约束验证 验证目标表中的约束关系知足咱们的指望设计
4 数据一致性问题 1. 要防止语义定义相同,但特定属性的数据类型和长度不一致的问题
2. 防止完整性约束滥用
5 完整性问题 1. 要确保全部指望的数据都已经完整的加载到目标表中
2. 要比较源和目标数据的个数(即确保计数上的完整)3. 检查出现的任何不合格的记录
4. 检查目标表列中的数据没出现被截断的状况
5. 对边界值进行分析检查
6. 要检查比较目标数据仓库和源数据的关键字段的惟一性
6 正确性问题 1. 数据要没有拼写错误或不许确的记录
2. 无null、非唯一或超出范围的数据记录存在
7 转换 验证转换逻辑的正确性
8 数据质量 1. 数值型验证,验证是否为数值类型
2. 日期型验证,验证是否为日期格式,而且在全部日期类型数据的格式应该统一
3. 精度验证,小数点的精度要知足指望的精度
4. 数据检查:检查数据的正确性,完整性
5. null检查
9 拷贝验证 1. 验证目标表中业务要求全部唯一性指标均正确的实现(例如主键、唯一标识的键、或其余任一唯一表示的列)
2. 验证从源数据多列合并而成的数据是正确的
3. 验证仅仅根据客户要求对源数据进行了多列合并至目标表中
10 日期验证 日期是ETL开发过程当中经常使用的数据,主要用于:
1. 了解数据行建立的日期
2. 用于识别活动记录
3. 根据业务需求透视表肯定活动记录
4. 便于基于时间插入、更新记录
11 数据完整性验证 在验证源和目标表中的数据集的完整性时,咱们须要用到交集运算,以肯定目标数据的完整性
12 数据清理 对于不须要的列在载入至数据仓库前应该进行删除

ETL的bug类型

序号 bug类型 描述说明
1 用户接口bug 1. 主要涉及应用的GUI
2.字体、样式、颜色、对齐、拼写错误、导航等等
2 边界值bug 数据的边界值范围
3 等价类划分bug 有效和无效类
4 输出/输出bug 1.未接受的有效值
2. 无效的值被接受
5 计算类bug 1. 数学计算错误
2. 最终输出错误
6 载入条件bug 1. 不运行多用户操做
2. 不运行用户载入指望的数据
7 崩溃bug 1. 系统宕机或挂起
2. 系统没法运行在用户的平台上
8 版本控制bug 1. 无匹配标识
2. 没有可用的版本信息
3. 通常版本控制bug发生在回归测试时
9 硬件问题 通常发生在应用程序不兼容设备
10 文档错误bug 错误的帮助文档信息

ETL测试与数据库测试的不一样

序号 ETL测试 数据库测试
1 验证数据是否按照预期进行了移动 主要验证数据是否遵循了设计预约的数据模式规则或标准
2 验证数据通过业务转换后是否知足预约的转换逻辑以及验证源和目标数据计算是否一致 主要表的主、外键等越苏是否正常
3 验证ETL过程数据表的主外键关系是否保存 验证没有冗余表,数据库最佳化
4 验证已载入的数据拷贝是否知足预期 验证须要的是否缺乏数据

ETL测试工程师的主要责任

对于一个ETL测试工程师而言,其关键的责任有三大类:

  • 源数据分析(数据库、文本等类型数据分析)

  • 业务转换逻辑实现

  • 将通过转换的数据载入至目标表

其余有:

  • 掌握ETL测试软件

  • ETL数据仓库测试组件

  • 在后端执行数据驱动测试

  • 建立、设计、执行测试用例、计划等

  • 标识问题、提供问题解决方案

  • 梳理业务需求和设计测试策略

  • 写SQL或数据库操做代码完成实现各类测试场景

等等其余工做内容。。。

相关文章
相关标签/搜索