离线数仓测试

一.文档编写目的

为了指导和规范大数据测试人员对离线数仓的测试方法,减少因为数据测试不够严格,导致后期数据应用出现偏差和错误的情况。特别关注下后面的测试总结,是为了减少漏测,添加常见核心测试点,希望能够指导离线数仓测试人员。

二.大数据测试类型

1.功能测试

通常是数据完整性测试,数据一致性测试,数据准确性测试,数据及时性测试,数据约束检查,数据存储检查,SQL文件检查,数据处理逻辑验证,调度任务检查

a)数据约束检查

检查数据类型,数据长度,索引和主键等是否符合要求,检查目标表的约束条件是否满足设计预期。

b)数据存储检查

c)SQL 脚本文件检查

  • 开发规范检查  ---这块现在没有严格要求,主要是检查HiveQL注释,字段,表名,中间表,“脏”数据处理,join操作等
  • SQl语法检查--检查SQL连接方式,函数,聚合和关键字的使用是否正确,确认union(去重)和union all(不去重) 

 

d)数据处理逻辑验证

  • 验证过程是否符合业务逻辑,运算符和函数的使用是否正确。
  • 对异常值,“脏”数据,极值,特殊数据(0值,负数等)的 处理是否符合预期。
  • 字段类型与实际数据是否一致,主键构成是否合理
  • 去重记录,是否按照去重规则规则去重处理
  • 数据的输入输出是否符合规定格式

e)调度任务检查

  • 依赖的任务是否配置合理
  • 任务依赖层次是否合理
  • 任务是否在规定时间内完成
  • 任务调度时间设置是否合理

 

 

 

 

 

 

性能测试

 

 

 

 

性能测试结果

场景编号
并发线程
数据量
运行时间/s
QPS
GC
Gc Time/ms
95%延时/ms
1 1 100万条插入数据 753        
2 16 100万条插入数据 70        
3 50 100万条插入数据 43        
4 100 100万条插入数据 39        
5 200 100万条插入数据 39        
6 16 50万条读取数据,50万条更新数据 95        
7 50 50万条读取数据,50万条更新数据 68        

三.离线数仓测试流程

分析业务和需求->制定测试方案和测试计划->设计测试用例和准备测试数据->测试执行→生成测试报告并分析结果

(1)分析业务和需求

在澄清会上就要理解业务和需求

(2)制定测试方案和测试计划

参与技术评审,了解技术架构设计,模块设计和数据模型设计等,并根据不同业务场景,进行项目排期

(3)设计测试用例和准备测试数据

测试用例设计

测试点
测试用例
源数据和目标数据验证
  • 对照相应的映射表验证源表和目标表的结构
  • 验证源数据类型和目标数据类型是否相同
  • 验证元数据和目标数据的长度
  • 对照映射文档验证列名
数据一致性验证 检查完整性约束是否正确使用
数据完整性验证
  • 确保按预期将数据从源传输到目标
  • 比较源和目标的记录计数
  • 检查数据是否在目标表的列中有被截断现象
  • 检查被拒绝的记录
  • 检查边界值
  • 检查加载数据的唯一键属性
约束验证 验证是否按预期为特定表定义了约束
数据正确性验证

检查数据是否已记录或拼写是否正确

检查NULL,以及

数据转换验证  

造数

  • 业务上根据图形用户界面构造数据
  • 批量数据生成工具构造数据
  • 通过数据库生成数据
  • 真实业务数据脱敏后导入测试环境
  • 基于中间件构造数据

(4)测试执行

(5)生成测试报告并分析结果

 

三.测试总结

1.典型问题

a)数据质量

我们需要关注数据本身的质量问题,以及数据处理过程中各种处理方式和结果是否满足预期,是否与逻辑不相符,是否影响后续业务的使用等问题,常见如下:

  • 数据记录不唯一
  • 数据处理过滤条件不正确(特别注意状态和是否过滤删除)
  • 处理前后的数据不一致或有部分数据丢失(一般是关联的数据类型不同,关联有问题)
  • 数据流转过程中NULL值被自动替换的问题。
  • 处理前后的数据列顺序错误
  • 数据的约束关系不正确

现在上了数据质量平台,可以用这个快速发现问题。

b)数据SQL问题

看代码中的source中的scripts对应表的SQL

  • SQL未对异常数据进行处理(比如空数据的处理)
  • 左右连接使用不正确(实时就发现join和left join使用不恰当)
  • 数据库索引问题(影响数据库的查询速度)
  • SQL函数使用不当

c)数据倾斜的问题

d)大数据分布测试与大数据对比测试

测试类型 常见核心测试点 项目开发类型
新增表 新增字段 修改旧字段 修改表逻辑
大数据分布测试 表级测试-总数据量    
表级测试-是否存在重复数据    
表级测试-主键唯一性    
表级测试-空值量    
表级测试-空值率    
表级测试-去重数据量    
表级测试-有效数据量    
大数据对比测试 表级测试-总数据量对比    
表级测试-全量数据对比    
字段级测试-去重数据量对比    
字段级测试-统计类指标对比    

e)数据仓库分层测试重点

数据仓库层级
测试目标
测试范围
测试重点
ods 数据完整性,数据正确性 表,字段

1)表命名规范检查

2)字段信息检查

3)数据质量检查(空值,零值,主键唯一性和字段值域

4)数据完整性检查

dwd 数据完整性,数据正确性和数据清洗逻辑 表,字段

1)表命名规范检查

2)字段信息检查

3)数据质量检查(空值,零值,主键唯一性和字段值域

4)数据完整性检查

5)数据清洗逻辑检查(包括数据填充,噪声数据去除等)

dws 业务逻辑性 表,重点字段

1)表命名规范检查

2)字段信息检查

3)指标计算,勾稽(内在逻辑对应关系)逻辑检查

ads 业务逻辑性 表,重点字段

1)表命名规范检查

2)字段信息检查

3)指标计算,勾稽(内在逻辑对应关系)逻辑检查

posted @ 2021-12-23 17:12  丝瓜呆呆  阅读(1000)  评论(0编辑  收藏  举报