数据仓库测试方法

Posted

技术标签:

【中文标题】数据仓库测试方法【英文标题】:Data Warehouse Testing Approach 【发布时间】:2015-02-14 00:55:37 【问题描述】:

我正在测试数据仓库的空间。在我新创建的范围内,应该验证的维度和事实。根据我通过浏览获得的知识和信息,我将决定覆盖以供关注

按照规范对 Facts 和 Dimension 表进行架构验证 Facts 和 Dimension 表的数据重复检查 维度表的查找验证

还有什么我可以在这里验证的吗?

除了好奇我如何检查数据是否正确填充到事实表和行数、正确的代理键等。在开发人员的角度来看,他们是否使用 DML 脚本来加载数据?

【问题讨论】:

【参考方案1】:

测试数据库

通过以下三种方式测试数据库:

    测试数据库管理器和监控工具 - 测试 数据库管理器和监控工具,它们应该在 测试数据库的创建、运行和管理。

    测试数据库功能 - 这是我们拥有的功能列表 测试:

    -并行查询

    -并行创建索引

    -并行数据加载

3.测试数据库性能——查询执行在数据仓库性能测量中起着非常重要的作用。有一些固定查询需要定期运行,并且应该进行测试。要测试即席查询,应该仔细阅读用户需求文档并完全了解业务。花时间测试企业可能针对不同的索引和聚合策略提出的最尴尬的查询。 http://www.tutorialspoint.com/dwh/dwh_testing.htm

您还可以使用 ETL 测试(提取、转换和加载)。 ETL测试技术: 1) 验证数据是否根据各种业务需求和规则正确转换。 2) 确保所有投影数据都加载到数据仓库中,没有任何数据丢失和截断。 3) 确保 ETL 应用程序适当地拒绝、替换为默认值并报告无效数据。 4) 确保在规定和预期的时间范围内将数据加载到数据仓库中,以确认改进的性能和可扩展性。

除了这4种主要的ETL测试方法外,还进行了集成测试和用户验收测试等其他测试方法,以确保一切顺利可靠。

您还可以测试计划、备份恢复、操作环境、测试的应用和逻辑 有关 ETL 测试/数据仓库测试的更多信息,请访问http://www.softwaretestinghelp.com/etl-testing-data-warehouse-testing/

UPD:

并行创建索引

事实表上的索引可以是分区的或非分区的。本地分区索引提供最简单的管理。唯一的缺点是搜索本地无前缀索引需要搜索所有索引分区。

创建索引表空间的注意事项与创建其他表空间的注意事项类似。具有小条带宽度的操作系统条带化通常是一个不错的选择,但为了简化管理,最好为每个索引使用单独的表空间。如果它是本地索引,您可能希望将其放入与其对应的分区相同的表空间中。如果每个分区在多个磁盘上进行条带化,则可以并行重建各个索引分区以进行恢复。或者,可以使用操作系统镜像。由于这些原因,索引创建语句的 NOLOGGING 选项可能对数据仓库很有吸引力。

分区索引的表空间应该以与分区表的表空间相同的方式并行创建。

分区索引是使用分区粒度并行创建的,因此可能的最大 DOP 是粒度的数量。本地索引创建的内在并行性低于全局索引创建,因此如果使用更高的 DOP,则可能运行得更快。以下语句可用于在事实表上创建本地索引:

CREATE INDEX I on fact(dim_1,dim_2,dim_3) LOCAL 
PARTITION jan95 TABLESPACE Tsidx1, 
PARTITION feb95 TABLESPACE Tsidx2, 
... 
PARALLEL(DEGREE 12) NOLOGGING;

要备份或恢复一月份的数据,您只需要管理表空间 Tsidx1。

Parallel Query Tuning

并行查询功能对于通过大型表扫描、大型联接、创建大型索引、批量加载、聚合或复制来访问大量数据的查询非常有用。它有利于具有以下所有特征的系统:

对称多处理器 (SMP)、集群或大规模并行 系统 高 I/O 带宽(即,许多不同磁盘上的许多数据文件 驱动器) 未充分利用或间歇性使用的 CPU(例如,系统 CPU 使用率通常低于 30%) 有足够的内存来支持额外的内存密集型进程 例如排序、散列和 I/O 缓冲区

如果这些条件中的任何一个不适合您的系统,则并行查询功能可能不会显着提高性能。事实上,在过度使用的系统或 I/O 带宽较小的系统上,并行查询功能会阻碍系统性能。

您可以在这里阅读更多详细信息:http://docs.oracle.com/cd/A57673_01/DOC/server/doc/A48506/pqo.htm#1559

我希望这些资源对您有所帮助: https://wiki.postgresql.org/wiki/Parallel_Query_Execution

https://technet.microsoft.com/en-us/library/ms178065%28v=sql.105%29.aspx

http://www.csee.umbc.edu/portal/help/oracle8/server.815/a67775/ch24_pex.htm#1978

【讨论】:

感谢您的回复。您能否详细说明以下几点,即并行查询、并行创建索引、并行数据加载以及我们如何执行这些操作。 考虑到系统测试,我们需要进入那个级别还是单元测试的一部分?【参考方案2】:

我是一名 ETL 测试人员。 对于数据仓库中的数据验证和数据质量测试,请遵循以下检查

1) 元数据测试 - 测试底层表的结构及其结构(根据设计文档)。 2) 数据验证 - 在数据验证中,您使用 SQL 和 PL/SQL 测试映射转换。 我们一般使用 Source 和 target 表计数,Source 减去 Target,Source Intersect Target 和 Target 减去 Source 来测试它。

3) 重复检查:确保数据仓库中没有冗余。 4)加载策略检查:检查您的目标表是SCD还是重新加载时删除(取决于要求。)

【讨论】:

您使用INTERSECT 而不是INNER JOIN 是否有特殊原因 您也可以使用内连接代替,但是在进行测试查询准备时,我们通常分别准备源查询和目标查询。因此更容易在创建的查询之间进行相交,而不是在这两个查询之间放置内部连接。对于 E.G.来源查询:select emp_id,emp_name from employee1;目标查询:select rep_id,rep_name from master_emp;相交查询将易于阅读和理解,因为它将是 select emp_id,emp_name from employee1 INTERSECT 但问题是,当使用 INTERSECT 运算符时,所有查询中的列数和顺序必须相同,并且数据类型必须兼容。 正是...这就是为什么我们使用相交操作符所以目标列的数据类型,目标表中的所有列都可以测试。

以上是关于数据仓库测试方法的主要内容,如果未能解决你的问题,请参考以下文章

Greenplum 实时数据仓库实践——实时数据装载

Greenplum 实时数据仓库实践——实时数据装载

Greenplum 实时数据仓库实践——实时数据装载

一次数据仓库报表测试

6. 数据仓库环境准备

数据仓库/ETL表中一列更新的测试用例可以是啥