首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >聊聊 ETL(大数据)测试!

聊聊 ETL(大数据)测试!

作者头像
Wu_Candy
发布2022-07-05 14:54:47
发布2022-07-05 14:54:47
1.9K0
举报
文章被收录于专栏:无量测试之道无量测试之道

首先,简单介绍下,ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程,属于大数据测试的核心内容。

今天和大家分享下我作为大数据测试工程师对ETL测试的一些认识。

一、ETL测试工程师的主要责任

对于一个ETL测试工程师而言,其关键的责任有三大类:

1. 源数据分析(包含:数据库表、文本等类型数据分析)

2. 业务转换逻辑实现(包含:code diff,目标表全量数据的逻辑实现验证)

3. 将经过转换的数据载入至目标表的各维度与指标数据与对标数据进行对标验证其一致性

二、ETL测试场景和测试用例

1. 根据对应的映射文件验证"源"与"目标数据仓库"的表结构

2. 验证"源"和"目标数据的类型、长度、格式一致或源长度不应大于目标数据类型长度"

3. 约束验证目标表中的约束关系满足我们的期望设计

4. 数据一致性问题

<1>. 要防止语义定义相同,但特定属性的数据类型和长度不一致的问题

<2>. 完整性约束、主键不可以重复、异常数据处理方式等

5. 完整性问题

<1>. 要确保所有期望的数据都已经完整的加载到目标表中

<2>. 要比较源和目标数据的个数(即确保计数上的完整)

<3>. 检查出现的任何不合格的记录

<4>. 检查目标表列中的数据没出现被截断的情况--针对的是窜列的情况。比如comments里的内容含有列分隔符,被分隔开了。

<5>. 对边界值进行分析检查

6. 要检查比较目标数据仓库和源数据的关键字段的唯一性和正确性问题[主键一致]

<1>. 数据要没有拼写错误或不准确的记录。

<2>. 无超出业务许可范围的数据记录存在

<3>. 数值型验证,验证是否为数值类型

<4>. 日期型验证,验证是否为日期格式,并且在所有日期类型数据的格式应该统一

<5>. 精度验证,小数点的精度要满足期望的精度

<6>. 数据检查:检查数据的正确性,完整性

<7>. null检查

<8>. 转换验证转换逻辑的正确性

7. 拷贝验证

<1>. 验证目标表中业务要求所有惟一性指标均正确的实现(例如主键、惟一标识的键、或其他任一惟一表示的列)

<2>. 验证从源数据多列合并而成的数据是正确的

<3>. 验证仅仅根据客户要求对源数据进行了多列合并至目标表中

8. 日期验证是ETL开发过程中常用的数据,主要用于:

<1>. 了解数据创建的日期,分区日期和业务日期要分清楚。

<2>. 用于识别活动记录

<3>. 根据业务需求透视表确定活动记录

<4>. 便于基于时间插入、更新记录

9. 数据完整性验证在验证源和目标表中的数据集的完整性时,我们需要用到交集运算,以确定目标数据的完整性

10. 数据清理对于不需要的列在载入至数据仓库前应该进行删除

11. 结果集验证:

<1>. 通常使用的是全量数据验证方法,应用层的目标表数据验证时,则使用汇总层的表再left join各种维度表,拿到对应的维度的值后再与应用层的目标表进行join

根据需求中同一个维度或指标的不同场景,进行case设计,从而在case执行时,体现在一个个查询sql上的不同,找出sql查询出的异常数据值,单条数据进行验证后

如果确认是测试查询sql的问题,则需要修正测试sql,再继续执行,如果确认是实现的结果不符合需求,则提bug给到对应的开发。

<2>. 但针对一些特殊的需求,我们不会去构造一个验证集去对比结果集,因为代价太高了。当然如果有对标数据是另外一种情况。我们可以简化为从几个维度去验证跑出来的结果集。

比如,总量维度,结果集的数据量是否符合某个数量级。酒店维度,某些个指标是否包含了所有酒店数。数值维度,某指标的全量和是否符合预期。

三、ETL的bug类型

bug类型描述说明

1. 用户接口bug

<1>. 主要涉及应用的GUI

<2>. 字体、样式、颜色、对齐、拼写错误、导航等等

2. 边界值bug数据的边界值范围

3. 等价类划分bug有效和无效类

4. 输出/输出bug

<1>. 未接受的有效值

<2>. 无效的值被接受

5. 计算类bug

<1>. 数学计算错误

<2>. 最终输出错误

6. 载入条件bug

<1>. 不运行多用户操作

<2>. 不运行用户载入期望的数据

7. 性能的bug。达不到业务要求时间。

ETL测试与数据库测试的不同

1. 验证数据是否按照预期进行了移动主要验证数据是否遵循了设计预定的数据模式规则或标准

2. 验证数据经过业务转换后是否满足预定的转换逻辑以及验证源和目标数据计算是否一致主要表的主、外键等约束是否正常

3. 验证ETL过程数据表的主外键关系是否保存验证没有冗余表,数据库最佳化

4. 验证已载入的数据拷贝是否满足预期验证需要的是否缺少数据

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无量测试之道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档