ETL的测试

二、ETL测试过程:

在独立验证与确认下,与任何其他测试一样,ETL也经历同样的阶段。

1)业务和需求分析并验证。

2)测试方案编写

3)从所有可用的输入条件来设计测试用例和测试场景进行测试

4)执行所有用例直到满足退出标准

5)书写总结报告和测试过程结束。

三、ETL测试的规则

测试数据的正确性、一致性、完整性

四、ETL测试的方法

1.数据量统计:

源表和目标表数据量统计

2.转换规则测试

首先是数据格式的合法性。对于数据源中时间、数值、字符等数据的处理,是否符合数据仓库规则,是否进行统一的转换。

其次是值域的有效性。是否有超出维表或者业务值域的范围。

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

第四是主键的有效性。主键是否唯一。

第五是乱码的检查。特殊符号或者乱码符号的护理规则。

第六是脏数据的处理。比如不符合业务逻辑的数据

3.关键字段测试

通过转换规则,查询关键字段是否正确。比如保费收入字段,看其是否乘以汇率,共保比率等;

一般表中会添加时间戳,时间戳数据和数据格式是否正确

4.抽样测试

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

5.加载规则测试

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

增量加载一般是先删后插(delete and insert)。

全量加载一般是先清空再插入(truncate and insert),但也要分情况,我们做的项目,源-->ODSSGA层为先清空后插入,向外提供的接口数据则为先删后插,这需要根据不同的情况不同对待。

增量加载方式

对于增量抽取,捕捉变化的数据有如下几种:1)采用快照方式。需要业务系统建立insert,update,delete触发器。2)时间戳方式,在业务系统表建一个时间戳字段,一旦数据发生变化,则修改此字段。3)全表删除插入方式,每次ETL操作先将目标表数据删除,然后抽取。4)hash比对,是全表比对的一个扩展,通过计算主要业务字段的MD5校验码存入hash维表,通过与hash维表的比对进行抽取。5)日志表方式,跟进业务系统的日志表进行数据抽取。6)oracle变化数据捕捉,通过分析数据库自身日志判断变化的数据。

由于我们采取的是时间戳方式,这里就只介绍这种方式的测试方案。

1)测试结果是否遗漏数据,如果为时间戳方式,要尤其注意时间戳是否带时分秒

2)增量规则是否正确

对于源表做好足够的数据探查,明白源表中的数据的增量是怎么回事,必要时需要讨论,然后根据业务规则做增量规则方案。

3)监控增量数据

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

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

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

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

4)监控增量运行时间

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

全量加载方式

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

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

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

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

6.性能测试

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

7.测试用例

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

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

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

8.发布实施后

1).测试informatica中源、目标映射是否一致

2).测试开发库和生产库中ETL程序是否一致

3).监控增量数据和增量运行时间。

增量数据监控:项目发布后,我们可以观察数据的波动趋势,一般来说数据的波动是在一定范围,遵循一定原则的,如果发现数据波动超出了预计范围,这个时候就需要特别注意了。

增量运行时间监控:往往项目上线后,比较在意的是性能问题,以确保在规定的时间内,完成跑批。我们要通过监控增量运行时间,及时发现程序的性能问题。

时间: 2024-11-13 08:08:34

ETL的测试的相关文章

成功部署SSIS中含有Oracle数据库连接的ETL包

RT,正式写之前,我想说,真TMD不容易!!! 写博客,责任心,很重要 在百度搜出来的内地博客技术文章(CSDN.ITEYE.CNBLOGS……),大部分都是不全面,只针对一个遇到的问题点的记录,可以说毫无参考价值,甚至会把你指向错误的方向. 为什么?因为无当时系统环境交待,工具版本信息,其它客观因素(非原生,有插件等等).但是搞技术的都知道,这些因素非常重要. 但我们再看看台湾 dotblogs 上的文章(百度偶尔抽风,给点tw的结果),案例: http://www.dotblogs.com.

众包测试中的游戏化

Mahesh Gudipati有超过10年的测试经验,参与过不少不同领域的项目.他在数据仓库/BI测试,需求预测测试,大数据测试和产品测试方面有丰富的经验.他在多个ETL/DW测试项目中实现了自动化技术,并因为开发出了ETL/DW测试的端对端解决方案获得了一项专利.他是一名获PMP认证的项目经理,还管理过多个数据仓库测试项目.他帮助建立公司内部的群体测试流程,最近还一直在开发数据项目中的技术的测试解决方案. Jaya Bhagavathi Bhallamudi在IT行业干了超过16年.她是一名C

大数据应用测试经验总结

大数据应用测试过程与传统的web系统有较大的不同,大数据应用测试通常会分为web侧和ETL侧测试,web侧基本就是功能测试,而ETL(Extracting-Transfroming-Loading)测试主要指从任何外部系统提取.转换.载入数据到目标地.从底层数据采集.数据处理.到上层应用展现. 一.从技术架构设计上,分为以下几块: 数据采集:采集使用java和python程序从文件服务器下载文件,并把文件写入kafka.Hbase和Hive.Mysql中: 计算引擎:使用Hive on Tez计

APPARENT DEADLOCK!!! 错误解决过程

项目环境 数据库:oracle 中间件:WAS 2.  问题描述 2015.05.21(是个好日子),早上发现was后台报错如下: [15-5-21 7:31:01:171 CST] 00000027 SystemErr     R com[email protected]498e498e -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks! 3.问题解决过程              

ETL测试小结

一.ETL测试的重要性: ETL(Extract-Transform-Load的缩写,即数据抽取.转换.装载的过程)作为BI/DW(Business Intelligence)的核心和灵魂,能够按照统一的规则集成并提高数据的价值,是负责完成数据从数据源向目标数据仓库转化的过程,是实施数据仓库的重要步骤.如果说数据仓库的模型设计是一座大厦的设计蓝图,数据是砖瓦的话,那么ETL就是建设大厦的过程.在整个项目中最难部分是用户需求分析和模型设计,而ETL规则设计和实施则是工作量最大的,约占整个项目的60

12个强大的Web服务测试工具

在过去的几年中,web服务或API的普及和使用有所增加. web服务或API是程序或软件组件的集合,可以帮助应用程序进行交互或通过形成其他应用程序或服务器之间的连接执行一些进程/事务处理.基本上有两种类型的web服务——基于互联网协议,REST和SOAP推动数据和信息的通讯. 由于这些web服务暴露于网络并且分布于不同的网络,所以它们很容易受到风险和安全威胁,从而影响基于它们的进程.因此,web服务或API测试非常有必要,可以确保它们执行正确并正确地响应查询. 市场上有不少商业和开源的测试工具可

数据库代码覆盖率测试功能测试建模压测profiling;

数据库管理系统(简称 DBMS)无疑是任何数据密集型应用程序当中最为重要的组成部分,其肩负着处理大量数据以及高复杂性工作负载的重任.然而,数据库管理系统本身却往往难于管理,因为其中通常包含数百种配置"旋钮",用于控制诸如缓存内存分配量以及存储介质数据写入频率等要素.各类企业一般需要聘请专业人士以协助相关调配工作,但对于大多数企业而言,此类专业人才的开价亦相当高昂.而实际上,DBA所面临的挑战还远不止这些. 而今天一则名为"OtterTune"的机器学习DBMS系统刷

ETL工具—Kettle数据的导入导出—数据库到数据库

ETL简介: ETL(Extract-Transform-Load的缩写,即数据抽取.转换.装载的过程) 数据库到数据库 下面讲解:kettle工具实现方法 案例目的:从用户scott下将emp表导入到用户testuser下. 准备工作:首先在testuser账户下,新建一个与scott账户中emp表结构相同的表. 操作步骤: 1.检测一下testuser账户下是否已经建立了emp的空表. 图1:检测用户testuser中的emp表 2.新建一个"转换",拖入"表输入&quo

4.airflow测试

1.测试sqoop任务1.1 测试全量抽取1.1.1.直接执行命令1.1.2.以shell文件方式执行sqoop或hive任务1.2 测试增量抽取2.测试hive任务3.总结 当前生产上的任务主要分为两部分:sqoop任务和hive计算任务,测试这两种任务,分别以shell文件和直接执行命令的方式来测试. 本次测试的表是airflow.code_library. 1.测试sqoop任务 1.1 测试全量抽取 1.1.1.直接执行命令 from airflow import DAG from ai