`
liubin2010
  • 浏览: 302871 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

ETL测试流程图

阅读更多

 

本文档主要介绍ETL测试的流程,以及一般的项目情况来说明ETL的测试方法。

ETL 测试流程图


测试环节

1、 需求分析

熟悉业务流程和业务规则,根据需求分析出源表与目标表以及之间的mapping关系,解析出业务的 数据流图:

 

1、 测试分析

测试点:

ETL常规检查:

1.ETL脚本是否有运行错误,脚本运行时间(看执行计划)

2.ETL脚本的错误处理机制是否完整(代码review)

3.ETL脚本是否支持回滚

业务逻辑检查:

1.数据量的检查。核对记录数是否和预期一致

2.唯一性检查。

 主键是否重复(cookie_id,member_id是否重复)

3.业务字段转换正确性检查。指标计算是否正确.抽样检查。

 源表和目标表各取一定数量记录,判断字段映射是否正确(映射字段)。

 指标计算是否正确(指标计算字段)

4.随机性验证(随机取几条数据,看是否有乱码,异常数据等。

 

测试重点

项目中的关键业务,复杂逻辑部分作为测试重点

用例划分说明:

按每个指标设计用例。

测试策略:

测试策略:增量测试(逐步提交测试)

测试方法:基于查询的测试(预期结果基于sql来展现,做到数据变化,结果不变。另外便于回归)

2、 标准数据集构建

造数据分2个方面,1个是直接抽取线上的数据1个是用脚本造异常数据。

3.1 利用dblink抽取线上的数据。抽取线上数据时,需要注意,测试数据的全面性。即测试数据全面覆盖。比如sex字段,在抽取线上数据时,需要抽取到male、female情况,而不能仅仅是male或female,这样测试数据就会缺失。对于有关联的表进行数据抽取时,可以先抽取主表,然后根据主表的数据有条件的抽取子表。

3.2 造异常数据,异常数据可以从下面几个方面进行考虑:字段类型、字段长度、空值、业务异常值、唯一约束值

3、 测试用例设计

测试用例可以单独设计,也可以采用调度的思想进行设计,采用调度方法进行设计时,能一次验证多个用例,另外也方便回归。这里说一下调度思想的测试用例的设计思路。

设计思路:

 

总调脚本:

CREATE OR REPLACE PACKAGE BODY PKG_KPI_TC IS
    PROCEDURE SCHEDULER(
 
/*********************************************************************
 *parameter:
 *authoer XIANGMIN.MENGXM
 *time 2009-6-26
 *
 *********************************************************************/

 P_DATE IN DATE DEFAULT TRUNC(SYSDATE ))
 IS
 V_DATE               DATE := TRUNC(P_DATE);
 BEGIN
    DELETE FROM test_map WHERE yyyymmdd = v_date;
    COMMIT ;--
调度之前先清空测试表
    REF_KPI_TC_001(v_date);-- 用例1
    REF_KPI_TC_002(v_date);-- 用例2
         END ;
END PKG_KPI_TC;


测试用例1

CREATE OR REPLACE PROCEDURE REF_KPI_TC_001(P_DATE IN DATE DEFAULT TRUNC(SYSDATE )) IS
 V_id         NUMBER ;
 V_DATE           DATE := TRUNC(P_DATE);
 BEGIN
SELECT  a.id into v_id FROM  src_a;

INSERT INTO test_map(YYYYMMDD,id,x) VALUES (v_date, v_id ,x);
 COMMIT ;
END ;

 

1、 测试结果验证

Exec procedure_();-- 得出被测脚本的结果

Exec REF_KPI_TC_001(); 得出测试结果

 

结果验证:

第一步先验证记录数是否一致,如果记录数不一致,则一定存在问题,检查问题,找出原因。

第二步在记录数一致的情况下,检查值是否正确。

方法1:巧用minus

SELECT * FROM target_a
MINUS
SELECT * FROM test_map;

-- 注意,此处一定要调换2个表的位置进行比较。Minus函数在进行比较时,以第一张表为准,找出第一张表中与第二张表不一致的地方。即:找出sumdt0表中与map表不一致的结果

方法2:写脚本进行验证

2、 发布后

在相关平台观察数据趋势,数据监控。项目发布后,我们可以观察数据的波动趋势,一般来说数据的波动是在一定范围,遵循一定原则的,如果发现数据波动超出了预计范围,这个时候就需要特别注意了。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics