ETL测试小结

一、ETL测试的重要性:

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

在技术上,ETL主要涉及到关联、转换、增量、调度和监控等几个方面;数据仓库系统中数据不要求与联机事务处理系统中数据实时同步,所以ETL可以定时进行。但多个ETL的操作时间、顺序和成败对数据仓库中信息的有效性至关重要。所以做好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).测试Datastage中源、目标映射是否一致

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

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

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

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

时间: 2024-10-12 08:30:16

ETL测试小结的相关文章

iSensor APP 之 摄像头调试 MT9D001 MT9P031 测试小结 200万像素和500万像素摄像头

iSensor APP 之 摄像头调试  MT9D001 MT9P031 测试小结 iSensor app 非常适合调试各种摄像头,已测试通过的sensor有: l  OV7670.OV7725.OV9650.OV9655.OV9653.OV5642.OV5640.OV5620 l  MT9T001.MT9M001.MT9P031.MT9V032.MT9V034.MT9D001.MT9D112.MT9D111 等 今天又重新测试了下MT9D001C12STC,MT9P031C12STC特此留下文

基于USB3.0的双目相机测试小结之CC1605配合CS5642 双目 500w摄像头

基于USB3.0的双目相机测试小结之CC1605配合CS5642  双目 500w摄像头 CC1605双目相机评估板可以配合使用柴草电子绝大多数摄像头应用 如:OV5640.OV5642.MT9P031.MT9V034.MT9M001.MT9F002等等 本次测试以CS5642V3摄像头为例,sensor为OV5642 测试分辨率为 1280*720:720p 1280*1024:SXGA 1920*1080:1080p 2048*1024 2048*1536:3M 测试帧率:15fps 一.U

MongoDB for node.js developers 七周学习-最终测试小结(1)

MonogoDB官网上提供了许多免费课程,就选择了"MongoDB for node.js developers"学习.课程当然是英文的啦,不过有中文字幕~,每次课程后还有练习.七周的课程过去的很快,学到了不少的内容.借助着最终测试的题,做一次小结,省得自己不久后忘记(哎,记性差= =) 最后的测试一共有十道题,考察的内容分别是:1.查询 2.聚合 3.更新$addToSet 4.更新$inc 5.索引  6.添加优化 7.游标 8.副本 9.片键 10.索引的explain属性 1.

Qihoo360 Atlas MySQL Proxy测试小结

Qihoo360将他们改造后的MySQL Proxy项目开源了,至于为什么起名Atlas就不清楚了,项目地址:https://github.com/Qihoo360/Atlas.我2008年曾测试过官方版本的MySQL Proxy,主要是看中其连接池以及读写分离功能,不过当时的版本效率实在太差,后面就没再关注了.这几天对Qihoo360 Atlas做了下测试,下面是测试结果. 环境准备 服务器端: 测试机 DELL PE R710 CPU E5620  @ 2.40GHz(4 core, 8 t

monkey测试小结

不废话  直接上货! monkey是android系统里自带的程序,位置:/sdk/tools/lib/monkey.jar,monkey.jar是由一个monkey的shell脚本执行,脚本路径是/sdk/tools/bin/monkey: 因此可以在shell环境下直接执行monkey.(注意配置环境) 官方的货可以直接adb shell monkey -help 查看: monkey -p com.youku.phone --ignore-crashes --ignore-timeouts

asp.netMVC中的自动绑定模型测试小结

很久没有自己测试测试一些东西了,今天特意测试了一下MVC中自动绑定模型.本人也是小菜,希望能帮助到小小菜....嘿嘿 1.首先,创建一个MVC4的项目 2.创建一个Controller(控制器),有些小小菜肯定也知道Home是路由里默认的. 3.控制器都有了,默认会有个Index动作方法,我们只需要在拷贝一个接受Post请求的action即可 public ActionResult Index() { return View(); } [HttpPost] //视图中加的是实体类中的属性名对应

Openfire性能优化与压力测试小结

Openfire配置: Ubuntu安装Openfire后性能极低,压力测试只能到4000在线用户数. 第一步 修改Openfire运行环境 通过ps -aux | grep openfire查看openfire服务能观察到启动命令为: /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java -server -DopenfireHome=/usr/share/openfir -Dopenfire.lib.dir=/usr/share/openfire/lib

使用IP欺骗Loadrunner并发测试小结

测试要求: 在本次测试中,我需要并发50个User,每一个User占用一个独立的IP,并且只执行一次脚本.脚本中发起两个请求,其中第一次请求返回200后才执行第二个请求.使用win7 OS. 前置及Generator设置: 我的Run-time Settings这样设定: Run Logic: Number of Iterations: 1 (保证只执行一次脚本) Log: Enable Log. Always send messages.(不是只在出错时发送log.我需要通过log来验证我的测

nginx测试小结

最近在工作当中需要使用nginx,就对nginx进行进一步的了解,测试. 工作需求是在微服务架构的基础上,客户端通过nginx反向代理访问服务端,确保当一个服务端出现问题时能及时切换到正常工作的服务端.测试使用nginx-1.13.2.rar,官网地址为:http://www.nginx.org/;测试使用的ip服务端为:10.74.214.109:8088.10.74.214.109:8091,服务端启动时的端口为8090;程序首页的路径为:"D:\cloudCode\internet\Cor