一、ETL 测试方法论 根据 ETL 各个阶段的不同特点,可以将 ETL 测试分为:物理数据测试和逻辑数据测试。 物理数据测试:是指纯粹从技术上保证数据的有效性,与业务无关。 逻辑数据测试:是从业务逻辑上,对原始指标以及最终产出的业务指标之间的逻辑平衡性监控。通过这些监控,能让底层 etl 技术人员第一时间的发现数据问题并且解决问题,同时也能根据这些监控提前知道可能产生的结果,为后续产生的业务分析报告作出进一步的修正,从而保证数据仓库的数据的是有效的是能真正反应事实的。(引用 adolph) 在 ETL 测试过程中,根据实际情况可以将 ETL 的这些环节拆分或组合成多个测试面,根据不同的测试面进行不同重点的测试。目前可以将 ETL 环节拆分成以下 4 个测试面: 源数据->odl、odl->adl、idl->adl、源数据->adl 测试面, 其中源数据->bdl 侧重物理数据测试,bdl->adl 侧重逻辑数据测试。 各个测试面的关注点如下: 1. 源数据到 odl 的测试 主要关注以下几个方面(侧重物理数据测试): 对 ETL 抽取方案的测试。 首先是抽取方案稳定性,如果源体系表结构有改变,需要保证 ETL 抽取方案不变或者微变。 其次数据传送接口方案合理性。源系统以何种形式把数据提供给目标系统,源系统推送或者目标系统主动抽取。数据日期、数据大小、记录数、增量 or 全量。 对于抽取策略的测试。 检测抽取策略的合理性。目前常用的抽取策略有全量抽取、增量抽取。对于增量抽取,捕捉变化的数据有如下几种:1)采用快照方式。需要业务系统建立 insert,u pdate,delete 触发器。2)时间戳方式,在业务系统表建一个时间戳字段,一旦数据发生变化,则修改此字段。3)全表删除插入方式,每次 ETL 操作先将目标表数据删除,然后抽取。4)hash 比对,是全表比对的一个扩展,通过计算主要业务字段的 MD5 校验码存入 hash 维表,通过与 hash 维表的比对进行抽取。5)日志表方式,跟进业务系统的日志表进行数据抽取。6)oracle 变化数据捕捉,通过分析数据库自身日志判断变化的数据。 对转换规则的测试。 首先是数据格式的合法性。对于数据源中时间、数值、字符等数据的处理,是否符合数据仓库规则,是否进行统一的转换。 其次是值域的有效性。是否有超出维表或者业务值域的范围。 第三是空值的处理。是否捕获字段空值,或者需要对空值进行替换为其他含义值的处理。 第四是主键的有效性。主键是否唯一。 第五是乱码...