zoukankan      html  css  js  c++  java
  • 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、 发布后

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

  • 相关阅读:
    11111 Generalized Matrioshkas
    Uva 442 Matrix Chain Multiplication
    Uva 10815 Andy's First Dictionary
    Uva 537 Artificial Intelligence?
    Uva 340 MasterMind Hints
    SCAU 9508 诸葛给我牌(水泥题)
    Uva 10420 List of Conquests(排序水题)
    Uva 409 Excuses, Excuses!
    10/26
    11/2
  • 原文地址:https://www.cnblogs.com/end/p/2040891.html
Copyright © 2011-2022 走看看