大数据测试教程:什么是大数据测试、测试策略、如何测试

⚡ 智能摘要

大数据测试验证大数据应用程序是否能够正确、快速、安全地处理TB级数据,它将数据暂存验证、MapReduce验证和输出验证与分布式Hadoop集群的架构和性能检查相结合。

  • 🔘 核心重点: 验证的是整个集群的数据处理,而不是产品的各个功能。
  • ☑️ 三个阶段: 数据暂存、MapReduce 和输出验证构成每个 Hadoop 测试周期。
  • 数据质量第一: 在应用测试之前,需检查符合性、准确性、可重复性、一致性、有效性和完整性。
  • 🧪 Archi结构很重要: 性能和故障转移服务证实,即使发生节点故障,集群也能在不损失吞吐量的情况下继续运行。
  • 🛠️ 调校参数: 对存储布局、提交日志、并发性、缓存、超时和 JVM 设置进行测量。
  • ⚠️ 已知挑战: 自动化技能差距、虚拟机延迟和海量数据集使大数据测试变得复杂。

大数据测试教程,涵盖策略、Hadoop 测试阶段和性能测试。

什么是大数据测试?

大数据测试是对大数据应用程序进行测试的过程,旨在确保大数据应用程序的所有功能都能按预期运行。大数据测试的目标是确保大数据系统在保持性能和安全性的同时,平稳无误地运行。

大数据是指无法使用传统计算技术处理的大型数据集的集合。处理这些数据集需要用到各种工具、技术和框架。大数据涉及数据的创建、存储、检索和分析,其特点是数据量巨大、种类繁多、处理速度极快。您可以了解更多信息。 大数据, Hadoop的映射简化 在开始测试之前。

什么是大数据测试策略?

大数据应用测试更侧重于验证其数据处理能力,而非测试软件产品的各个功能。对于大数据测试而言,性能测试和功能测试至关重要。

在大数据测试策略中,质量保证工程师使用通用集群和其他辅助组件来验证TB级数据的成功处理。由于处理速度非常快,因此对测试技能的要求很高。处理方式可分为三种:

  • 批量处理: 存储的数据按计划进行处理,因此测试的目标是作业完成情况和准确性。
  • 实时处理: 记录到达后即进行处理,因此测试主要针对延迟和数据丢失。
  • 交互式处理: 分析师直接进行查询,因此测试目标是临时查询的响应时间。

下图概括了该策略。

大数据测试策略图,展示了质量保证工程师验证的数据处理类型。

此外,数据质量也是Hadoop测试中的一个重要因素。在测试应用程序之前,必须检查数据质量,这应被视为数据库测试的一部分。它涉及检查各种特性,例如一致性、准确性、重复性、有效性、数据完整性等。接下来,在本Hadoop测试教程中,我们将学习如何测试Hadoop应用程序。

如何测试Hadoop应用程序

下图概述了大数据应用测试的各个阶段。

在 Hadoop 集群上测试大数据应用程序的高级阶段

大数据测试,或者 Hadoop 测试,大致可以分为三个步骤。

步骤 1:数据阶段验证

本大数据测试教程的第一步称为 Hadoop 前阶段,它涉及流程验证。

  • 来自关系数据库管理系统、网络日志、社交媒体等各种来源的数据应进行验证,以确保将正确的数据提取到系统中。
  • 将源数据与推送到 Hadoop 系统的数据进行比较,以确保它们匹配
  • 确认数据正确无误tracted 并加载到正确的 高密度文件系统

像工具一样 拓蓝 Datameer 可用于数据暂存验证。

第 2 步:“MapReduce”验证

第二步是对“MapReduce”进行验证。在此阶段,大数据测试人员会在每个节点上验证业务逻辑,然后在多个节点上运行后再次验证,以确保:

  • MapReduce 流程运行正常
  • 对数据实施数据聚合或隔离规则
  • 生成键值对
  • MapReduce流程结束后的数据验证

步骤 3:输出验证阶段

Hadoop 测试的最后或第三阶段是输出验证过程。输出数据文件已生成并准备根据要求移动到 EDW(企业数据仓库)或任何其他系统。

第三阶段的活动包括:

  • 检查转换规则是否正确应用
  • 检查数据完整性以及数据是否成功加载到目标系统
  • 通过将目标数据与 HDFS 文件系统数据进行比较来检查是否存在数据损坏

Archi结构测试

现在,人们的注意力从数据转移到了承载数据的集群。

Hadoop 处理海量数据,资源消耗巨大。因此,架构测试对于确保大数据项目的成功至关重要。设计不佳或不当的系统可能导致性能下降,甚至无法满足需求。至少, 性能 故障转移测试服务应在 Hadoop 环境中运行。

性能测试包括作业完成时间、内存利用率、数据吞吐量以及其他类似的系统指标的测试。故障转移测试服务的目的是验证在数据节点发生故障时,数据处理是否能够无缝进行。

性能测试

大数据性能测试涵盖三个主要方面。

  • 数据摄取和吞吐量: 在这个阶段,大数据测试人员会验证系统从各种数据源读取数据的速度。测试内容包括确定队列在给定时间范围内可以处理的消息数量,以及将数据插入底层数据存储的速度,例如插入速率。 MongoDBCassandra 数据库。
  • 数据处理: 这包括验证查询或 MapReduce 作业的执行速度。它还包括在底层数据存储已填充数据集的情况下,单独测试数据处理。例如,在底层 HDFS 上运行 MapReduce 作业。
  • 子组件性能: 这些系统由多个组件构成,因此必须对每个组件进行单独测试。例如,消息的索引和消费速度、MapReduce 作业、查询性能、搜索等。

性能测试方法

大数据应用程序的性能测试涉及对海量结构化和非结构化数据的测试,因此需要采用特定的测试方法来测试如此庞大的数据。

下面所示的工作流程展示了性能测试所遵循的步骤。

从大数据集群搭建到优化配置的性能测试方法工作流程

性能测试按以下顺序执行。

  1. 该流程首先要搭建大数据集群,然后对其进行性能测试。
  2. 识别并设计相应的工作负载
  3. 为每位客户准备个性化脚本(创建自定义脚本)
  4. 执行测试并分析结果(如果未达到目标,则调整组件并重新执行)。
  5. 最佳配置

性能测试参数

性能测试需要验证的各项参数包括:

  • 数据存储: 数据如何在不同节点中存储
  • 提交日志: 允许提交日志增长多大
  • 并发: 有多少个线程可以执行读写操作
  • 缓存: 调整缓存设置中的“行缓存”和“键缓存”。
  • 超时: 连接超时、查询超时等的值。
  • JVM参数: 堆大小、GC 回收算法等。
  • MapReduce性能: 排序、合并等。
  • 消息队列: 消息速率、大小等。

测试环境需求

测试环境的需求取决于您要测试的应用程序类型。对于大数据软件测试,测试环境应包含以下内容。

  • 它应该有足够的空间来存储和处理大量数据。
  • 它应该有一个具有分布式节点和数据的集群
  • 它应该具有最低的 CPU 和内存利用率以保持高性能来测试大数据性能

大数据测试与传统数据库测试

下表逐项对比了这两个学科的特性。

物业 传统数据库测试 大数据测试
时间 测试人员处理结构化数据 测试器可处理结构化数据和非结构化数据
测试方法 测试方法定义明确且经过时间检验 测试方法需要集中精力进行研发
测试策略 测试人员可以选择手动执行“抽样”策略,也可以选择通过自动化工具执行“穷举验证”策略。 大数据中的“抽样”策略是一项挑战
基础设施 由于文件大小有限,因此不需要特殊的测试环境 由于数据量和文件量较大,需要特殊的测试环境(HDFS)
验证工具 测试人员使用基于 Excel 的宏或基于 UI 的自动化工具。 没有既定的工具;范围非常广泛,从 MapReduce 等编程工具到 HiveQL 等工具都有涉及。
测试工具 测试工具只需基本的操作知识和较少的培训即可使用。 操作测试工具需要特定的技能和培训。此外,这些工具尚处于发展初期,随着时间的推移,它们可能会推出新的功能。

大数据场景中使用的工具

下表按集群层对常用工具进行分组。

大数据 Cluster 大数据工具
NoSQL: CouchDB、数据库 MongoDB, Cassandra、Redis、ZooKeeper、HBase
MapReduce: Hadoop, 蜂房Pig、Cascading、Oozie、Kafka、S4、MapR 水槽
存储: S3、HDFS(Hadoop分布式文件系统)
服务器: 弹性 Heroku, Google App Engine,EC2
处理: R、Yahoo! Pipes、Mechanical Turk、BigSheets、Datameer

大数据测试面临的挑战

几乎所有大数据项目都会遇到三个实际障碍。

  • 自动化: 自动化测试 大数据处理需要具备技术专长的人员。此外,自动化工具无法应对测试过程中出现的意外问题。
  • 虚拟化: 这是测试过程中不可或缺的阶段之一。虚拟机延迟会给实时大数据性能测试带来时间问题。此外,大数据中的镜像管理也十分繁琐。
  • 大型数据集: 体积会带来三种压力。
    • 需要验证更多数据,并且需要更快地完成
    • 需要自动化测试工作
    • 需要能够在不同平台上进行测试

性能测试挑战

  • 多种技术: 每个子组件都属于不同的技术,需要单独进行测试。
  • 缺少特定工具: 没有哪一种单一工具能够执行端到端测试。例如,NoSQL 可能并不适用于消息队列。
  • 测试脚本: 设计测试场景和测试用例需要高度的脚本编写。
  • 测试环境: 由于数据量庞大,需要特殊的测试环境。
  • 监控解决方案: 目前能够监测整个环境的解决方案非常有限。
  • 诊断解决方案: 需要定制解决方案才能深入分析性能瓶颈区域。

常见问题

数据质量检查是数据库测试的一部分,在应用程序测试开始之前进行。测试人员会验证数据的一致性、准确性、重复性、有效性和完整性,并查找空值、编码问题和列偏移。

人工智能可以生成与生产环境类似的合成测试数据,同时不会泄露私有记录;它还能标记出固定规则无法发现的管道异常;并确定需要运行的验证检查的优先级。但对业务逻辑的人工审核仍然至关重要。

Copilot 和类似的智能助手可以加速样板代码的执行:HiveQL 比较查询、PySpark 断言和协调脚本。首先针对已知良好的数据集运行生成的代码,因为看似合理的查询可能会验证错误的列。

模式验证确保传入的记录在到达 HDFS 或 NoSQL 存储之前,都包含预期的字段、类型和空值处理机制。在数据摄取阶段发现模式偏差的成本远低于…… trac稍后会收到损坏的输出。

团队会将来自生产环境的经过掩码处理的子集样本、用于测试极端情况(例如空值和异常值)的生成记录以及重放的历史数据流结合起来。单独使用抽样方法风险很大,因为只有极少数记录才会导致真正值得发现的故障。

ETL 测试使用既定工具和可预测的数据量,验证结构化数据是否成功加载到数据仓库中。大数据测试则涵盖分布式集群上的结构化和非结构化数据,其验证过程使用 MapReduce 或 HiveQL 编写。

根据消息大小测量摄取率,注入积压消息以确认队列恢复,并在传输过程中终止节点以检查是否有消息丢失。将统计的源事件窗口与目标事件进行比较。

SQL 和 HiveQL,一种用于 MapReduce 的语言 Spark 工作经验、HDFS 和 NoSQL 存储的实际操作知识,以及测试框架脚本编写能力。分析推理能力更为重要,因为目前还没有单一的端到端工具。

总结一下这篇文章: