大数据测试教程:什么是测试,策略,如何测试 Hadoop
大数据测试
大数据测试是对大数据应用程序的测试过程,旨在确保大数据应用程序的所有功能按预期工作。大数据测试的目标是确保大数据系统平稳、无错误地运行,同时保持性能和安全性。
大数据是传统计算技术无法处理的大型数据集的集合。对这些数据集的测试涉及各种工具、技术和框架来处理。大数据与数据创建、存储、检索和分析相关,这些在数量、种类和速度方面都非常显著。您可以在此处了解更多关于大数据、Hadoop 和 MapReduce 的信息。
什么是大数据测试策略?
测试大数据应用程序更多的是验证其数据处理能力,而不是测试软件产品的单个功能。在进行大数据测试时,性能和功能测试是关键。
在大数据测试策略中,QA 工程师验证使用商品集群和其他支持组件成功处理 PB 级数据。由于处理速度非常快,这需要高水平的测试技能。处理可能分为三种类型:
此外,数据质量也是 Hadoop 测试中的一个重要因素。在测试应用程序之前,有必要检查数据质量,并将其视为数据库测试的一部分。它涉及检查各种特征,如一致性、准确性、重复性、一致性、有效性、数据完整性等。接下来在此 Hadoop 测试教程中,我们将学习如何测试 Hadoop 应用程序。
如何测试 Hadoop 应用程序
下图展示了测试大数据应用程序阶段的高层概述。
大数据测试或 Hadoop 测试可大致分为三个步骤:
步骤 1:数据暂存验证
此大数据测试教程的第一步是指 Hadoop 前阶段,涉及过程验证。
- 应验证来自关系数据库、Web 日志、社交媒体等各种源的数据,以确保正确的数据被拉入系统。
- 比较源数据与推送到 Hadoop 系统的数据,以确保它们匹配。
- 验证正确的数据是否已提取并加载到正确的 HDFS 位置。
可以使用 Talend、Datameer 等工具进行数据暂存验证。
步骤 2:“MapReduce”验证
第二步是“MapReduce”的验证。在此阶段,大数据测试人员会验证每个节点上的业务逻辑,然后通过在多个节点上运行来验证它们,确保
- MapReduce 进程正常工作
- 数据聚合或隔离规则已应用于数据
- 生成键值对
- 在 Map-Reduce 过程后验证数据
步骤 3:输出验证阶段
Hadoop 测试的最后或第三阶段是输出验证过程。输出数据文件已生成,并可根据要求移至 EDW(企业数据仓库)或任何其他系统。
第三阶段的活动包括:
- 检查转换规则是否正确应用。
- 检查数据完整性以及数据是否成功加载到目标系统中。
- 通过将目标数据与 HDFS 文件系统数据进行比较,检查数据是否损坏。
架构测试
Hadoop 处理大量数据,资源密集度很高。因此,架构测试对于确保您的 Big Data 项目的成功至关重要。设计不当或不正确的系统可能导致性能下降,系统可能无法满足要求。至少,应在 Hadoop 环境中执行性能和故障转移测试服务。
性能测试包括测试作业完成时间、内存利用率、数据吞吐量和类似的系统指标。而故障转移测试服务的目的是验证在数据节点发生故障时数据处理是否无缝进行。
性能测试
大数据性能测试包括两个主要操作:
- 数据摄取和吞吐量:在此阶段,大数据测试人员会验证系统从各种数据源消耗数据的速度。测试包括在给定时间范围内识别队列可以处理的不同消息。它还包括数据可以多快地插入底层数据存储,例如插入到 Mongo 和Cassandra 数据库的速度。
性能测试方法
大数据应用程序的性能测试涉及测试海量结构化和非结构化数据,这需要特定的测试方法来测试如此海量的数据。
性能测试按此顺序执行:
- 过程从设置要进行性能测试的大数据集群开始。
- 识别和设计相应的负载。
- 准备单个客户端(创建自定义脚本)。
- 执行测试并分析结果(如果未达到目标,则调整组件并重新执行)。
- 最佳配置
性能测试参数
要验证性能测试的各种参数包括:
- 数据存储:数据如何在不同节点中存储。
- 提交日志:允许提交日志增长多大。
- 并发性:有多少线程可以执行读写操作。
- 缓存:调整“行缓存”和“键缓存”设置。
- 超时:连接超时、查询超时等的设置。
- JVM 参数:堆大小、GC 收集算法等。
- MapReduce 性能:排序、合并等。
- 消息队列:消息速率、大小等。
测试环境需求
测试环境的需求取决于您要测试的应用程序类型。对于大数据软件测试,测试环境应包含:
- 它应具有足够的空间来存储和处理大量数据。
- 它应具有一个包含分布式节点和数据的集群。
- 它应具有最小的 CPU 和内存利用率,以保持高吞吐量来测试大数据性能。
大数据测试与传统数据库测试
属性 | 传统数据库测试 | 大数据测试 |
---|---|---|
数据 | 测试人员处理结构化数据。 | 测试人员处理结构化和非结构化数据。 |
测试方法 | 测试方法定义明确且经过时间考验。 | 测试方法需要专注的研发工作。 |
测试策略 | 测试人员可以选择手动进行“采样”策略,或使用自动化工具进行“详尽验证”策略。 | 大数据中的“采样”策略是一个挑战。 |
基础设施 | 由于文件大小有限,不需要特殊的测试环境。 | 由于数据量大且文件(HDFS)大,需要特殊的测试环境。 |
验证工具 | 测试人员使用基于 Excel 的宏或基于 UI 的自动化工具。 | 没有明确定义的工具,范围广泛,从 MapReduce 等编程工具到 HIVEQL。 |
测试工具 | 测试工具可以与基本的操作系统知识和较少的培训一起使用。 | 它需要一套特定的技能和培训才能操作测试工具。此外,这些工具尚处于起步阶段,随着时间的推移可能会出现新功能。 |
大数据场景中使用的工具
大数据集群 | 大数据工具 |
---|---|
NoSQL | CouchDB、MongoDB、Cassandra、Redis、ZooKeeper、HBase 数据库 |
MapReduce | Hadoop、Hive、Pig、Cascading、Oozie、Kafka、S4、MapR、Flume |
存储空间 | S3、HDFS(Hadoop 分布式文件系统) |
服务器 | Elastic、Heroku、Elastic、Google App Engine、EC2 |
处理 | R、Yahoo! Pipes、Mechanical Turk、BigSheets、Datameer |
大数据测试中的挑战
- 自动化
自动化测试大数据需要具备技术专长的人员。此外,自动化工具无法处理测试过程中出现的意外问题。
- 虚拟化
这是测试的一个基本阶段。虚拟机延迟会在实时大数据性能测试中造成计时问题。管理大数据中的映像也很麻烦。
- 大型数据集
- 需要验证更多数据,并且需要更快地完成。
- 需要自动化测试工作。
- 需要能够跨不同平台进行测试。
性能测试挑战
- 技术多样性:每个子组件都属于不同的技术,需要单独测试。
- 特定工具的不可用性:没有单一的工具可以执行端到端测试。例如,NoSQL 可能不适用于消息队列。
- 测试脚本:需要高度的脚本编写能力来设计测试场景和测试用例。
- 测试环境:由于数据量大,需要特殊的测试环境。
- 监控解决方案:可用于监控整个环境的解决方案有限。
- 诊断解决方案:需要开发自定义解决方案来深入了解性能瓶颈区域。
摘要
- 随着数据工程和数据分析的不断发展,大数据测试是不可避免的。
- 大数据处理可以是批处理、实时处理或交互式处理。
- 测试大数据应用程序的 3 个阶段是数据暂存验证、“MapReduce”验证和输出验证阶段。
- 架构测试是大数据测试的重要阶段,因为设计不当的系统可能导致前所未有的错误和性能下降。
- 大数据性能测试包括验证数据吞吐量、数据处理和子组件性能。
- 大数据测试在数据、基础设施和验证工具方面与传统数据测试有很大不同。
- 大数据测试的挑战包括虚拟化、测试自动化和处理大型数据集。大数据应用程序的性能测试也是一个问题。