大数据是无法使用传统计算技术处理的大型数据集的集合,所以这些数据集的测试涉及各种要处理的工具,技术和框架,需要去了解和掌握。
大数据测试是大数据应用程序的测试,不是测试软件产品的各个功能,而是测试大数据应用程序对其数据处理的验证,数据处理功能和性能测试是关键。
本文章主要介绍大数据测试的基本知识。
Quick Guide
大数据测试类型
- 数据处理
- 批量
- 实时
- 交互
- 数据质量
- 一致性
- 准确性
- 有效性
- 完整性
大数据测试步骤
数据阶段验证
大数据测试的第一步,也称作pre-hadoop阶段该过程包括如下验证:
- 来自各方面的数据资源应该被验证,来确保正确的数据被加载进系统
- 将源数据与推送到Hadoop系统中的数据进行比较,以确保它们匹配
- 验证正确的数据被提取并被加载到HDFS正确的位置
该阶段可以使用工具 Talend 或 Datameer,进行数据阶段验证。
MapReduce 验证
大数据测试的第二步是MapReduce的验证。在这个阶段,测试者在每个节点上进行业务逻辑验证,然后在运行多个节点后验证它们,确保如下操作的正确性:
- Map与Reduce进程正常工作
- 在数据上实施数据聚合或隔离规则
- 生成键值对
- 在执行Map和Reduce进程后验证数据
输出阶段验证
大数据测试的最后或第三阶段是输出验证过程。生成输出数据文件,同时把文件移到一个EDW(Enterprise Data Warehouse:企业数据仓库)中或着把文件移动到任何其他基于需求的系统中。在第三阶段的活动包括:
- 检查转换(Transformation)规则被正确应用
- 检查数据完整性和成功的数据加载到目标系统中
- 通过将目标数据与HDFS文件系统数据进行比较来检查没有数据损坏
架构测试
Hadoop处理大量数据,并且资源非常密集。因此,架构测试对于确保大数据项目的成功至关重要。设计不良或不正确的系统可能会导致性能下降,并且系统可能无法满足要求。至少应在Hadoop环境中完成 性能 和 故障转移 测试服务。
- 性能测试 包括测试作业完成时间,内存利用率,数据吞吐量和类似的系统指标。
- 故障转移 测试服务的目的是验证数据节点发生故障时无缝地进行数据处理
性能测试
大数据性能测试包括两个主要措施
- 数据提取和遍历:在此阶段,测试人员将验证快速系统如何使用各种数据源中的数据。测试涉及识别队列可以在给定时间范围内处理的其他消息。它还包括可以将数据插入基础数据存储库的速度,例如向Mongo和Cassandra数据库的插入率。
- 数据处理:它涉及验证查询或映射归约作业的执行速度。它还包括当基础数据存储区填充在数据集中时,单独测试数据处理。例如,在基础HDFS上运行Map Reduce作业。
注:由于系统由多个组件组成,并且必须单独测试每个组件。例如,对消息进行索引和使用的速度、MapReduce作业、查询性能和搜索等。
性能测试方法
大数据应用性能测试涉及大量结构化和非结构化数据的测试,并且需要特定的测试方法来测试这些海量数据。
测试步骤
- 过程从设置要测试性能的大数据群集开始
- 确定和设计相应的工作量
- 准备个人客户(自定义脚本创建)
- 执行测试并分析结果(如果不满足目标,则调整组件并重新执行)
- 最佳配置
性能测试的参数
需要进行性能测试验证的各种参数是:
- 数据存储:数据如何存储在不同的节点中
- 提交日志:允许增长的提交日志有多大
- 并发性:有多少个线程可以执行写入和读取操作
- 缓存:调整缓存设置“行缓存”和“键缓存”。
- 超时:连接超时值,查询超时值等
- JVM参数:堆大小,GC收集算法等
- 地图降低性能:排序,合并等
- 消息队列:消息速率,大小等
测试环境需求
测试环境需要取决于您正在测试的应用程序的类型。对于大数据测试,测试环境应包含
- 它应该有足够的空间用于存储和处理大量数据
- 它应该具有包含分布式节点和数据的集群
- 它应具有最低的CPU和内存利用率以保持高性能
大数据测试 与 传统数据库测试 对比
类型 | 传统数据库测试 | 大数据测试 |
---|---|---|
数据 | 使用结构化数据; 测试方法定义明确且经过时间检验; 测试人员可以选择手动执行采样策略或通过自动化工具选择”详尽验证”策略 |
使用结构化和非结构化数据; 测试方法类似开发工作; 大数据中的采样策略是一个挑战 |
环境 | 由于文件大小有限,因此不需要特殊的测试环境 | 由于数据量大和文件大(HDFS),因此需要特殊的测试环境 |
验证工具 | 使用基于Excel的宏或基于UI的自动化工具 | 没有定义的工具,范围从MapReduce到HiveQL等编程工具 |
大数据场景中使用的工具
类型 | 组件 |
---|---|
数据处理 | Apache Flink Apache Spark |
消息系统 | Apache Kafka Apache Pulsar |
数据查询引擎 | Apache Hive Apache SparkSQL Apache Impala Elasticsearch |
数据采集 | Apache Flume Logstash |
数据存储 | Apache HBase HDFS |
数据转换、同步 | Apache Sqoop |
资源管理 | Apache Hadoop YARN |
应用协调 | Apache Zookeeper |
数据分析和报告工具 | Apache Zeppelin Cloudera Hue |
大数据测试中的挑战
- 自动化:大数据的自动化测试需要具有专业技术知识的人员。自动化工具不具备处理测试期间出现的意外问题的能力
- 虚拟化:这是测试不可或缺的阶段之一。虚拟机延迟会在实时大数据测试中造成时序问题。在大数据中管理图像也很麻烦。
- 大数据集
- 需要验证更多数据,并且需要更快地进行处理
- 需要自动化测试工作
- 需要能够在不同平台上进行测试
- 性能测试挑战
- 多种技术:每个子组件都属于不同的技术,并且需要单独进行测试
- 特定工具不可用:没有单个工具可以执行端到端测试。例如,NoSQL可能不适用于消息队列
- 测试脚本:设计测试方案和测试用例需要高度的脚本编写
- 测试环境:由于数据量大,需要特殊的测试环境
- 监视解决方案:存在可以监视整个环境的有限解决方案
- 诊断解决方案:需要开发自定义解决方案来挖掘性能瓶颈区域
More info: 大数据测试