转载自: https://www.cnblogs.com/clarke157/p/6383024.htmlhtml
1、ETL测试的重要性:数据库
ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程)做为BI/DW(Business Intelligence)的核心和灵魂,可以按照统一的规则集成并提升数据的价值,是负责完成数据从数据源向目标数据仓库转化的过程,是实施数据仓库的重要步骤。若是说数据仓库的模型设计是一座大厦的设计蓝图,数据是砖瓦的话,那么ETL就是建设大厦的过程。在整个项目中最难部分是用户需求分析和模型设计,而ETL规则设计和实施则是工做量最大的,约占整个项目的60%~80%,这是国内外从众多实践中获得的广泛共识。 oracle
在技术上,ETL主要涉及到关联、转换、增量、调度和监控等几个方面;数据仓库系统中数据不要求与联机事务处理系统中数据实时同步,因此ETL能够定时进行。但多个ETL的操做时间、顺序和成败对数据仓库中信息的有效性相当重要。因此作好ETL测试也相当重要。 性能
2、ETL测试过程: 测试
在独立验证与确认下,与任何其余测试同样,ETL也经历一样的阶段。 设计
1)业务和需求分析并验证。 日志
2)测试方案编写 orm
3)从全部可用的输入条件来设计测试用例和测试场景进行测试 htm
4)执行全部用例直到知足退出标准 blog
5)书写总结报告和测试过程结束。
3、ETL测试的规则:
测试数据的正确性、一致性、完整性
4、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).测试Datastage中源、目标映射是否一致
2).测试开发库和生产库中ETL程序是否一致
3).监控增量数据和增量运行时间。
增量数据监控:项目发布后,咱们能够观察数据的波动趋势,通常来讲数据的波动是在必定范围,遵循必定原则的,若是发现数据波动超出了预计范围,这个时候就须要特别注意了。
增量运行时间监控:每每项目上线后,比较在乎的是性能问题,以确保在规定的时间内,完成跑批。咱们要经过监控增量运行时间,及时发现程序的性能问题。