大数据测试教程:什么是大数据测试、测试策略、如何测试
什么是大数据测试?
大数据测试是对大数据应用程序进行测试的过程,旨在确保大数据应用程序的所有功能都能按预期运行。大数据测试的目标是确保大数据系统在保持性能和安全性的同时,平稳无误地运行。
大数据是指无法使用传统计算技术处理的大型数据集的集合。处理这些数据集需要用到各种工具、技术和框架。大数据涉及数据的创建、存储、检索和分析,其特点是数据量巨大、种类繁多、处理速度极快。您可以了解更多信息。 大数据, Hadoop的 和 映射简化 在开始测试之前。
什么是大数据测试策略?
大数据应用测试更侧重于验证其数据处理能力,而非测试软件产品的各个功能。对于大数据测试而言,性能测试和功能测试至关重要。
在大数据测试策略中,质量保证工程师使用通用集群和其他辅助组件来验证TB级数据的成功处理。由于处理速度非常快,因此对测试技能的要求很高。处理方式可分为三种:
- 批量处理: 存储的数据按计划进行处理,因此测试的目标是作业完成情况和准确性。
- 实时处理: 记录到达后即进行处理,因此测试主要针对延迟和数据丢失。
- 交互式处理: 分析师直接进行查询,因此测试目标是临时查询的响应时间。
下图概括了该策略。
此外,数据质量也是Hadoop测试中的一个重要因素。在测试应用程序之前,必须检查数据质量,这应被视为数据库测试的一部分。它涉及检查各种特性,例如一致性、准确性、重复性、有效性、数据完整性等。接下来,在本Hadoop测试教程中,我们将学习如何测试Hadoop应用程序。
如何测试Hadoop应用程序
下图概述了大数据应用测试的各个阶段。
大数据测试,或者 Hadoop 测试,大致可以分为三个步骤。
步骤 1:数据阶段验证
本大数据测试教程的第一步称为 Hadoop 前阶段,它涉及流程验证。
- 来自关系数据库管理系统、网络日志、社交媒体等各种来源的数据应进行验证,以确保将正确的数据提取到系统中。
- 将源数据与推送到 Hadoop 系统的数据进行比较,以确保它们匹配
- 确认数据正确无误tracted 并加载到正确的 高密度文件系统 !
像工具一样 拓蓝 Datameer 可用于数据暂存验证。
第 2 步:“MapReduce”验证
第二步是对“MapReduce”进行验证。在此阶段,大数据测试人员会在每个节点上验证业务逻辑,然后在多个节点上运行后再次验证,以确保:
- MapReduce 流程运行正常
- 对数据实施数据聚合或隔离规则
- 生成键值对
- MapReduce流程结束后的数据验证
步骤 3:输出验证阶段
Hadoop 测试的最后或第三阶段是输出验证过程。输出数据文件已生成并准备根据要求移动到 EDW(企业数据仓库)或任何其他系统。
第三阶段的活动包括:
- 检查转换规则是否正确应用
- 检查数据完整性以及数据是否成功加载到目标系统
- 通过将目标数据与 HDFS 文件系统数据进行比较来检查是否存在数据损坏
Archi结构测试
现在,人们的注意力从数据转移到了承载数据的集群。
Hadoop 处理海量数据,资源消耗巨大。因此,架构测试对于确保大数据项目的成功至关重要。设计不佳或不当的系统可能导致性能下降,甚至无法满足需求。至少, 性能 故障转移测试服务应在 Hadoop 环境中运行。
性能测试包括作业完成时间、内存利用率、数据吞吐量以及其他类似的系统指标的测试。故障转移测试服务的目的是验证在数据节点发生故障时,数据处理是否能够无缝进行。
性能测试
大数据性能测试涵盖三个主要方面。
- 数据摄取和吞吐量: 在这个阶段,大数据测试人员会验证系统从各种数据源读取数据的速度。测试内容包括确定队列在给定时间范围内可以处理的消息数量,以及将数据插入底层数据存储的速度,例如插入速率。 MongoDB 和 Cassandra 数据库。
- 数据处理: 这包括验证查询或 MapReduce 作业的执行速度。它还包括在底层数据存储已填充数据集的情况下,单独测试数据处理。例如,在底层 HDFS 上运行 MapReduce 作业。
- 子组件性能: 这些系统由多个组件构成,因此必须对每个组件进行单独测试。例如,消息的索引和消费速度、MapReduce 作业、查询性能、搜索等。
性能测试方法
大数据应用程序的性能测试涉及对海量结构化和非结构化数据的测试,因此需要采用特定的测试方法来测试如此庞大的数据。
下面所示的工作流程展示了性能测试所遵循的步骤。
性能测试按以下顺序执行。
- 该流程首先要搭建大数据集群,然后对其进行性能测试。
- 识别并设计相应的工作负载
- 为每位客户准备个性化脚本(创建自定义脚本)
- 执行测试并分析结果(如果未达到目标,则调整组件并重新执行)。
- 最佳配置
性能测试参数
性能测试需要验证的各项参数包括:
- 数据存储: 数据如何在不同节点中存储
- 提交日志: 允许提交日志增长多大
- 并发: 有多少个线程可以执行读写操作
- 缓存: 调整缓存设置中的“行缓存”和“键缓存”。
- 超时: 连接超时、查询超时等的值。
- 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 可能并不适用于消息队列。
- 测试脚本: 设计测试场景和测试用例需要高度的脚本编写。
- 测试环境: 由于数据量庞大,需要特殊的测试环境。
- 监控解决方案: 目前能够监测整个环境的解决方案非常有限。
- 诊断解决方案: 需要定制解决方案才能深入分析性能瓶颈区域。



