参考来源
《软件测试技术趋势白皮书2021版》https://www.yuque.com/ephandb/test
《大数据测试技术与实践》读书笔记
大数据测试技术生态
大数据概念
定义
大数据(Big Data)是无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
麦肯锡(McKinsey & Company)对大数据的定义:大数据是指大小超过经典数据库系统收集、存储、管理和分析能力的数据集。
Gartner对大数据的定义:大数据是海量、高增长率和多样化的信息资产,只有新处理模式,才能令其具有更强的决策力、洞察发现力和流程优化能力。
Apache Hadoop对大数据的定义:大数据是指普通计算机软件无法在可接受的时间范围内捕捉、管理、处理的规模庞大的数据集。
IDC对大数据的定义:大数据技术描述了新一代的技术和架构体系,通过高速采集、发现或分析,提取大量形式多样的数据的经济价值。
大数据通用4v特征
Variety多样性:Variety:结构化、半结构化和非结构化
Volume体量大
Velocity时效性:增长速度、处理速度(实时分析、实时响应)
Value价值高:价值高;价值密度低,同Volume结合后便有了高价值
大数据扩展4v特征
Veracity准确性
Vitality动态性
Visualization可视性
Validity合法性
2004年,Google大数据处理方面的三驾马车:
《分布式文件系统GFS》
《大数据分布式计算框架MapReduce》
《NoSQL的数据库系统BigTable》
参考阅读:https://lvsizhe.github.io/course/2020/03/gfs.html
https://cloud.tencent.com/developer/article/1847938
Hadoop(2005年项目诞生):多个软件组件组成的大数据生态系统,这些软件可以让用户轻松的创建、运行和处理海量数据。
YARN:将MapReduce执行引擎和资源调度分离开来,解决了资源复用的问题。
成为主流的资源调度系统。
Hadoop版本区别:
版本
特点
1.0
计算和存储高度融合,仅能处理单一的MapReduce分析业务
2.0
计算层和数据解藕,通过YARN实行独立资源管理;支持Spark等计算引擎
3.0
计算向轻量化、容器化方向发展
大数据的应用:
搜索引擎、电商推荐系统、广告系统、金融风险控制、客服中心优化
广告系统同推荐系统不同,推荐系统处理用户体验问题。广告系统处理广告主、用户和媒体的关系。
金融风控:数据+风控。用户特征和风控模型。
基础概念
数据仓库:面向主题的(subject-oriented)、集成的(integrated)、相
对稳定的(nonvolatile)、反映历史变化的(time-variant)数据集合,用以
支持管理决策 。
ETL是指从数据源提取数据,经过清洗、转换、加载,并最终存储到目标数据仓库的过程。
1)离线计算:表示那些离线批量、延时较高的静态数据处理过程,离线计算适用于实时性要求不高的场景。Hadoop中的MapReduce就是一个离线计算框架;
2)实时计算:表示那些实时或者低延时的流数据处理过程。实时计算通常应用在实时性要求高的场景,比如数据监控或者实时业务报表,一般的延迟都在秒级甚至毫秒级。Spark Streaming与Flink是目前较为流行的实时处理框架
3)批处理:首先数据被不断地采集,保存到数据库中,然后进行分析处理(包括SQL查询)。批处理适用于对大量数据(High Volume)进行处理的场合。需要等到整个分析处理任务完成,才能获得最终结果
4)流式处理:流式处理中的数据持续到达,系统及时处理新到达的数据,并不断产生输出。处理过的数据一般丢弃掉,当然也可以保存起来。流式数据处理模式强调数据处理的速度(Velocity)。
OLAP查询引擎:Hive、Impala和Presto
OLAP:Online Analystical Processing联机分析处理
OLTP:Online Transactional Processing联机事务处理
大数据技术生态
大数据生态包含数据采集、数据存储、管理调度、计算分析和组件应用等。
数据采集:Flume、kafka等系统日志采集数据。
数据存储:分布式文件系统、关系型和非关系型数据库,HDFS、MySQL、HBase、Redis等
管理调度:资源管理调度YARN、服务协调Zookeeper、Azkaban(工作流调度)
计算查询:批处理框架MapReduce、流计算框架Flink
组件应用:Hive、Pig等。
大数据采集技术包括系统日志采集、网络数据采集(爬虫)和其他数据采集。
大数据存储技术:HDFS、HBase(列式数据库)
HDFS
Hadop分布式文件系统:低成本实现大流量、大数据量的读写。
HDFS遵循master/slave架构,一个HDFS机器包含一个NameNode和若干个数据节点DataNode。
ps:实际NameNode会有一个活动节点,一个备用节点,实现高可用。
HDFS多副本存储策略可以加快数据传输速度(读写性能),易于检测数据错误,保证数据可靠性。
Hadoop集群关闭顺序:Hive、Yarn、HBase、HDFS、zookeeper、manager service
启动顺序:manager service、zookeeper、HDFS、HBase、Yarn、Hive
HBase
海量数据列式存储:HBase
HBase:建立在HDFS之上,面向列的NoSQL数据库。
HBase符合master/slave结构:HMaster(1个活动,1个备份)、多个HRegion
HBase一张表由多个region组成,region相当于行记录,region按row key顺序排列,且是按位排序,不是实际大小。row key是主键key,列族数据是value,相当于field或者列。
大数据计算分析技术
大数据计算分析技术:批处理计算、流计算、查询分析计算、图计算等。
计算模式
解决问题
代表技术
批处理计算
大规模数据的批量处理
MapReduce、Spark
流计算
流数据的实时计算
Storm、Flink、Spark Streaming
查询分析计算
大规模数据的存储管理和查询分析
Hive、
图计算
大规模图结构数据的处理
典型的离线大数据框架
离线的大数据架构如图3-6-39,一般离线数据计算引擎处理的都是批量数据。它的处理过程一般是:数据采集、数据清洗、数据处理、结果入库、数据应用。数据采集阶段用到组件有flume、logstash、sqoop、kafka等。数据清洗阶段一般采用Spark、Hive、MapReduce或者是其他的一些分布式计算框架,在数据处理阶段,根据业务情况设计系统逻辑,一般采Spark、Hive、MapReduce或者是其他的一些分布式计算框架。最终的结果一般可以存放到RDBMS或者缓存中。
典型的实时大数据框架
实时计算的特征是数据流会源源不断地到来,要求低延时性。所有核心的计算引擎与离线不同,需要Storm、Flink或者SparkStreaming,去计算实时的一些指标,一般这类组件都是基于内存。
不管是以批处理为主的离线数据框架还是以处理流数据为主的实时计算框架,数据质量保证工作都非常重要,都需要结合线上和线下全链路的理论来保证数据的质量。核心要关注数据的正确性、一致性、实时性、可用性等。当然不同的应用主要的关注会不同,对于实时计算,在保证质量的情况下,即时性越高越好。表
此处为语雀内容卡片,点击链接查看:https://www.yuque.com/ephandb/test/ic640a?inner=Jc4AJ
Storm
Storm遵从主从分布式节点架构:Nimbus节点、工作节点supervisor节点,Storm需要zookeeper集群
Spark
Spark Streaming和Spark一块使用实现实时计算
Spark:
驱动器:运行应用的main函数
集群管理器:包括standalone模式、Spark on YARN模式
工作节点
执行器
Flink
Flink支持批处理、流处理,包括JobManager、TaskManager
Hive
Hive构建在Hadoop上的数据库查询工具。可以是用户编程接口,本身不存储和处理数据(依赖于HDFS存储数据,依赖于MapReduce等模型框架处理数据)
ps:hive源数据等存储在mysql/postgresql
ETL实时数据测试
ETL离线数据测试
大数据测试
大数据测试,通常是指对采用大数据技术的系统或应用的测试。它可以分成两个维度,对数据本身的测
试,对大数据系统或应用产品的测试。
数据测试是指数据质量的测试,主要关注数据的完整性、准确性、一致性、及时性等。
大数据系统一般指使用Hadoop生态组件搭建的或自主研发的大数据系统,主要包括数据存储、计算、分析等组件。大数据应用产品比较丰富,典型的有BI报表、数据挖掘产品、数据分析平台等
为什么要进行大数据测试
必要性:如果没有良好的数据质量,大数据将会堆决策产生误导,甚至产生有害的结果;
充分性:
数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。
数据链路的长短及复杂度
数据质量问题的成本大小
数据应用效果的影响范围
大数据测试的痛点问题
数据量大
测试结果难归档
缺乏自动化手段
测试效率低
技术要求高
数据问题分析难
跨平台测试难
人才培养痛点
流程治理
沉淀方法
专项测试
工具平台
监控保障
大数据测试工程师需要具备的软硬技能
大数据测试类型-数据质量测试
数据完整性
关注数据是否丢失,发现数据是否重复。
数据丢失测试方法:波动监测、缺失值分析、表基础分析;
数据重复测试方法:数据拼接后去重量VS数据量diff
数据准确性
涉及数据来源方、数据验证方、数据建设方、数据应用方。
测试方法:数据分布分析、功能相关性分析、值域分析、异常值监测
举例:
部分数据准确性明显,比如年龄为-10
大部分数据准确性不容易被发现
数据及时性
数据产生、消费、刷新、修改、提取、查询等操作是否及时和快速。通常数据的操作时间需要控制在一定时间范围内或某时刻之前。
举例:
Azkaban调度运行时长
数据分析平台数据查询时效性
数据一致性
数据记录规范的一致性:参考数据标准。
数据逻辑的一致性:计算逻辑的一致性+业务逻辑的一致性。
举例:
业务逻辑的一致性:映射关系始终保持一致;
计算逻辑的一致性:PV >= UV
数据记录的一致性:比如订单ID,从业务来源表流转到数据仓库,订单ID的数据类型及长度都应该保持一致
数据记录的一致性:数据处理前后的一致性。
测试方法:数据diff测试
数据合法性
数据值域检查:字段是否在值域范围内。
日期/时间类型格式检查:检查字符类型或数字类型字段在存储日期/时间的情况下,是否存储了其它非法值。
测试方法:值域分析、正则匹配法。
大数据测试类型-功能测试
大数据测试类型-性能测试
性能测试-基准测试
基准测试是一种测量和评估软件性能指标的活动,用于建立某个时刻的性能标准,以便当
系统发生软硬件变化时重新进行基准测试,以评估变化对性能的影响。
基准测试工具
性能测试-压力测试
通常是验证系统在较大压力下(包括数据多客户端、高OPS即每秒操作次数、高吞吐量压力等场景),
系统是否仍然能够正常运行,功能是否正常,资源消耗是否正常。假设实际业务场景中,数据流频率为
100w条/s。
数据质量分析三板斧
大数据测试经验总结:
大数据测试场景分成两类典型场景:
开发全新的大数据系统或应用——数据全新,链路全新,侧重进行分布测试
对原有大数据系统或应用进行修改——旧数据的修改,侧重进行对比测试
大数据分布式测试:总数据量、重复数据、主键唯一性、空值量、空值率、去重数据量、有效值数据量
对比测试:总数据量对比、全量数据对比、去重数据对比、统计类数据指标对比
大数据测试的挑战:
项目往往长数据流,横跨公司多个部门,体系架构复杂。要求测试团队积累体系化的工具与能力。
大数据性能测试,需要不断积累经验。
数据安全将是一个重大挑战。