数据测试
数据仓库的核心是大量的数据,数据在进入数据仓库之前必须对数据进行预处理,包括抽取,转换和加载(ETL)。测试人员必须测试这些数据是否准确,精度是否丢失,是否符合需求说明。如下图中一个简单的数据转换和传输例子,数据源的数据必须经过稍微的变换后加载到目的表中。数据源的字段A和关联表关联后得到字段A1加载到目的表中,其他数据源字段B,C ,D和Value1,Value2,Value3直接加载到目的表的B,C ,D和Value1,Value2,Value3。
可以用如下几个测试用例来验证上图中数据仓库的数据传输后的数据准确性:
Select count(1) from 数据源 inner join 关联表 on数据源 .A =关联表.A Inner join 目的表 on关联表.A1 =目的表A1 And 数据源.B=目的表.B And 数据源.C =目的表.C Where 数据源.Value1 <>目的表.Value1
Select count(1) from 数据源 inner join 关联表 on数据源 .A =关联表.A Inner join 目的表 on关联表.A1 =目的表A1 And 数据源.B=目的表.B And 数据源.C =目的表.C Where 数据源. Value2 <>目的表.Value2
Select count(1) from 数据源 inner join 关联表 on数据源 .A =关联表.A Inner join 目的表 on关联表.A1 =目的表A1 And 数据源.B=目的表.B And 数据源.C =目的表.C Where 数据源.Value3 <>目的表.Value3
Select count(1) from 数据源 inner join 关联表 on数据源 .A =关联表.A Inner join 目的表 on关联表.A1 =目的表A1 And 数据源.B=目的表.BAnd 数据源.C =目的表.C Where 数据源.Value4 <>目的表.Value4
或者可以用一个SQL语句实现如上所有的功能:
Select count(1) from 数据源 inner join 关联表 on数据源 .A =关联表.A Inner join 目的表 on关联表.A1 =目的表A1 And 数据源.B=目的表.B And 数据源.C =目的表.C Where 数据源.Value1 <>目的表.Value1 Or 数据源.Value2 <>目的表.Value2 Or数据源.Value3 <>目的表.Value3 Or 数据源.Value4 <>目的表.Value4
对于精度误差问题,可以用“ ABS(数据源.Value -目的表.Value) <0.001” (注:假设0.001是允许误差)来代替“数据源.Value <>目的表.Value”
如果以上测试用例返回不等于0的值,则说明数据传输和转换失败或错误。