最近几年主要做数仓、大数据、BI报表相关的测试,做的并不算太好,写写总结,也算是对自己工作的一个复盘和思路的梳理。
先简单介绍下工作背景:某大型集团下养老险投管中心,主要是投资交易相关的数据,大数据部分只涉及离线数仓,不涉及实时数仓。
无论是之前基于Oracle的传统数仓还是后来基于Hadoop集群搭建起来的大数据仓库,数据处理的整体思路都是一样的。简单的来说就是从各个业务数据库对接业务数据,对数据进行ETL的过程,构建数据宽表,针对实际业务设计业务报表。
画个简单粗糙的数据流转图:
数据的分层测试:
从上面的流程图上可以看出,数据是一层层加工的,那测试也应该是分层的。
1、ODS层:业务数据同步到数仓,用的是DataX,数据保持和业务数据一致。故这一层主要关注表结构和业务数据库是否一致,数据同步逻辑是否合理,基本白盒即可。
2、DWD层,主要是通过SQL进行加工处理,对ODS层数据做一些简单的清洗,如丢弃一些垃圾数据,做一些数据格式的转换等,目的是提供干净的、和业务数据粒度一致的明细数据。
做这一层的数据测试时,需要了解业务数据的含义、业务数据的特点,哪些数据需要丢弃掉。很多时候,这一层的处理并没有明确的需求文档或者设计说明,需要测试人员自己主动去向上游业务系统的同事去了解并作出自己的判断。我一般会咨询上游的测试、运维、开发、产品同事,多问多沟通,再根据自己在上游数据库对数据进行的分析