ETL测试范围列表
| 编号 | 类型 | 描述 | 备注 |
|---|---|---|---|
| 1 | 功能测试 | 验证目标表所在库名 | |
| 2 | 功能测试 | 验证目标表名 | |
| 3 | 功能测试 | 验证目标表数据编码 | 特殊符号或者乱码符号的处理规则 |
| 4 | 功能测试 | 验证目标表所有字段名 | |
| 5 | 功能测试 | 验证目标表字段顺序 | 一般没有这个需求 |
| 6 | 功能测试 | 验证目标表的字段类型转换 | 即验证从源表类型转换成目标表类型是否正确,是否能够满足源字段在转换后的存储。如,源表字段是VARCHAR类型,目标表对应字段是CHAR类型;源表字段是DOUBLE类型,目标表对应字段是INT类型。 清洗的过程中一般不会转化字段类型,平接推数据的时候会转,会发生在一头一尾,数据不做逻辑上的改动采用抽样测试,尽量会抽比较复杂的数据。 1.校验表结构。源信息,mysql字符串 char 到hive里面类型都是string,虽然字段产生对应,但是涉及到了类型转化。 2.校验里面的数值。可能乱码,字符集不匹配,数据丢失..... 例如:日期<->数字可能出错 |
| 7 | 功能测试 | 根据关联逻辑,验证目标表数据总量 | 表字段的唯一性 |
| 8 | 功能测试 | 根据关联逻辑,验证隔离数据的处理 | 业务上不满足关联逻辑的数据可能被隔离,但是不丢弃,所以要单独存放被隔离的数据,或者日志记录。例如:用一个字段枚举值0、1,屏蔽异常数据,区分是否有效,确认判断舍弃的逻辑,这个需要单测。可能是数据处理的有问题,也可能是上游提供的数据有问题,会把过滤掉的异常数据专门存放到一个地方,我们需要暴露这样的问题。 |
| 9 | 功能测试 | 基于已有数据,验证目标表每个字段的转换逻辑 | 已有真实数据可能不足以覆盖所有的转换逻辑; 含其特殊默认转化逻辑,如大小写是否区分、null值的自动填充处理、去重规则 |
| 10 | 功能测试 | 基于已有数据,补充构造一些测试数据一覆盖 所有转换逻辑,验证目标表每个字段的转换逻辑 |
可覆盖所有的逻辑,与上面一个二选一 |
| 11 | 功能测试 | 验证目标表中抽样数据or全量数据的正确性 | 确定抽样策略 |
| 12 | 功能测试 | 验证目标表中关键字段的: 区间,如min、max,一般针对值字段; 分布,如值范围的list、count、percent,一般针对值是列表型字段; 总计,即sum,一般针对值字段; 饱和度,即空字段和非空字段count和percent,数据有效性校验 |
时间有限的情况下关键字段的抽样比对选取测试数据方式,确保测试关键字段的大框架没问题,就算再怎么歪,也不会歪的离谱 |
| 13 | 功能测试 | 验证相同源之间的日常更新策略 | 具体步骤参见:前文更新策略测试 |
| 14 | 功能测试 | 验证不同源之间的日常更新策略 | |
| 15 | 功能测试 | 验证数仓初始化更新策略 | 即把历史全量数据迁移到数据仓库以初始化数据仓库 |
| 16 | 功能测试 | 验证数仓reload更新策略 | 当数仓数据要从上游系统全量Reload数据,需要根据更新策略分析重跑当前层ETL的方法,以及后续各层的Reload方法、Recalculate方法,如后续ETL重跑、Dashboard重跑、标签回算等的影响。 |
| 17 | 功能测试 | 验证调度策略 | |
| 18 | 功能测试 | 验证监控数据 | 主要是去每天自动验证算出来的数据对不对,如果数据有问题自动发邮件告警通知相关人员去判断问题所在 |
| 19 | 单元测试 | 自定义函数单元测试 | 如果是通用的UDF且之前测试过的就不必再测 |
| 20 | 规范检查 | 校验各种命名规范 | 如使用临时表的命名 |
| 21 | 规范检查 | 校验实现方式是否统一 | 如避免同时用dataframe和sql两种方式实现 |
| 22 | 规范检查 | 校验复杂任务是尽量拆分 | 如避免巨复杂sql(如超过100行),以保证可读性和可维护性 |
| 23 | 规范检查 | 校验常用逻辑有提取为公共模块 | 如定义常用UDF |
| 24 | 规范检查 | 校验无hardcode一些配置 | |
| 25 | 规范检查 | 校验每个表DDL中定义的文件的压缩格式、存储格式,并且是统一的 | |
| 26 | 性能测试 | 统计单目标表的任务执行时间以及资源占用情况 | 基于某环境参数(系统资源、磁盘资源)和数据量,用于评估性能 |
| 27 | 性能测试 | 统计单层所有目标表任务执行时间以及资源占用情况 | |
| 28 | 性能测试 | 统计所有层所有目标表任务执行时间以及资源占用情况 | |
| 29 | 功能测试 | 验证目标表pt_tag字段 | hive和mysql如果有pt,都要有pt_tag。用来同步数据,需要非分区日期字段映射 |
| 30 | 功能测试 | 验证MYSQL目标表索引正确 | 1.where 条件里面的字段都要加上索引 2.index_表名_字段名称 |

浙公网安备 33010602011771号