首先,简单介绍下,ETL,是英文Extract-Transform-Load的缩写,用来描述将数据历来源端通过抽取(extract)、转换(transform)、加载(load)至目的端的过程,属于大数据测试的核心内容。sql
今天和你们分享下我做为大数据测试工程师对ETL测试的一些认识。数据库
1、ETL测试工程师的主要责任微信
对于一个ETL测试工程师而言,其关键的责任有三大类:性能
1. 源数据分析(包含:数据库表、文本等类型数据分析)测试
2. 业务转换逻辑实现(包含:code diff,目标表全量数据的逻辑实现验证)字体
3. 将通过转换的数据载入至目标表的各维度与指标数据与对标数据进行对标验证其一致性大数据
2、ETL测试场景和测试用例spa
1. 根据对应的映射文件验证"源"与"目标数据仓库"的表结构.net
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>. 但针对一些特殊的需求,咱们不会去构造一个验证集去对比结果集,由于代价过高了。固然若是有对标数据是另一种状况。咱们能够简化为从几个维度去验证跑出来的结果集。
好比,总量维度,结果集的数据量是否符合某个数量级。酒店维度,某些个指标是否包含了全部酒店数。数值维度,某指标的全量和是否符合预期。
3、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. 验证已载入的数据拷贝是否知足预期验证须要的是否缺乏数据
本文分享自微信公众号 - 无量测试之道(gh_858a1aa25a6d)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。