46、数据仓库测试全解析

数据仓库测试全解析

在数据仓库的建设与维护过程中,测试是确保其正常运行和满足业务需求的关键环节。本文将详细介绍数据仓库测试的多个方面,包括功能测试、性能测试、安全测试和用户验收测试。

功能测试

在数据仓库中,许多真实的业务事件会影响数据的准确性,如汇率变化、供应商变更、库存审计、新的通讯计划、客户重新签约等。不同行业的业务事件各不相同,例如新的通讯计划特定于电信行业,客户重新签约常见于金融和公用事业领域,而库存审计则主要针对零售或供应链行业。在这些事件发生时,需要验证数据仓库中的数据是否仍然准确。

功能测试中,测试数据至关重要。与其他应用测试不同,数据仓库功能测试需要在源系统中创建测试数据,而非在数据仓库本身。这通常需要与源系统的数据库管理员(DBA)合作完成。

创建特定测试条件的测试数据可能颇具挑战。有时,在源系统中模拟某些条件很困难,此时使用生产中的真实事件数据会更方便。例如,当每个客户的价格涨幅不同且累积多年时,创建测试数据来模拟这种涨幅就很困难,这时可以使用生产中的上一年度价格涨幅数据,并将其复制到质量保证(QA)环境中进行搜索和测试。反之,在生产源系统中查找特定事件也可能很困难,比如查找符合特定标准的新产品或客户,此时在测试环境中自行创建这些数据会更容易。

性能测试

性能测试的目的是验证与平台、容量、延迟和响应时间相关的所有技术要求是否得到满足。特别是要证明数据仓库系统能够在特定时间内完成数据加载过程。

在开发提取、转换和加载(ETL)过程时,通常使用少量数据,重点关注确保 ETL 过程的功能正确性。但在实际运行中,数据量和工作负载会大幅增加,因此需要在实际生产条件下对数据存储、ETL 和应用程序进行测试,以确保它们满足性能要求。

数据仓库的性能测试主要涉及两个方面:ETL 和应用程序。
- ETL 性能测试 :需要验证批量加载性能和增量加载性能是否满足要求。批量加载用于首次填充数据仓库,而增量加载则在仓库运行时使用。
- 配置测试环境 :按照生产配置配置数据仓库测试服务器,创建数据存储并设置 ETL 过程,将 SSIS 包从开发环境迁移到测试服务器。连接测试服务器到源系统的测试版本(QA),设置必要的连接和访问权限,并将测试数据加载到 QA 环境中。使用小批量数据运行整个 ETL 过程,以验证测试环境是否配置正确。
- 运行批量加载过程 :运行初始加载 ETL 过程(如 T - SQL 脚本或 SSIS 包)来填充仓库,并测量其性能。可以通过 ETL 日志和加载表的时间戳列来测量性能。ETL 日志是 ETL 系统写入的表或文件,记录每个主要步骤的基本统计信息,如数据量、任务名称和当前时间。时间戳列包含行加载或修改的时间。此外,还可以使用 SQL Server Profiler 记录每个 SQL 语句的执行时间,以及启用 SSIS 日志记录运行时事件。
- 运行增量加载过程 :按照准备好的测试场景,以特定顺序运行 ETL 批次(每日、每小时或每周),并测量其性能。对于实时 ETL,还需要测量数据从源系统到数据仓库的时间延迟。

以下是 ETL 性能测试步骤的 mermaid 流程图:

graph LR
    A[配置测试环境] --> B[运行批量加载过程]
    B --> C[运行增量加载过程]
  • 应用程序性能测试 :可以通过脚本记录用户操作或手动测量来评估性能。使用应用程序(如报告、挖掘模型立方体或商业智能应用程序)时,需要考虑正常场景和异常场景。正常场景是用户日常活动的步骤,异常场景则是导致错误的步骤。

为了提高应用程序性能,可以采取一些措施,如索引、表分区和创建汇总表。其中,创建汇总表(也称为聚合)效果最为显著,因为结果已经预先计算,应用程序只需在屏幕上显示即可。但过多的汇总表可能会降低 ETL 的性能,因为填充它们需要时间。因此,需要在两者之间找到平衡。汇总表的行数应至少比原表小 10 倍,理想情况下应小 100 倍以上。并且,每次更新基础事实表时,都需要更新汇总表,理想的更新时间是在填充基础事实表之后立即进行。为了确定汇总表的效益,需要测量更新汇总表所需的时间和应用程序查询的改进情况。

在设计数据仓库时,就应该考虑性能问题,而不是在构建完成后再进行调整。从架构设计、物理构建、数据存储设计、ETL 设计到应用程序设计,每个步骤都应将性能因素纳入考虑范围。

安全测试

安全测试的目的是确保只有被授权的人员和应用程序能够访问数据仓库,并测试用户访问数据的方式,如使用的工具和提供安全凭证的方式。

以 Amadeus Entertainment 案例研究为例,其安全要求包括:
- 所有数据仓库用户只需在 PC 或笔记本电脑上登录一次 Windows,即可访问数据仓库前端应用程序(报告和 OLAP),无需再次登录。
- 数据仓库前端应用程序不能从公司网络外部访问。
- 所有前端应用程序必须基于 Web,可从公司网络内的任何位置访问。
- 所有用户应通过中央门户访问前端应用程序。
- 部分用户只能访问本国的数据,而部分用户可以访问任何国家的数据。
- 一些“高级用户”被授权直接对维度存储执行 SQL 查询。
- 某些敏感数据只有特定人员才能查看,即用户必须获得授权才能访问数据。
- 必须能够审计“谁在何时访问了什么”,即记录用户访问活动。

数据仓库由多个数据存储组成,每个数据存储中又包含多个数据对象,如表格、视图和存储过程。安全要求规定了哪些用户可以访问哪些对象。可以通过以不同用户身份连接到数据仓库并尝试访问相应对象来验证这些要求。

测试数据仓库安全的方法包括通过应用程序(如报告和商业智能工具)访问数据仓库,以及直接向数据存储发出 SQL 查询。如果存在加密数据(如信用卡号码),也需要进行访问测试。同时,需要验证安全审计表是否正确填充,包含用户名和访问时间。可以通过比较在应用程序上执行的操作和安全日志来完成验证。

根据安全要求,需要从不同的网络点测试安全访问。有时要求数据仓库可从公司网络内的任何位置访问,有时则限制访问特定的网络段,还有时需要启用外部访问(如从互联网)。为此,需要与网络工程师合作,确定所有需要访问的网络段,并让网络团队将测试客户端放置在这些段中。可以通过为客户端分配固定 IP 或重新路由客户端到目标段来实现。如果公司由多个法律上独立的实体组成,可能需要在公司防火墙之间打开一些漏洞以允许实体之间的流量。一种测试连接性的方法是让用户代表(如每个地区或办公室的一名代表)从他们的计算机访问仓库门户并访问应用程序。

以下是安全测试要点的表格总结:
| 测试方面 | 具体内容 |
| — | — |
| 访问授权 | 验证不同用户对不同数据对象的访问权限 |
| 访问方式 | 通过应用程序和 SQL 查询测试访问 |
| 加密数据 | 测试对加密数据的访问 |
| 审计表验证 | 确保安全审计表正确填充 |
| 网络访问测试 | 从不同网络点测试访问权限 |

数据仓库测试全解析

用户验收测试

在完成功能测试、性能测试和安全测试之后,就轮到最终用户对数据仓库进行测试了,这个测试被称为用户验收测试(UAT)。UAT 主要是让一些关键用户使用数据仓库及其应用程序,以确定其是否满足自身需求,同时也会对系统的用户友好性进行测试。

在用户开始测试之前,需要向他们详细解释数据仓库及其应用程序的所有功能。带领他们熟悉系统,介绍各个组件和数据流程架构,确保他们清楚如何在系统中进行操作。为用户创建应用程序的用户账户,给予他们适当的安全访问权限。使用满足 UAT 场景的测试数据填充数据仓库,这些测试数据可以来自生产或 QA 源系统,并且可能需要根据特定场景进行定制。然后,要求用户使用应用程序执行特定场景,并记录结果。之后,让用户自由使用系统,测试其功能、用户友好性和外观,并记录他们的意见。

需要注意的是,UAT 是在完成 ETL 测试、功能测试、性能测试和安全测试之后进行的。这意味着当用户测试数据仓库及其应用程序时,用例中描述的所有功能都已按照功能规范实现。

UAT 的目的有两个。首要目的是确认系统能够执行其设计的任务,满足业务需求。次要目的是获取用户反馈,特别是关于用户友好性的反馈。

在 UAT 中,要确认系统执行日常业务任务和满足用户需求的能力。功能测试中的测试用例是基于从业务需求推导出来的功能和非功能规范,旨在覆盖所有可能性。而在用户验收测试中,理想情况下,测试用例应反映用户群体中不同角色的日常活动。这里关注的不是管理数据仓库的难易程度,而是每个角色的业务用户使用数据仓库及其应用程序执行任务的难易程度。

不同用户对同一应用程序的用户友好性感受不同,因为每个用户的职责不同。例如,区域经理不负责特定店铺,与店铺经理不同,她不需要每日销售和成本报告,也不需要按产品类型进行细分。她更需要区域层面的综合数据。

以下是 UAT 流程的列表说明:
1. 向用户解释数据仓库和应用程序功能。
2. 带领用户熟悉系统组件和数据流程架构。
3. 为用户创建用户账户并给予安全访问权限。
4. 用满足 UAT 场景的测试数据填充数据仓库。
5. 要求用户执行特定场景并记录结果。
6. 让用户自由使用系统并记录意见。

以下是 UAT 目的和测试用例特点的 mermaid 流程图:

graph LR
    A[UAT目的] --> B[确认系统执行任务能力]
    A --> C[获取用户反馈]
    D[测试用例特点] --> E[反映不同角色日常活动]

总结

数据仓库测试是一个全面且复杂的过程,涵盖了功能测试、性能测试、安全测试和用户验收测试等多个方面。每个测试环节都有其独特的重点和方法,对于确保数据仓库的准确性、性能、安全性和用户满意度至关重要。

  • 功能测试 :关注真实业务事件对数据准确性的影响,需要在源系统中创建测试数据,根据不同情况选择模拟或使用实际数据。
  • 性能测试 :分为 ETL 性能测试和应用程序性能测试。ETL 性能测试包括配置测试环境、运行批量加载过程和增量加载过程,可通过多种方式测量性能。应用程序性能测试可通过脚本或手动测量,采取索引、表分区和创建汇总表等措施提高性能,但要注意平衡。
  • 安全测试 :确保只有授权人员和应用程序能访问数据仓库,测试访问方式和安全审计表,根据安全要求从不同网络点进行访问测试。
  • 用户验收测试 :在其他测试完成后由最终用户进行,目的是确认系统执行任务能力和获取用户反馈,测试用例应反映不同角色日常活动。

在整个数据仓库的生命周期中,从设计阶段就应将测试相关的因素考虑在内,包括性能、安全等方面,以确保最终交付的系统能够满足业务需求和用户期望。通过严格的测试流程,可以及时发现和解决潜在问题,提高数据仓库的质量和可靠性。

总之,数据仓库测试是保障数据仓库成功运行的关键步骤,需要开发团队、网络团队和最终用户等多方面的协同合作,共同完成各个测试环节,为企业的决策提供准确、可靠的数据支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值