大数据测试:功能和性能

翻译自:http://www.guru99.com/big-data-testing-functional-performance.html#1

什么是大数据?

大数据是不能使用传统计算技术处理的大型数据集的集合。这些数据集的测试涉及各种工具,技术和框架来处理。大数据涉及数据创建,存储,检索和分析,在数量,多样性和速度方面都非常出色。您可以在这里了解有关大数据,Hadoop和Mapreduce的更多信息

在本教程中,我们将学习,

<h3 id="1">大数据测试策略</h3>

测试大数据应用程序更多的是验证其数据处理,而不是测试软件产品的个别功能。当涉及到大数据测试时,性能和功能测试是关键。

在大数据测试中,QA工程师使用集群和其他支持组件来验证TB级数据的成功过程。它需要高水平的测试技能,因为过程非常快。过程可以是三种类型

060315_1205_BigDataTest1.png

与此同时,数据质量也是大数据测试的一个重要因素。在测试应用程序之前,有必要检查数据的质量,并应将其视为数据库测试的一部分。它涉及检查各种特征,如一致性,准确性,重复,一致性,有效性,数据完整性等。

<h3 id="2">验证大数据应用程序的测试步骤</h3>

下图给出了测试大数据应用程序阶段的高级概述

060315_1205_BigDataTest2.png

大数据测试大致可分为三个步骤

步骤1:数据分段验证

大数据测试的第一步,也称为pre-Hadoop阶段涉及过程验证。

  • 来自各种来源(如RDBMS,博客,社交媒体等)的数据应进行验证,以确保正确的数据被拉入系统
  • 将源数据与推送到Hadoop系统中的数据进行比较,以确保它们匹配
  • 验证正确的数据被提取并加载到正确的HDFS位置

像工具Talend,Datameer,可用于数据分段的验证

步骤2:“MapReduce”验证

第二步是验证“MapReduce”。在这个阶段,测试人员验证每个节点上的业务逻辑验证,然后在多个节点运行后验证它们,确保

  • Map Reduce进程正常工作
  • 在数据上实现数据聚合或隔离规则
  • 生成键值对
  • 在Map Reduce进程后验证数据

步骤3:输出验证阶段

大数据测试的最终或第三阶段是输出验证过程。生成输出数据文件,并准备根据需要将其移至EDW(企业数据仓库)或任何其他系统。

第三阶段活动包括

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

<h3 id="3">架构测试</h3>
Hadoop处理非常大量的数据,并且资源密集。因此,架构测试对于确保大数据项目的成功至关重要。系统设计不当或设计不当可能导致性能下降,系统可能无法满足要求。至少,性能和故障转移测试服务应在Hadoop环境中完成。

性能测试包括测试作业完成时间,内存利用率,数据吞吐量和类似的系统指标。虽然故障转移测试服务的动机是验证数据处理在数据节点故障的情况下无缝地发生

<h3 id="4">性能测试</h3>

大数据的性能测试包括两个主要方面:

  • 数据获取和吞吐量:在这个阶段,测试人员验证快速系统如何使用来自各种数据源的数据。测试涉及识别队列在给定时间帧中可以处理的不同消息。它还包括如何快速地将数据插入到底层数据存储中,例如插入到Mongo和Cassandra数据库中。
  • 数据处理:它涉及验证执行查询或map reduce作业的速度。它还包括底层数据存储的数据集中填充时隔离测试数据的过程。例如,在底层HDFS上运行Map Reduce作业
  • 子组件性能:这些系统由多个组件组成,必须单独测试这些组件。例如,消息被索引和使用的速度,mapreduce作业,查询性能,搜索等。

性能测试方法

大数据应用程序的性能测试涉及大量结构化和非结构化数据的测试,它需要一种特定的测试方法来测试这样的大量数据。

060315_1205_BigDataTest3.png

性能测试按此顺序执行

  1. 对要性能测试的大数据集群的进行设置
  2. 识别和设计相应的工作负载
  3. 准备单个客户端(创建自定义脚本)
  4. 执行测试并分析结果(如果不满足目标,则调整组件并重新执行)
  5. 最佳配置

性能测试的参数

要验证性能测试的各种参数是

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

<h3 id="5">测试环境需求</h3>

测试环境需求取决于要测试的应用程序的类型。对于大数据测试,测试环境应包括

  • 它应该有足够的空间用于存储和处理大量的数据
  • 它应该具有分布式节点和数据的集群
  • 它应该具有最小的CPU和内存利用率,以保持高性能

<h3 id="6">大数据测试 传统数据库测试</h3>

属性 传统数据库测试 大数据测试
数据 使用结构化数据 同时处理结构化数据和非结构化数据
测试方法定义明确和time-tested 测试方法需要集中的研发工作
测试人员可以选择“自动化工具”手动执行“抽样”策略或“完全验证”策略 大数据中的“抽样”策略是一个挑战
基础设施 它不需要特殊的测试环境,因为文件大小有限 它需要特殊的测试环境,因为大的数据大小和文件(HDFS)
验证工具 测试程序使用基于Excel的宏或基于UI的自动化工具 没有定义的工具,范围从广泛从编程工具,如MapReduce到HIVEQL
测试工具可以使用基本的操作知识和较少的培训 它需要一组特定的技能和培训来操作测试工具。此外,工具处于新生阶段,加班也许会带来新的功能。

<h3 id="7">大数据场景中使用的工具</h3>

大数据集群 大数据工具
NoSQL CouchDB,MongoDB,Cassandra,Redis,ZooKeeper,Hbase
MapReduce Hadoop,Hive,Pig,Cascading,Oozie,Kafka,S4,MapR,Flume
存储 S3,HDFS(Hadoop分布式文件系统)
服务器 Elastic,Heroku,Google App Engine,EC2
处理 R,Yahoo!Pipes,Mechanical Turk,BigSheets,Datameer

<h3 id="8">大数据测试中的挑战</h3>

  • 自动化
    大数据的自动化测试需要有技术专长的人员。此外,自动化工具不能处理测试期间出现的意外问题

  • 虚拟化
    它是测试的必需阶段之一。虚拟机延迟会在实时大数据测试中产生时序问题。还有在大数据中管理图像是一个麻烦。

  • 大数据集

    • 需要验证更多的数据,需要做的更快
    • 需要自动化测试工作
    • 需要能够跨不同平台进行测试

性能测试的挑战

  • 多样化的技术:每个子组件属于不同的技术,需要独立测试
  • 特定工具的不可用性:没有单个工具可以执行端到端测试。例如,NoSQL可能不适合消息队列
  • 测试脚本:需要高度的脚本来设计测试场景和测试用例
  • 测试环境:由于数据量大,需要特殊的测试环境
  • 监控解决方案:可监控整个环境的解决方案有限
  • 诊断解决方案:需要开发定制解决方案下钻到性能瓶颈区域

概要

  • 随着数据工程和数据分析的进一步发展,大数据测试是不可避免的。
  • 大数据处理可以是批处理,实时或交互
  • 测试大数据应用的3个阶段
    • 数据分段验证
    • “MapReduce”验证
    • 输出验证阶段
  • 架构测试是大数据测试的重要阶段,因为设计不良可能会导致前所未有的错误和性能下降
  • 大数据的性能测试包括验证
    • 数据吞吐量
    • 数据处理
    • 子组件性能
  • 大数据测试与传统数据测试在数据,基础设施和验证工具方面非常不同
  • 大数据测试的挑战包括虚拟化,测试自动化和处理大型数据集。大数据应用程序的性能测试也是一个问题。

推荐阅读更多精彩内容