1、前言
大数据测试是对大数据应用程序的测试过程,以确保大数据应用程序的所有功能按预期工作。大数据测试的目标是确保大数据系统在保持性能和安全性的同时,平稳无差错地运行。
大数据是无法使用传统计算技术处理的大型数据集的集合。这些数据集的测试涉及要处理的各种工具、技术和框架。大数据涉及数据的创建、存储、检索和分析,在数量、种类和速度方面都非常出色。您可以在此处了解有关大数据、Hadoop 和 MapReduce 的更多信息。
2、大数据测试策略
测试大数据应用更多的是对其数据处理的验证,而不是测试软件产品的单个功能。谈到大数据测试,性能和功能测试是关键。
在大数据测试策略中,QA工程师使用商品集群和其他支持组件验证TB级数据的成功处理。由于处理速度非常快,因此需要高水平的测试技能。处理可能分为三种类型
除此之外,数据质量也是大数据测试中的一个重要因素。在测试应用程序之前,有必要检查数据的质量,应该被视为数据库测试的一部分。它涉及检查各种特征,如一致性、准确性、重复性、有效性、数据完整性等。
3、如何测试大数据应用程序
下图给出了测试大数据应用程序阶段的高级概述
大数据测试大致可分为三个步骤:
步骤1:数据分段验证
大数据测试的第一步,也称为 Hadoop 前阶段,涉及过程验证。
-
应验证来自 RDBMS、网络日志、社交媒体等各种来源的数据,以确保将正确的数据提取到系统中。
-
将源数据与推送到 Hadoop 系统的数据进行比较以确保它们匹配。
-
验证是否提取了正确的数据并将其加载到正确的 HDFS 位置。
像工具 Talend,Datameer,可用于数据分段的验证。
步骤2:MapReduce验证
第二步是验证“MapReduce”。在这个阶段,测试人员在每个节点上进行业务逻辑验证,然后在多个节点上运行后验证它们,确保
-
Map Reduce 进程正常工作。
-
对数据实施数据聚合或隔离规则。
-
键值对生成。
-
在 Map-Reduce 过程之后验证数据。
步骤3:输出验证阶段
大数据测试的最后或第三阶段是输出验证过程。输出数据文件已生成并准备好根据要求移动到 EDW(企业数据仓库)或任何其他系统。第三阶段的活动包括
-
检查转换规则是否正确应用。
-
检查数据完整性和成功的数据加载到目标系统。
-
通过将目标数据与 HDFS 文件系统数据进行比较来检查是否存在数据损坏。
4、架构测试
Hadoop 处理非常大量的数据并且是高度资源密集型的。因此,架构测试对于确保大数据项目的成功至关重要。设计不佳或不当的系统可能会导致性能下降,并且系统可能无法满足要求。至少,性能和故障转移测试服务应该在 Hadoop 环境中完成。
性能测试包括对作业完成时间、内存利用率、数据吞吐量和类似系统指标的测试。而故障转移测试服务的动机是验证在数据节点发生故障的情况下数据处理是否无缝进行。
5、性能测试
大数据性能测试包括三个主要操作
-
数据获取和吞吐量:在此阶段,测试人员验证快速系统如何使用来自各种数据源的数据。测试涉及识别队列可以在给定时间范围内处理的不同消息。它还包括将数据插入底层数据存储的速度,例如插入 Mongo 和 Cassandra 数据库的速度。
-
数据处理:它涉及验证查询或 map reduce 作业的执行速度。它还包括在数据集中填充底层数据存储时单独测试数据处理。例如,在底层 HDFS 上运行 Map Reduce 作业。
-
子组件性能:这些系统由多个组件组成,必须单独测试每个组件。例如,消息被索引和消费的速度、MapReduce 作业、查询性能、搜索等。
6、性能测试方法
大数据应用的性能测试涉及对海量结构化和非结构化数据的测试,需要特定的测试方法来测试如此海量的数据。
性能测试按此顺序执行
1、该过程从要测试性能的大数据集群的设置开始
2、识别和设计相应的工作负载
3、准备单个客户端(创建自定义脚本)
4、执行测试并分析结果(如果不满足目标,则调整组件并重新执行)
5、最佳配置
7、性能测试参数
性能测试需要验证的各种参数是
-
数据存储:数据如何存储在不同的节点。
-
提交日志:允许提交日志增长的大小。
-
并发:有多少线程可以执行读写操作。
-
缓存:调整缓存设置“行缓存”和“键缓存”。
-
超时:连接超时、查询超时等的值。
-
JVM 参数:堆大小、GC 收集算法等。
-
降低性能:排序、合并等。
-
消息队列:消息速率、大小等。
8、测试环境需求
测试环境需要取决于您正在测试的应用程序类型。对于大数据软件测试,测试环境应该包括
-
它应该有足够的空间来存储和处理大量数据。
-
它应该有一个具有分布式节点和数据的集群。
-
它应该具有最低的 CPU 和内存使用率以保持高性能以测试大数据性能。
9、大数据测试对比传统数据库测试
10、大数据场景中使用的工具
11、大数据测试的挑战
1、自动化
大数据的自动化测试需要具有技术专长的人员。此外,自动化工具不具备处理测试过程中出现的意外问题的能力。
2、虚拟化
它是测试的组成部分之一。虚拟机延迟会在实时大数据性能测试中产生计时问题。在大数据中管理图像也很麻烦。
3、大数据集
需要验证更多数据并且需要更快地完成。
需要自动化测试工作。
需要能够跨不同平台进行测试。
12、性能测试挑战
-
多样化的技术:每个子组件属于不同的技术,需要单独测试。
-
特定工具不可用:没有单一工具可以执行端到端测试。例如,NoSQL 可能不适合消息队列。
-
测试脚本:需要高度的脚本来设计测试场景和测试用例。
-
测试环境:数据量大,需要特殊的测试环境。
-
监控解决方案:存在可以监控整个环境的有限解决方案。
-
诊断解决方案:需要开发自定义解决方案以深入挖掘性能瓶颈区域。