测试人进阶:终于有大佬把大数据测试讲清楚了

在这里插入图片描述

1.什么是大数据

大数据是一个大的数据集合,通过传统的计算技术无法进行处理。这些数据集的测试需要使用各种工具、技术和框架进行处理。大数据涉及数据创建、存储、检索、分析,而且它在数量、多样性、速度方法都很出色,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

图片

2.大数据测试类型

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

处理可以是三种类型:批量、实时、交互

在测试应用程序之前,有必要检查数据的质量,并将其视为数据库测试的一部分。它涉及检查各种字段,如一致性,准确性,重复,一致性,有效性,数据完整性等。

3.测试步骤

图片

  • 步骤一:数据预处理验证

在进行大数据测试时,首先要预hadoop前验证数据的准确性等等。

我们数据来源可能是关系数据库、日志系统、社交网络等等,所有我们应该确保数据能正确的加载到系统中,我们要

验证:

① 加载的数据和源数据是一致的

② 确保正确的提取和加载数据至hdfs中

  • 步骤二:Map Reduce验证

在进行大数据测试时,第二个关键步骤是“Map Reduce”验证。在本阶段,我们主要验证每一个处理节点的业务逻辑是否正确,并验证在多个运行后,确保:

① Map Reduce过程工作正常

② 数据聚合、分离规则已经实现

③ 数据key-value关系已正确生成

④ 验证经过map reduce后数据的准确性等特性

  • 步骤三:结果验证

在本阶段主要验证在经过大数据工具/框架处理后,生成的最终数据的成果。

检查转换(Transformation)规则被正确应用

检查数据完整性和成功的数据加载到目标系统中

4.性能测试

性能是评估一个大数据分析系统的最为关键的维度,大数据系统性能主要包括吞吐量,任务完工时间,内存利用率等多个指标,可反应大数据分析平台的处理能力,资源利用能力等性能。可通过hadoop性能监控器来监测运行状态性能指标和瓶颈问题,性能测试采用自动化化方式进行,测试系统在不同负载情况下的性能

5.容错性测试

可从部分失效中自动恢复,而且不会验证的影响整体性能,特别地,当故障发生时,大数据分析系统应该在进行恢复的同时继续以可接受的方式进行操作,在发生错误时某种程度上可以继续操作,需根据应用场景来设计解决方案和具体部署,然后手动测试。

6.可用性测试

高可用性已是大数据分析不可或缺的特性之一,从而保证数据应用业务的连续性.大数据高可用性对很多应用非常关键,需要严格进行测试和验证,以手动测试为主。

7.扩展性测试

弹性扩展能力对于大数据时代的文件系统尤其重要,文件系统扩展性测试主要包括测试系统弹性扩展能力(扩展/回缩)及扩展系统带来的性能影响,验证是否具有线性扩展能力,以手动测试为主。

8.稳定性测试

大数据分析系统通常是不间断长期运行,稳定性的重要性不言而喻,稳定测试主要验证系统在长时间(7/30/180/365*24)允许下,系统是否仍然能够正常运行,功能是否正常.稳定性测试通常采用自动化方式进行,LTP,10ZONE,POSTMARK,FIO等工具对测试系统产生负载,同时需要验证功能。

9.部署方式测试

大数据具备scale-out的特点,能够构建大规模,高性能的文件系统集群。针对不同应用和解决方案,文件系统部署方式会有显著不同;部署方式测试需要测试不同场景下的系统部署方式,包括自动安装配置,集群规模,硬件配置(服务器,存储,网络),自动负载均衡等,这部分测试不大可能进行自动化测试,需要根据应用场景来设计解决方案和具体部署,再进行手动测试。

10.数据一致性测试

这里的数据一致性是指文件系统中的数据与从外部写入前的数据保持一致,即写入数据与读出数据始终是一致的。数据一致性能够表明文件系统可保证数据的完整性,不会导致数据丢失或数据错误,这是文件系统最基本的功能,测试可用diff,md5sum编写脚本自动化测试,LTP也提供了数据一致性的测试工具。

11.压力测试

大数据分析系统的负载能力是存在上限的,系统过载时,系统就可能存在性能下降,功能异常,拒绝访问等问题。压力测试是验证系统造大压力下,包括数据多客户端,高OPS压力,高IOPS/吞吐量压力,系统是否仍然能够正常运行,功能是否正常,系统资源消耗情况,从而为大数据运营提供依靠。

12.大数据技术板块划分

数据采集

flume kafka logstash filebeat …

数据存储

mysql redis hbase hdfs …

虽然mysql不属于大数据范畴 但是我在这也列出来了,因为你在工作中离不开它

数据查询

hive impala elasticsearch kylin …

数据计算

实时计算

storm sparkstreaming flink …

离线计算

hadoop spark …

其他框架

zookeeper …

13.大数据学习步骤

1)linux基础和javase基础【包含mysql】

这些是基本功,刚开始也不可能学的很精通,最起码要对linux中的一些基本的命令混个脸熟,后面学习各种框架的时候都会用到,用多了就熟悉了。javase的话建议主要看面向对象,集合,io,多线程,以及jdbc操作即可。

图片

2)zookeeper

zookeeper是很多大数据框架的基础,中文名称是动物园的意思,因为目前的大数据框架的图标很多都是动物的形状,所以zookeeper其实就是可以管理很多大数据框架的。针对这个框架,主要掌握如何搭建单节点和集群,以及掌握如何在zkcli客户端下对zookeeper的节点进行增删改查操作即可。

3)hadoop

目前企业中一般都是用hadoop2.x的版本了,所以就没有必要再去学hadoop1.x版本了,hadoop2.x主要包含三大块hdfs 前期,主要学习hdfs的一些命令即可,上传,下载,删除,移动,查看等命令…mapreduce 这个需要重点学习下,要理解mr的原理以及代码实现,虽然现在工作中真正写mr的代码次数很少了,但是原理还是要理解的。

yarn 前期了解即可,只需要知道yarn是一个资源调度平台,主要负责给任务分配资源即可,yarn不仅可以给mapreduce任务调度资源,还可以为 spark任务调度资源…yarn是一个公共的资源调度平台,所有满足条件的框架都可以使用yarn来进行资源调度。

4)hive

hive是一个数据仓库,所有的数据都是存储在hdfs上的,具体【数据仓库和数据库】的区别大家可以去网上搜索一下,有很多介绍。其实如果对 mysql的使用比较熟悉的话,使用hive也就简单很多了,使用hive主要是写hql,hql是hive的sql语言,非常类似于mysql数据库的 sql,后续学习hive的时候主要理解一些hive的语法特性即可。其实hive在执行hql,底层在执行的时候还是执行的mapredce程序。

注意:

其实hive本身是很强大的,数据仓库的设计在工作中也是很重要的,但是前期学习的时候,主要先学会如何使用就好了。后期可以好好研究一下hive。

5)hbase

hbase是一个nosql 数据库,是一个key-value类型的数据库,底层的数据存储在hdfs上。在学习hbase的时候主要掌握 row-key的设计,以及列簇的设计。要注意一个特点就是,hbase基于rowkey查询效率很快,可以达到秒级查询,但是基于列簇中的列进行查询, 特别是组合查询的时候,如果数据量很大的话,查询性能会很差。

6)redis

redis也是一个nosql(非关系型数据库) 数据库和key-value类型的数据库,但是这个数据库是纯基于内存的,也就是redis数据库中的数据都是存储在内存中的,所以它的一个特点就是适用 于快速读写的应用场景,读写可以达到10W次/秒,但是不适合存储海量数据,毕竟机器的内存是有限的;

当然,redis也支持集群,也可以存储大量数据。在学习redis的时候主要掌握string,list,set,sortedset,hashmap这几种数据类型的区别以及使用,还有 pipeline管道,这个在批量入库数据的时候是非常有用的,以及transaction事务功能。

7)flume

flume是一个日志采集工具,这个还是比较常用的,最常见的就是采集应用产生的日志文件中的数据。一般有两个流程,一个是flume采集数据存 储到kafka中,为了后面使用storm或者sparkstreaming进行实时处理。另一个流程是flume采集的数据落盘到hdfs上,为了后期 使用hadoop或者spark进行离线处理。在学习flume的时候其实主要就是学会看flume官网的文档,学习各种组建的配置参数,因为使用 flume就是写各种的配置。

8)kafka

kafka 是一个消息队列,在工作中常用于实时处理的场景中,作为一个中间缓冲层,例如,flume->kafka->storm/sparkstreaming。学习kafka主要掌握topic,partition,replicate等的概念和原理。

9)storm

storm是一个实时计算框架,和hadoop的区别就是,hadoop是对离线的海量数据进行处理,而storm是对实时新增的每一条数据进行处理,是一条一条的处理,可以保证数据处理的时效性。学习storm主要学习topology的编写,storm并行度的调整,以及storm如何整合 kafka实时消费数据。

10)spark

spark 现在发展的也很不错,也发展成了一个生态圈,spark里面包含很多技术,spark core,spark steaming,spark mlib,spark graphx。

spark生态圈里面包含的有离线处理spark core,和实时处理spark streaming,在这里需要注意一下,storm和spark streaming ,两个都是实时处理框架,但是主要区别是:storm是真正的一条一条的处理,而spark streaming 是一批一批的处理。

spark中包含很多框架,在刚开始学习的时候主要学习spark core和spark streaming即可。这个一般搞大数据的都会用到。spark mlib和spark graphx 可以等后期工作需要或者有时间了在研究即可。

11)elasticsearch

elasticsearch是一个适合海量数据实时查询的全文搜索引擎,支持分布式集群,其实底层是基于lucene的。在查询的时候支持快速模 糊查询,求count,distinct,sum,avg等操作,但是不支持join操作。

elasticsearch目前也有一个生态 圈,elk(elasticsearch logstash kibana)是一个典型的日志收集,存储,快速查询出图表的一整套解决方案。在学习elasticsearch的时候,前期主要学习如何使用es进行增 删改查,es中的index,type,document的概念,以及es中的mapping的设计。

在这里插入图片描述

最后: 可以在公众号:伤心的辣条 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!喜欢软件测试的小伙伴们,可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

⼤数据测试 ⼤数据测试 什么是⼤数据 什么是⼤数据 ⼤数据是指⽆法在⼀定时间范围内⽤传统的计算机技术进⾏处理的海量数据集。 对于⼤数据的测试则需要不同的⼯具、技术、框架来进⾏处理。 ⼤数据的体量⼤、多样化和⾼速处理所涉及的数据⽣成、存储、检索和分析使得⼤数据⼯程师需要掌握极其⾼的技术功底。 需要你学习掌握更多的⼤数据技术、Hadoop、Mapreduce等等技术。 ⼤数据测试策略 ⼤数据测试策略 ⼤数据应⽤程序测试更多的是去验证其数据处理⽽不是验证其单⼀的功能特⾊。 当然在⼤数据测试时,功能测试和性能测试是同样很关键的。 对于⼤数据测试⼯程师⽽⾔,如何⾼效正确的验证经过⼤数据⼯具/框架成功处理过的⾄少百万兆字节的数据将会是⼀个巨⼤的挑战。 因为⼤数据⾼效的处理测试速度,它要求测软件⼯程师具备⾼⽔平的测试技术才能应对⼤数据测试。 我们来看下⼤数据处理的三个特性: ⼤批量 实时性 可交互 另外,数据质量也同样是⼤数据测试的⼀个重要维度。 因此在进⾏应⽤程序测试之前,必须确保数据质量,并且考虑把数据质量作为数据库测试的⼀部分。涉及数据的各种特性的检验,例如⼀致性、准确性、重复 性、连贯性、有效性及完整性等等。 ⼤数据应⽤测试步骤 ⼤数据应⽤测试步骤 下⾯我们⼀起看看⼤数据应⽤的测试过程是怎么样的。 整体⽽⾔,⼤数据测试⼤体可以分为三⼤步骤: 步骤⼀,数据预处理验证 在进⾏⼤数据测试时,⾸先要预hadoop前验证数据的准确性等等。 1. 我们数据来源可能是关系数据库、⽇志系统、社交⽹络等等,所以我们应该确保数据能正确的加载到系统中 2. 我们要验证加载的数据和源数据是⼀致的 3. 我们要确保正确的提取和加载数据⾄hdfs中 步骤⼆,Map Reduce验证 在进⾏⼤数据测试时,第⼆个关键步骤是"Map Reduce"验证。在本阶段,我们主要验证每⼀个处理节点的业务逻辑是否正确, 并验证在多个运⾏后,确保: 1. Map Reduce过程⼯作正常 2. 数据聚合、分离规则已经实现 3. 数据key-value关系已正确⽣成 4. 验证经过map reduce后数据的准确性等特性 步骤三,结果验证 在本阶段主要验证在经过⼤数据⼯具/框架处理后,⽣成的最终数据的成果。 主要验证: 1. 验证数据转换规则是否正确应⽤ 2. 验证数据的完整性和是否成功持久化到⽬标系统 3. 验证⽆数据损坏 架构测试 架构测试 Hadoop处理海量数据是⾮常的消耗资源的,良好的架构是确保⼤数据项⽬成功的基础。糟糕的涉及会导致性能急剧的下降,进⽽使得系统⽆法满⾜我们的需 要,因此我们需要,或是说⾄少在Hadoop环境下进⾏性能测试、故障恢复测试,以应改进效率和应对可能的最糟糕的情况。 性能测试是⼀个复杂的⼯作,它贯穿整个测试周期,需要关注内存、CPU、⽹络等等指标。 故障恢复测试则是验证数据处理过程中可能出现的故障,为做好意外的恢复做好相应的应对措施。 性能测试 性能测试 ⼤数据性能测试主要包含以下⼏个部分: 数据提取、存储效率 在本阶段,我们主要验证⼤数据应⽤从源数据中提取、加载数据的效率。 ⼀是验证单位时间内数据的提取、加 载效率。 ⼆是验证数据持久化⾄mongodb等库的效率等等 数据处理 在本阶段,我们验证map reduce任务的执⾏效率,重点关注的是数据处理的效率。当然这个过程可能也会涉及到数据的持久化相关指标,例如存储⾄HDFS读 写效率等等,同样也会涉及在内存中处理效率,即我们的处理算法效率等等 ⼦组件性能 ⼤数据处理,⼀般都会需要综合利⽤各种组件来辅助处理,所以我们也是需要关注这些辅助组件的性能 性能测试策略 性能测试策略 ⼤数据应⽤性能测试涉及海量的结构化和⾮结构化的数据,与我们平时所⾯对的业务系统有所不同,所以我们需要针对⼤数据应⽤制定特定的测试策略,以应对 海量的数据。 根据上图性能测试执⾏过程⼀般是这样的: 1. 在性能测试前需要先初始化⼤数据集群环境 2. 梳理和设计⼤数据性能测试场景 3. 准备⼤数据性能测试脚本 4. 执⾏并分析测试结果(如果指标异常,则调优相应的组件并重新测试) 5. 优化配置 性能测试基础准备 性能测试基础准备 在⼤数据性能测试时,需要准备相关的基础⼯作,如下: 数据准备,我们需要在不同的节点准备什么量级数据? ⽇志预估,在测试过程中,可能会⽣成多⼤的⽇志,⽇志的可能增量是什么样的? 并发,在测试时,可能会有多少线程并发读和写? 超时设置,应对设置怎样的连接超时?查询超时?写超时等等? JVM参数,如何设置最优的jvm参数,heap size、GC机制等等 Map Reduce,我们应该选择什么样的sort、merge等算法? 消息队列,消息队列长度会怎么样?等等 必备的测试环境 必备的测试环境 ⼤数据测试不同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值