51Testing软件测试论坛

标题: ETL测试参考文档 [打印本页]

作者: 樱花季节    时间: 2010-10-26 16:46
标题: ETL测试参考文档
本帖最后由 樱花季节 于 2010-10-26 16:47 编辑

ETL测试参考文档

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

测试环节
1、需求分析

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


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

[attach]65935[/attach]

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


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/shahaizimxm/archive/2010/09/19/5895194.aspx


作者: 樱花季节    时间: 2010-12-30 17:49
这个我觉得对于初步涉入数据仓库测试的同学,特别是ETL测试的同学还是有指导意义的
作者: lusha_sha    时间: 2011-1-28 15:56
你好,这篇文章对ETL测试的指导意义很大,ETL测试流程的那张图能不能发个大的给我?网页上的太小,看不清楚。我的邮箱是lusha_sha@163.com 非常感谢。
作者: 简单的人    时间: 2011-3-2 17:43
麻烦楼主将文件邮箱我好吗?现在正在做相关方面的测试急需,谢谢
   125246079@qq.con
作者: 樱花季节    时间: 2011-5-27 15:30
好的,邮件已经发送,不好意思现在才看到。
作者: 樱花季节    时间: 2011-5-27 15:31
这是新的一篇关于ETL测试方法论的思考,供大家参考一下,不当之处请多多指教
http://bbs.51testing.com/thread-455694-1-1.html
作者: qing131488    时间: 2011-6-5 12:00
不错啊 小敏 访问量好高了




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2