ETL测试点

转载地址:http://testing-dwh.blogspot.com/

翻译:谷歌翻译

 

根据我的经验,我准备了最多的测试场景和测试用例来验证ETL过程。我会继续更新这个内容。谢谢

 
测试场景
测试用例
   
Ø   映射文档验证
验证映射文档是否提供相应的ETL信息。更改日志应保存在每个映射文档中。
定义默认测试策略如果映射文档遗漏了一些可选信息。例如:数据类型长度等
 
 
Ø   结构验证
1.根据相应的映射文档验证源表和目标表结构。

2.源数据类型和目标数据类型应该相同。

3.源和目标中数据类型的长度应该相等。

4.验证是否指定了数据字段类型和格式

5.源数据类型长度不​​应小于目标数据类型长度。

6.根据映射文档验证表中列的名称。
   
Ø   约束验证
确保按照预期为特定表定义约束。
   
Ø   数据一致性问题
1.特定属性的数据类型和长度在文件或表格中可能会有所不同,尽管语义定义是相同的。
   示例:账号可以定义为:一个字段或表中的数字(9)和另一个表中的Varchar2(11) 2.滥用完整性约束:当滥用参照完整性约束时,外键值可能会“悬空”或 无意中删除。 示例:帐户记录丢失,但从属记录不会被删除。
  


   
Ø   数据完整性问题
确保将所有预期数据加载到目标表
1.比较源和目标之间的记录计数。检查是否有被拒绝的记录。

2.检查数据不应该在目标表的列中被截断。

3.检查边界值分析(例如:仅> = 2008年数据必须加载到目标中)

4.比较源数据和加载到仓库的数据之间的关键字段的唯一值。这是一项非常有价值的技术,它可以指出各种可能的数据错误,而无需对所有领域进行全面验证。
   
Ø   数据正确性问题
1.拼写错误或记录不准确的数据。

2.完整性约束被禁用时,可能会存储空值,非唯一或超范围数据。
示例:在导入功能期间禁用主键约束。数据以空的唯一标识符输入到现有数据中。
   
Ø   数据转换
1.创建输入数据和预期结果的电子表格并与业务客户验证。这是设计过程中极好的需求引发步骤,也可以用作测试的一部分。

2.创建包含所有场景的测试数据。利用ETL开发人员使情景电子表格填充数据集的整个过程自动化,以允许多样性和移动性,因为情景可能会发生变化。

3.利用数据分析结果比较目标数据和源数据之间每个字段中值的范围和提交值。

4.验证ETL生成字段的准确处理; 例如,代理键。

5.验证仓库中的数据类型与数据模型或设计中指定的相同。

6.在测试参照完整性的表之间创建数据场景。

7.验证数据中的父子关系。创建测试孤儿子记录管理的数据场景。
   
Ø   数据质量
1.数字检查:如果在编号的源格式中,列是xx_30,但是如果目标只有30,那么它必须加载不是pre_fix(xx_)。我们需要验证。

2.   日期检查:他们必须遵循日期格式,并且它应该在所有记录中相同。标准格式:yyyy-mm-dd等

。3.精度检查:精度值应在目标表中按预期显示。
示例:在源19.123456中,但在目标中,它应该显示为19.123或接近20

。4.   数据检查:根据业务逻辑, 部分不符合某些标准的记录应该被过滤掉。
例如:只能将date_sid> = 2008和GLAccount!='CM001'的记录加载到目标表中。

5.空检查:根据业务需求,部分的列应显示“空”。
示例:终止日期列应显示为空,除非&直到他的“活动状态”列为“T”或“已故”。
注意:数据清洁将会在设计阶段决定。
   
Ø   空验证
验证指定列中指定了“不为空”的空值。
   
Ø   重复检查
1.需要验证唯一键,主键和任何其他列应该是唯一的,因为业务需求有任何重复的行。

2.检查是否有任何重复值存在于从源中的多列提取并合并到一列中的任何列中。

3.根据客户要求,我们需要一段时间确保在目标范围内不会出现多列组合的重复。
 
   例如:一位保单持有人可以采取多重政策和多重索赔。在这种情况下,我们需要验证CLAIM_NO,CLAIMANT_NO,COVEREGE_NAME,EXPOSURE_TYPE,EXPOSURE_OPEN_DATE,EXPOSURE_CLOSED_DATE,EXPOSURE_STATUS,PAYMENT
   
Ø   日期验证
日期值在ETL开发中的许多领域中用于:

1.了解行创建日期,例如:CRT_TS

2.根据ETL开发视角识别活动记录例如:VLD_FROM,VLD_TO

3.根据业务需求角度确定活动记录例如:CLM_EFCTV_T_TS,CLM_EFCTV_FROM_TS 

4.有时根据日期值生成更新和插入。

可能的测试场景来验证日期值:

a。From_Date不应该大于To_Date 
b。日期值的格式应该是正确的。
C。日期值不应该包含任何垃圾值或空值
   
Ø   完整的数据验证
(使用减号和相交)
1.验证源表和目标表中的完整数据集减去查询(minus query)是最佳解决方案。

2.我们需要减去(minus)目标和目标减去(minus)源。

3.如果减法查询返回任何值,则应将这些值视为不匹配的行。

4.而且我们还需要使用Intersect语句在源和目标之间匹配行。

5.相交返回的计数应与源表和目标表的个别计数相匹配。 

6.如果减法查询返回0行,并且计数intersect小于源计数或目标表计数,则我们可以将其视为存在重复行。
   
Ø   一些有用的测试场景
1.验证提取过程没有从源中提取重复数据(通常这发生在可重复的过程中,在零点我们需要从源文件中提取所有数据,但在下一个时间间隔中,我们只需要捕获修改过的数据,和新的行)。
2. QA团队将维护一组在此阶段自动运行的SQL语句,以验证没有从源系统中提取重复数据。
   
Ø   数据清洁
在装入暂存区域之前,应删除不必要的列。

例2:如果一个列有名字但需要额外的空间,我们必须“修剪”空间,以便在表达式转换空间的帮助下加载到临时区域之前进行修剪。

例1:假设不同栏目和要求的电话号码和STD代码表示它应在一列中,然后借助表达式转换,我们将连接一列中的值。
 

posted @ 2018-05-17 16:32  哈哈你笑咯  阅读(428)  评论(0)    收藏  举报