1、大数据测试方法和工具梳理1 什么是大数据大数据是一个大的数据集合,通过传统的计算技术无法进行处理。这些数据集的测试需要使用各种工具、技术和框架进行处理。大数据涉及数据创建、存储、检索、分析,而且它在数量、多样性、速度方法都很出色。2 大数据测试类型测试大数据应用程序更多的是验证其数据处理,而不是测试软件产品的个别功能。当涉及到大数据测试时,性能和功能测试是关键。在大数据测试中,QA 工程师使用集群和其他组件来验证对 TB级数据的成功处理。因为处理非常快,所以它需要高水平的测试技能。处理可以是三种类型:批量、实时、交互。与此同时,数据质量也是大数据测试的一个重要因素。在测试应用程序之前,有必要检
2、查数据的质量,并将其视为数据库测试的一部分。它涉及检查各种字段,如一致性,准确性,重复,一致性,有效性,数据完整性等。3 大数据测试实现被分成三个步3.1 步骤 1:数据分段验证大数据测试的第一步,也称为 pre-Hadoop 阶段涉及过程验证。 来自各种来源(如 RDBMS,博客,社交媒体等)的数据应进行验证,以确保正确的数据被拉入系统 将源数据与推送到 Hadoop 系统中的数据进行比较,以确保它们匹配 验证正确的数据被提取并加载到正确的 HDFS 位置该阶段可以使用工具 Talend 或 Datameer,进行数据阶段验证。3.2 步骤 2:“MapReduce” 验证大数据测试的第二步
3、是 MapReduce 的验证。在这个阶段,测试者在每个节点上进行业务逻辑验证,然后在运行多个节点后验证它们,确保如下操作的正确性: Map Reduce 进程正常工作 在数据上实现数据聚合或隔离规则 生成键值对 在 Map Reduce 进程后验证数据3.3 步骤 3:输出验证阶段大数据测试的最后或第三阶段是输出验证过程。生成输出数据文件,同时把文件移到一个 EDW(Enterprise Data Warehouse:企业数据仓库)中或着把文件移动到任何其他基于需求的系统中。在第三阶段的活动包括: 检查转换(Transformation)规则被正确应用 检查数据完整性和成功的数据加载到目标系
4、统中 通过将目标数据与 HDFS 文件系统数据进行比较来检查没有数据损坏4 架构测试Hadoop 处理非常大量的数据,并且资源密集。因此,架构测试对于确保大数据项目的成功至关重要。系统设计不当或设计不当可能导致性能下降,系统可能无法满足要求。至少,性能和故障转移测试服务应在 Hadoop 环境中完成。性能测试包括测试作业完成时间,内存利用率,数据吞吐量和类似的系统指标。虽然故障转移测试服务的动机是验证数据处理在数据节点故障的情况下无缝地发生5 性能测试大数据的性能测试包括两个主要方面: 数据获取和吞吐量:在这个阶段,测试人员验证快速系统如何使用来自各种数据源的数据。测试涉及识别队列在给定时间帧
5、中可以处理的不同消息。它还包括如何快速地将数据插入到底层数据存储中,例如插入到 Mongo 和 Cassandra 数据库中。 数据处理:它涉及验证执行查询或 map reduce 作业的速度。它还包括底层数据存储的数据集中填充时隔离测试数据的过程。例如,在底层 HDFS 上运行 Map Reduce 作业 子组件性能:这些系统由多个组件组成,必须单独测试这些组件。例如,消息被索引和使用的速度,mapreduce 作业,查询性能,搜索等。5.1 性能测试方法大数据应用程序的性能测试涉及大量结构化和非结构化数据的测试,它需要一种特定的测试方法来测试这样的大量数据。性能测试按此顺序执行1. 对要性
6、能测试的大数据集群的进行设置2. 识别和设计相应的工作负载3. 准备单个客户端(创建自定义脚本)4. 执行测试并分析结果(如果不满足目标,则调整组件并重新执行)5. 最佳配置5.2 性能测试的参数要验证性能测试的各种参数是 数据存储:数据如何存储在不同的节点中 提交日志:提交日志允许增长的大小 并发性:有多少线程可以执行写和读操作 缓存:调整缓存设置“行缓存”和“密钥缓存” 。 超时:连接超时,查询超时等的值。 JVM 参数:堆大小,GC 收集算法等。 降低性能:排序,合并等 消息队列:消息速率,大小等6 测试环境需求测试环境需求取决于要测试的应用程序的类型。对于大数据测试,测试环境应包括 它
7、应该有足够的空间用于存储和处理大量的数据 它应该具有分布式节点和数据的集群 它应该具有最小的 CPU 和内存利用率,以保持高性能7 大数据测试和 传统数据库测试8 大数据场景中使用的工具8.1 针对大数据单个组件测试工具GridMix 针对 Hadoop 集群的测试基准,它具备评测大规模数据处理系统所需的各个功能模块,包括:产生数据,生成并提交作业,统计作业完成时间等。TeraSort 针对文本数据的排序。1TB 排序通常用于衡量分布式数据处理框架的数据处理能力。Terasort 是 hadoop 中的的一个排序作业,在 2008 年,Hadoop 在 1TB 排序基准评估中赢得第一名,耗时
8、209 秒。YCSB 是 Yahoo 开发的一个专门用来对新一代数据库进行基准测试的工具。全名是 Yahoo! Cloud Serving Benchmark。 他们开发这个工具的目的是希望有一个标准的工具用来衡量不同数据库的性能。YCSB 做了很多优化来提高客户端性能,例如在数据类型上用了最原始的比特数组以减少数据对象本身创建转换所需的时间等。Filebench 是一款文件系统性能的自动化测试工具,它通过快速模拟真实应用服务器的负载来测试文件系统的性能。它不仅可以仿真文件系统微操作(如 copyfiles, createfiles, randomread, randomwrite ) ,而且
9、可以仿真复杂的应用程序(如 varmail, fileserver, oltp, dss, webserver, webproxy ) 。Filebench 比较适合用来测试文件服务器性能,但同时也是一款负载自动生成工具,也可用于文件系统的性能。8.2 综合类测试工具,覆盖大数据平台多个功能组件Hibench 是用来在速度方面评估不同的大数据框架的,它包括一系列的 Hadoop,Spark,streaming 工作负载,包括sort,wordcount,TeraSort, Sleep, SQL, PageRank, Nutch indexing, Bayes, Kmeans, NWeight
10、and enhanced DFSIO,等。同样也为 park Streaming, Flink, Storm and Gearpump 提供工作负载。BigDataBench 是中科院计算所提出的大数据测试工具,覆盖了结构数据、半结构数据和非结构数据,其负载模拟了搜索引擎、社交网络和电子商务等业务模型。8.3 具体应用领域端到端大数据测试工具BigBench 是基于 TPC-DS 开发的端到端测试工具,面向零售业务,模拟电子商务的整个流程,主要测试 MapReduce 和并行 DBMS。9 大数据测试中的挑战9.1 自动化大数据的自动化测试需要有技术专长的人员。此外,自动化工具不能处理测试期间
11、出现的意外问题9.2 虚拟化它是测试的必需阶段之一。虚拟机延迟会在实时大数据测试中产生时序问题。还有在大数据中管理图像是一个麻烦。9.3 大数据集 需要验证更多的数据,需要做的更快 需要自动化测试工作 需要能够跨不同平台进行测试9.4 性能测试的挑战 多样化的技术:每个子组件属于不同的技术,需要独立测试 特定工具的不可用性:没有单个工具可以执行端到端测试。例如,NoSQL 可能不适合消息队列 测试脚本:需要高度的脚本来设计测试场景和测试用例 测试环境:由于数据量大,需要特殊的测试环境 监控解决方案:可监控整个环境的解决方案有限 诊断解决方案:需要开发定制解决方案下钻到性能瓶颈区域万维测试部大数据测试研究小组成员:王成飞、王亮、袁军才、何鹏林2017 年 7 月 31 号