扫码阅读
手机扫码阅读

大数据测试入门 : 什么是大数据以及如何测试大数据?| 陈晓鹏

991 2023-08-17

什么是大数据

01 大数据起源

近几年,大数据(Big Data)已经成为IT业界颇为热门的一个名词受到大家广泛的关注,并且它与人工智能、区块链、云计算一起并称为“ABCD”四大新科技(A是AI人工智能、B是Block Chain区块链、C是Cloud云计算、D是Big Data大数据)。

关于“大数据”这个名词的最早提出者业界有不同的说法。《纽约时报》在它的文章《一个词源的侦探故事》中认为SGI首席科学家John Mashey首次使用了大数据这个词;而英国《泰晤士报》则认为Francis Diebold先生是第一个使用大数据术语的人;但更多的人认为2005年Roger Mougalas是第一个明确使用“大数据”一词来指代使用传统商业工具不能处理的大量数据的专家,而这恰恰是当前对大数据定义最广泛理解的形式。

然而,仅仅只是提出一个概念是远远不够的。大数据之所以能风靡于世不得不归功于谷歌公司。谷歌工程师在2003年至2006年先后发表了几项关于大数据核心技术的学术论文,其中有三篇论文被誉为是谷歌的“三驾马车”:谷歌文件系统、MapReduce和BigTable。这三篇论文的横空出世影响了后续的大数据发展之路,同时也吸引了众多互联网公司的注意。在包括雅虎在内的各大互联网公司的技术推动下,2005年最终诞生了Hadoop系统,因此可以认为2005年是大数据革命真正开始的元年。

不过大数据真正开始广泛流行大约是在2009年前后。2008年9月,《自然》杂志把“Big Data”这个词作为了封面并收到了广泛的关注,如图1-1所示;2010年2月肯尼思·库克耶在《经济学人》发表了14页的大数据专题报告《Data,data everywhere》,使得库克耶成为最早洞见大数据趋势的专家之一;2011年5月著名管理咨询公司麦肯锡发布了一份题为《Big data: The next frontier for innovation, competition, and productivity》的报告。该报告对大数据做了明确的定义,并逐渐引起了各行各业的关注。

图1-1 《自然》杂志关于大数据的封面

我国对大数据的重视程度也非常高。从2014年“大数据”首次进入政府工作报告开始,大数据在中国的发展就如火如荼,甚至在2020年国家主推的“新基建”就明确提出将“大数据中心”定义为数字新基础设施的重要建设内容,因为无论是人工智能、工业互联网还是5G,其产生的海量数据处理和分析背后,离不开大数据的支撑,因此有媒体称大数据中心俨然成为了新基建下的“网红”。

02 大数据定义

到底什么是大数据?这个问题可谓仁者见仁,智者见智,业界并没有一个统一的标准。我们可以参考几个比较著名的公司或机构分别对于大数据的定义:

  • Gartner对大数据的定义是指高速 (Velocity) 涌现的大量 (Volume) 的多样化 (Variety) 数据。

  • 麦肯锡全球研究所给出的定义:大数据是指一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低四大特征。

  • 亚马逊大数据科学家John Rauser对大数据的定义:大数据是任何超过了一台计算机处理能力的数据量。

  • 维基百科对于大数据的定义:大数据又称为巨量资料,指的是在传统数据处理应用软件不足以处理的大或复杂的数据集的术语。

尽管各家对大数据的定义各有千秋,但基本上大数据领域里的每个人都有一个共识:大数据不仅仅是指更多的数据量而已。和传统数据比起来大数据还存在更多的特征,并且仅使用传统数据库的工具和技术是无法对大数据进行处理的。

03 大数据5V特征

有些人认为大数据不过就是数据量比传统数据更多而已。那么大数据究竟只是量的区别还是除了量之外仍有其它差异呢?

在以前,当我们有合理大小并且可以通过二维表来展示的结构化数据时,我们通常使用传统的关系型数据库如Oracle、MySQL或SQL Server来存储和处理数据。然而,全世界80%以上的数据都是非结构化数据,比如图像、视频、音频、基因组数据等,并且这些非结构化数据还在爆炸性地增长。面对这样的数据,传统的关系型数据库如Oracle、MySQL和SQL Server等将无法以RDBMS的行列格式存储这些数据。

另外,由于大数据中存储的数据量是巨大的,当这些数据需要快速处理时就需要数据的并行处理,而传统的关系型数据库RDBMS数据的并行处理将是非常昂贵和低效的。传统数据库无法处理创建大量数据的速度。例如:每秒创建5000条微信朋友圈信息,每分钟有50万条评论,而传统数据库根本无法处理这种存储或检索数据的速度。

所以我们发现,和传统数据相比,大数据除了量大之外仍然存在着其它不同的特点。最早对大数据特征进行总结的人是麦塔集团(META Group,后被Gartner收购)的分析师 Doug Laney。他在2001年时就提出了大数据的3V特征,即分别代表数据量的Volume、数据传输速度的Velocity和数据类型多样性的Variety。而后IBM基于“3V”的基础上进行扩展,提出了大数据5V特征,也就是除了Volume、Velocity和Variety之外,增加了代表数据质量的Veracity和数据价值的Value,如下图1-2所示:

图1-2 大数据5V特征

让我们再来详细了解大数据的5V特征:

  • Volume:代表大数据的数量,主要体现在数据存储量大和数据增量大。数据量规模庞大是大数据最主要的特性。特别是随着云计算、物联网、5G等技术的发展,数据量更是呈现了爆炸式增长,我们曾经采用的数据量单位也从GB、TB扩展到PB,有些甚至已经需要采用EB和ZB字节来计量。(1024GB=1TB,1024TB=1PB,1024PB=1EB,1024EB=1ZB)

  • Velocity:代表大数据产生数据和处理数据的速度快。比如推特用户每天产生5亿条推文,平均每秒大约6000条。其中在2014年世界杯决赛期间,一分钟内有超过60万条推文被发送,可见现在产生的数据速度非常快。因此数据的处理速度也应加快,只有快速适时处理才可以更加有效的利用得到的数据。

  • Variety:代表大数据的多样化,主要体现在格式多和来源多两个方面。大数据产生的数据格式类型并不单一,其中包括结构化、半结构化和非结构化数据;而缘由是因为数据来源多种多样,例如可以从网页日志、视频网站、电子邮件、传感器等不同地方产生数据。

  • Value:代表大数据的数据价值。大数据的数据价值密度低,也就是说虽然数据量庞大但直接可以利用的数据价值信息并不多,往往需要通过特定的大数据技术进行进一步的挖掘和分析,从而提取出有价值的信息供我们使用。

  • Veracity:代表大数据的数据质量,主要体现在数据的真实性和可信赖度。如果数据质量低,则数据带给我们的价值也相应比较低。高质量的数据一定是具有真实性的,但有时真实的数据并不一定代表着高质量。因此我们可以通过大数据技术在保证数据真实性的同时提高数据的质量,使数据能够更好的为我们所用。

04 大数据中的数据格式

人们常问的一个问题是:为什么我们不能使用传统的关系数据库来处理大数据。要回答这个问题,首先我们需要了解大数据中不同的数据格式。

大数据中的数据格式可以分为三类,它们分别是结构化数据、半结构化数据和非结构化数据,如下图1-3所示:

图1-3 大数据数据格式

1. 结构化数据

结构化数据指的是高度组织的数据,它可以轻松地存储在任何关系数据库中。这也意味着可以使用简单的查询轻松地检索/搜索它。

如图1-4所示描述了一个应用程序数据模型中的一张表。在这个例子中,用户表存储了用户id、用户名、密码、电子邮件、电话号码和地址等详细信息。字段的长度及其数据类型是预先定义的,并且具有固定的结构。

图1-4 结构化数据例子

2. 半结构化数据

半结构化数据并不是严格按照一种便于访问和搜索的格式组织的,通常不存储在关系数据库中。但是,经过一些处理后,它们可以存储在关系数据库中,并转换为结构化格式。半结构化数据介于结构化和非结构化数据之间,它们可以包含标签和其他元数据来实现层次结构和顺序。在半结构化数据中,相同类型的实体可能具有不同顺序的不同属性。CSV、XML和JavaScript对象表示法(JSON)是几乎在所有应用程序中使用的半结构化数据的示例。

下面给出了一个XML文件的示例,如图1-5所示。我们可以看到,XML文件引用了目录和作为目录一部分的书籍。通过一些处理,这些数据可以存储在关系数据库中。

图1-5 半结构化数据XML例子

下面再给出JSON内容示例,如图1-6所示。在下面的示例中,我们有用户的地址和电话号码以及其他一些详细信息。处理后还可以将这些信息存储在关系数据库中。

图1-6 半结构化数据JSON例子

3. 非结构化数据

非结构化数据没有任何预定义的格式,它不遵循结构化数据模型,并且它不能组织成预定义的结构,这种结构的缺乏使得从关系数据库中存储和检索这样的数据变得很困难。图像、视频、word文档、mp3文件等可以被视为非结构化数据,在一个组织中产生的多达80%的数据是非结构化数据。

非结构化数据的例子如下图1-7所示,图片、视频、音频、word文档、演示文稿等都属于非结构化数据。

图1-7 非结构化数据例子

传统数据库擅长处理可以存储在行和列中的结构化数据。但是,如果我们有不遵循结构的非结构化数据,那么使用关系数据库就不是恰当的选择。在大数据背景下,我们每天都产生大量的数据,这些数据可以是任何格式的图像,平面文件,音视频等,每一个数据记录的结构和格式可能都不一样,这将很难使用传统数据库来处理。

大数据有哪些业务形态

05 大数据的数据来源

那么,这些大数据从何而来呢?数据通常来自以下三个主要来源之一:互联网/社交网络、传统业务系统以及越来越多的物联网。来自这些数据源的数据可以是结构化、半结构化或非结构化的,也可以是这些类型的任意组合。例如,由于业务活动而产生的数据可以记录在结构化或非结构化数据库中,而电子文件通常指存储或发布的非结构化文档,如Internet页面、视频或PDF文件等。

互联网/社交网络提供的数据来自:

  • 社交网络:微信、微博、脸书、推特等。

  • 博客和评论

  • 个人文档

  • 图片网站:Instagram、Flickr等。

  • 视频网站:抖音、快手、YouTube等。

  • 互联网搜索

  • 移动数据内容(短信)

  • 用户生成的地图

  • 电子邮件

传统的业务系统的数据来自:

  • 商业交易

  • 银行/库存记录

  • 电子商务

  • 信用卡

  • 医疗记录

物联网的数据来自:

  • 传感器:包括交通、天气、手机位置等。

  • 安全、监控视频和图像

  • 卫星图像

  • 信用卡

  • 医疗记录

  • 来自计算机系统的数据(日志、网络日志等)

06 大数据在现实世界的应用场景

如果只是存储了很多数据却不去分析数据并从中找到数据价值,就像是守着一座金山却不知取用一样,完全是一种资源浪费。在我们研究大数据测试之前,了解大数据在现实世界中是如何使用的,将对我们的测试大有裨益。

1. 电子商务

淘宝、京东和拼多多等大型电子商务网站每天都有数千万甚至上亿的访问者,拥有数千万种商品。这些电子商务巨头都会使用大数据来存储关于产品、客户和购买的信息。除此之外,这些数据还包括产品搜索、视图、添加到购物车的产品、购物车废弃、一起购买的产品等。所有这些数据都被存储和处理,以向客户推荐他们最有可能购买的产品。

如果你打开一个商品页面,您可以发现有些功能如“经常一起购买”、“购买了此商品的客户也购买了”或者“查看了此商品的客户也查看了”等,这些其实是大数据的应用场景。这些信息还用于类似“猜你喜欢”功能的智能推荐和在搜索结果中对产品进行排序。所有这些数据都必须快速处理,这在传统数据库中是不可行的。

下面的例子是在京东商城中查找Lisa Crispin和Janet Gregory写的敏捷测试相关的书籍。打开此商品,如下图1-8所示:

图1-8 电子商城的商品页面

当我们翻到商品页面最下方会看到“猜你喜欢”的功能,如图1-9所示。系统根据用户之前的搜索行为自动推荐了计算机品类的热门畅销书,包括测试领域和敏捷开发领域相关的热门书籍,以此来增加销量。这就是大数据在电子商务中的一个典型应用场景。

图1-9 大数据在电子商务的典型应用场景

2. 社交媒体

社交媒体网站产生大量的图片、视频、点赞、帖子、评论等数据。这些数据不仅存储在大数据平台中,还会被处理和分析,以提供更多的价值。比如在舆情分析方面,大数据就可以发挥其专长,甚至在美国总统大选中,大数据也起到了关键性的作用。

2012年美国总统大选中,奥巴马和罗姆尼竞争。而奥巴马通过大数据的帮助,使得在花费更少经费的情况下取得了成功连任。奥巴马团队通过在Facebook、谷歌等社交媒体上收集用户的浏览行为数据,并通过大数据分析,对选民进行用户画像,然后根据不同选民更容易接受的的方式进行“公关”,比如邮寄信件、社交网络沟通、电视辩论、广告拉选等迎合选民的偏好。大数据在奥巴马获取有效选民、投放广告、募集资金等方面都起到了非常重要的作用。奥巴马竞选团队也明确表示大数据是能够击败罗姆尼的一个大优势。

3. 精准广告

数据不仅仅存储在大数据平台上,还会被马上处理和分析,以提供您可能感兴趣的事物的建议。例如,如果你在百度上搜索“飞秒激光手术”,然后当你登陆UC浏览器, 在UC浏览器浏览新闻内容时,会看到系统显示某眼科医院的飞秒激光广告,如图1-10所示。

图1-10 大数据精准广告应用示例

这是一个大数据用例,因为有数百万的网站在百度上做广告,而UC浏览器有上亿级别的用户。传统数据库无法在相同的时间内存储和处理这些信息,从而向正确的用户显示正确的广告。用正确的广告定位正确的客户是很重要的,因为搜索激活手术的人可能是想了解治疗近视的方法,所以更有可能点击飞秒激光治疗近视的广告,而不是其它广告。

4. 医疗领域

大数据在医疗领域有着广泛的应用,特别是在电子病历和医学影像方面可以起到非常大的作用。通过大数据存储电子病历的所有信息,包括个人病史、家族病史、过敏情况、医疗检测结果等,而且这些数据可以在不同的医疗机构安全共享,使得医生很容易就了解到病人的过往病情和用药情况等。

在医学影像方面我们知道X射线、核磁共振成像、超声波等都是医疗过程中的关键环节。传统做法是放射科医生需要凭自己经验来查看和判断每一个检查结果,这样对医生来说不但工作量巨大,还有可能耽误患者的就医和最佳治疗时间。而通过大数据,将数十万图像存储起来并构建一个识别图像的模型算法,这些模型能够辅助医生做出判断,因为通过机器和算法能研究的图像数量远超过人类大脑。

5. 其他领域

不仅于此,大数据还在金融、通信、制造业等各个行业都有广泛的应用,甚至在疫情防控中也起到很重要的作用。2020年的Covid-19新型冠状肺炎肆虐人类,而我国是最早实现疫情控制恢复生产的国家,期间大数据助力政府在统计分析人员动态流动情况、梳理感染者生活轨迹、追踪密切人群接触史、预测疫情走势等方面都发挥着极其重要的作用。

07 大数据对业务带来的好处

大数据到底能带来什么好处?大数据能否为企业创造可衡量的价值?答案是肯定的!数据一直是影响企业的一部分。现在,随着数据的可用性与利用它的能力以及承担得起这样做的能力的结合,数据所能带来的价值的规模和范围已经扩大。在经济约束和激烈竞争的时代,大数据为提升企业运营效率和创新提供了巨大潜力:

  • 提高生产力和效率

  • 提高大容量系统的运营智能化

  • 实时或近实时响应

  • 通过有效的数据共享实现透明度

  • 使数据能够发现需求、暴露风险和提高绩效

  • 数据驱动的洞察

  • 跨越结构化和非结构化数据的总体视图

  • 企业数据筒仓的跨越桥梁

  • 增强不受数据样本限制的预测能力和模型

  • 更好的投资回报率

  • 在存储和处理中扩展开源软件方法

  • 消除冗余的、重复的基础设施和返工

  • 通过自动化的算法取代或者支持人做决策分析

  • 新商业服务创新

  • 可视化和提取正确数据视角的新解决方案

  • 提升运营效率

  • 降低人工成本

  • 对数据的整合、管理、分析等更多的方法驱使提高生产力

  • 社会使命

  • 方便及时的检索和分析相关数据,对政府满足和改进任务要求至关重要,比如提供国家安全、服务公民、保障公共安全和提供社会服务等

大数据框架Hadoop到底是什么

08 大数据框架Hadoop介绍

Hadoop最初只是雅虎公司用来解决网页搜索问题的一个项目,后来因其技术的高效性,被Apache Software Foundation公司引入并成为开源应用。Hadoop本身不是一个产品,而是由多个软件产品组成的一个生态系统,这些软件产品共同实现全面功能和灵活的大数据分析。

从技术上看,Hadoop由两项关键服务构成:采用Hadoop分布式文件系统(HDFS)的可靠数据存储服务以及利用一种叫作MapReduce技术的高性能并行数据处理服务。这两项服务的共同目标是提供一个使对结构化和复杂数据的快速、可靠分析变为现实的基础。

Hadoop是大数据项目中使用最广泛的框架之一。虽然测试人员可能从测试的角度对大数据感兴趣,但是如果对Hadoop架构有一定的理解对于我们进行深入的大数据测试是非常有益的。下图1-11展示了Hadoop的高层架构。每个节点(客户端、主节点、从节点)代表一台机器。

图1-11 Hadoop高层架构图

Hadoop安装在客户端机器上,它们通过加载集群数据、提交MapReduce作业和配置数据处理来控制正在进行的工作,同时还用于查看结果。所有这些机器组成一个集群,而网络中可以有许多类似这样的集群。

主节点有两个关键职责:首先,它们使用NameNode处理分布式数据存储;其次,数据的并行处理MapReduce由JobTracker进行协调。而次要的NameNode则充当备份的NameNode,如下图1-12所示:

图1-12 Hadoop服务端主节点

而从节点构成了整个大数据系统的执行主体,他们主要负责存储和处理数据,其中每个从节点都有一个DataNode和一个TaskTracker。

DataNode是NameNode的实际存储节点,它接收来自NameNodes的指令并执行数据存储,如下图1-13所示。

图1-13 Hadoop从节点数据存储

其过程如下:

(1)客户端通知NameNode需要写哪些数据块

(2)NameNode决定把这些数据块写到哪些从节点中并告知客户端

(3)客户端再直接把数据块写到相应的从节点中

(4)从节点中的数据节点复制数据块到其他节点

(5)再处理下一个数据块……

除了数据存储外,Hadoop还有一个很重要的功能是数据处理功能。此功能依赖JobTracker和TaskTracker来完成。从节点中的TaskTracker是主节点JobTracker的具体命令执行单元,它接收JobTracker的指令并执行它。TaskTracker使用MapReduce处理数据,其基本原理是首先数字是分布存储在不同块中的,以某几个块为一个Map,计算出Map中最大的值,然后将每个Map中的最大值做Reduce操作,Reduce再取最大值给用户,所以这是一个包括了Map和Reduce在内的两步过程,其中Map过程的工作流程如下图1-14所示:

图1-14 数据处理Map过程

其过程如下:

(1)JobTracker会向具有本地数据的不同从节点传送统计的代码,并且在不同的节点中分别统计计算

(2)一般统计方法是通过对文档进行分词处理,并且生成key-value键值,统计“大数据测试”在该节点中出现的次数。比如上图中例子在节点1统计出现了3次,在节点5统计出现了7次。

Reduce再把统计结果聚合处理并返回,其过程的事件序列如下图1-15所示:

图1-15 数据处理Reduce过程

其过程如下:

(1)Map Task把输出数据结果通过网络发送给Reduce Task

(2)Reduce Task对Map输出结果进行聚合计算,并且输出最终数据,比如上图的例子“大数据测试”在文档中一共出现了10次,并输出给客户端。

Hadoop框架在大数据中能广泛流行,证明了其本身具备了一定的优势。以下是已总结的关于Hadoop比较突出的几个特点:

  • 可伸缩:大数据应用程序可用于处理大量数据。这些数据的单位可以是PB甚至是EB或更多。Hadoop可以根据处理需求和数据轻松地从一个节点扩展到数千个节点。

  • 可靠性:大数据系统需要被设计成可容错和自动处理硬件故障。Hadoop可以自动将失败的任务从某台机器转移到其他机器,提升容错性。

  • 经济:使用大量低配置的硬件和Hadoop提供的容错能力,使其成为处理海量数据相关问题非常经济的选择。

  • 灵活:大数据应用可以处理不同类型的异构数据,如结构化数据、半结构化数据和非结构化数据。由于数据的并行处理,使得Hadoop可以非常快速地处理数据。

当然,任何事物都有两面性。Hadoop框架也存在其自身的不足之处。以下是已总结的关于Hadoop的一些缺点:

  • 技术复杂性:大数据项目所涉及的技术复杂性明显高于其它项目。Hadoop系统的每个组件都属于不同的技术,需要确保项目硬件和软件能顺利运行所涉及的管理和支持费用也同样高。

  • 数据流变化:想要使用大数据的组织可能不得不修改数据如何流入他们的系统。他们将不得不使他们的系统适应不断流动的数据,这可以转化为对现有IT系统的重大更改。

  • 高技能人才的依赖:从事大数据项目的测试人员和开发人员需要有很高的技术含量,并且能够独立掌握新技术。寻找并留住高技能人才可能是一个挑战。

  • 昂贵的人力成本:虽然大数据承诺使用低成本的机器来解决计算挑战,但此类项目所需的人力资源是昂贵的,比如项目所需的数据挖掘专家、数据科学家、开发人员和测试人员的成本高于普通开发人员和测试人员。

  • 结果准确性的挑战:从数据中提取正确的数据和准确的结果是一个挑战。例如:某邮箱系统有时会将合法的电子邮件标记为垃圾邮件。如果许多用户将来自某人的电子邮件标记为垃圾邮件,那么邮箱系统会开始将来自该发件人的所有电子邮件标记为垃圾邮件。

09 大数据应用程序数据流介绍

与普通软件测试相比,大数据测试工作有一个很重要的特点就是很大一部分时间将花费在数据流的验证上面。因此在进一步学习之前,我们先需要了解大数据应用程序中的数据流是如何工作的,这有助于以后更好的进行测试。

大数据应用程序的数据流如下图1-16所示:

图1-16 大数据应用程序数据流

让我们再对上图进行详细介绍。数据可以从各种来源流入大数据系统,如传感器、物联网设备、扫描仪、CSV、普查信息、日志、社交媒体、RDBMS等。大数据应用程序将使用这些数据集,当然可能需要对这些数据先进行清理和验证,以确保继续使用正确的数据。

由于这些数据量是巨大的,我们将不得不把它带到Hadoop(或类似的框架)中,在那里我们可以处理这些数据。一旦数据在Hadoop中,我们将必须验证数据是否已正确导入到Hadoop中,因为我们必须测试数据的正确性和完整性。

为了使用Hadoop,我们应该了解Hadoop中使用的命令;为了验证源数据,我们应该了解SQL,因为数据源也可以是RDBMS系统。大数据应用程序将对Hadoop中的数据进行处理,并按照所需的逻辑进行处理。虽然我们的大数据应用程序在Hadoop中处理数据,但我们也希望验证它是否按照客户的要求被正确地处理了。

为了测试应用程序,我们使用测试数据。Hadoop中可用的数据是巨大的,我们不能使用所有的数据进行测试,所以我们需要为测试选择数据的子集,称之为测试数据。我们还必须根据客户的要求对测试数据运行相同的过程,然后将其与大数据应用的处理结果进行对比,以确认该应用正在正确处理数据。为了处理测试数据,我们需要掌握例如Hive、Pig脚本、Python和Java方面的知识,因为我们需要开发用于提取和处理测试数据的脚本。

我们可以将大数据应用程序看作是开发人员编写的处理大量数据的应用程序。例如:假设你在Facebook工作,开发人员开发了一个大数据应用程序,其中任何包含短语“免费信用卡优惠”的评论都被标记为垃圾信息。这是一个过于简化的例子,通常应用程序更复杂,涉及到识别数据中的模式,并使用数据科学提出预测,从而将垃圾评论与合法评论区分开来。然后将处理后的数据存储在数据仓库中。数据存储在数据仓库后,可以通过大数据应用程序再次验证数据,以确保数据与处理后生成的数据一致。

数据仓库中的数据通常以可视格式进行分析和描述,以便从中获得商业智能(BI)。一些组织使用来自SAP、Oracle等供应商的商业智能工具,或者使用R之类的语言来可视化数据。数据一旦被可视化地表示出来,就必须对其进行验证,可以使用Web服务将数据从数据仓库传输到BI系统。在这种情况下,还必须测试web服务,测试人员应该具有测试web服务的知识。

10 大数据术语汇总

让我们再对上面的大数据工具/通用术语进行汇总:

  • Hadoop:一个开源框架。它用于使用机器集群的大型数据集的分布式处理和存储。它可以从一台服务器扩展到数千台服务器。它通过识别硬件故障并在应用程序级别处理它们,从而使用廉价的机器提供高可用性。

  • HDFS:Hadoop分布式文件系统,用于跨多台低成本机器存储数据。

  • MapReduce:一种并行处理大数据集的编程模型。

  • Hive:一个数据仓库软件,用于处理存储在分布式文件系统中的大型数据集

  • HiveQL:类似于SQL,用于查询存储在Hive中的数据。HiveQL只适用于平面数据结构,不能处理复杂的嵌套数据结构。

  • Pig Latin:一种高级语言,与Apache Pig平台一起使用。Pig Latin可用于处理复杂的嵌套数据结构。Pig Latin是基于语句的,不需要复杂的编码。

  • 商品服务器:在处理大数据时,你会遇到像商品服务器这样的术语。这指的是用于并行处理数据的廉价硬件。这种处理可以使用廉价的硬件来完成,因为这个过程是容错的。如果一个普通服务器在处理一条指令时发生故障,Hadoop会检测并处理它。Hadoop将任务分配给另一台服务器。这种容错允许我们使用廉价的硬件。

  • Node:指的是存储和处理数据的每台机器。像Hadoop这样的大数据框架允许我们处理多个节点。节点可能有不同的名称,如DataNode、NameNode等。

  • DataNode:用来存储数据和处理数据的机器。

  • NameNode:所有节点的中心目录。当客户机想要定位文件时,它可以与NameNode通信,后者将返回文件/数据所在的DataNode服务器列表。

  • 主节点:使用MapReduce监控数据存储和数据并行处理的主节点。它使用NameNode来存储数据,使用JobTracker来管理数据的并行处理。

  • JobTracker:可以接受任务、分配任务,并识别出故障的机器。

  • 工作节点:虚拟机的主体,用于存储和处理数据。每个工作节点运行一个DataNode和一个TaskTracker:用于与主节点进行消息传递。

  • 客户节点:Hadoop安装在客户节点上。它们既不是主节点,也不是工作节点,用于设置集群数据、提交MapReduce作业、查看结果。

  • 集群:一起工作的节点的集合。这些节点可以是主节点、工作节点或客户机节点。

大数据测试的挑战

11 大数据对传统测试的挑战

我们知道一般的应用测试需要基于两个很重要的测试条件:一是所选择的测试数据样例代表了此特定类的所有测试数据集,其产生的测试结果都是相同的。只有这样,我们才能在测试中避免全量覆盖的测试,从而在有限的时间内完成测试;二是我们在测试之前需要准确的明白Test Oracle(测试结果参照物)是什么。Test Oracle是我们验证实际测试结果正确与否的一把尺子,我们只有先找好尺子,才能知道实际结果的正确性。

有了前面两个条件,测试人员就可以在手动测试时使用抽样策略,或者在使用自动化工具时使用详尽的验证策略。然而,在大数据应用中,由于数据集庞大,即使提取一个准确代表数据集的样本,也可能是一个挑战。以下列出了大数据测试可能会碰到的五个难点:

1. 数据体量大,异质性高

测试大量数据本身就是最大的挑战。今天,企业必须存储从各种在线和离线来源提取的PB或EB级别数据来进行日常业务。测试人员需要检查大量的数据以确保它们适合于业务用途。如何为结构不一致的大型数据准备测试用例是测试人员面临的第一个挑战。因为由于数据量太大,测试人员是不可能进行全量测试的。

2. 对数据的理解

为了使大数据测试策略更加准确有效,测试人员需要持续监控和验证数据的各个不同特征,所以理解数据及其对业务的影响是大数据测试人员所面临的第二个挑战。如果不了解可用数据的性质,就不容易度量我们的测试工作和策略。大数据测试人员需要理解数据的业务规则和不同数据子集之间的关系,他们还必须了解不同数据集之间的相关性以及对业务用户的好处是什么。

3. 识别数据承载的情绪

在大数据系统中,来自互联网相关评论类型的文本文档和社交媒体帖子等来源的非结构化数据可以作为数据提要的补充。测试人员在处理非结构化数据时面临的挑战是如何识别这些文本所承载的情绪,它是代表正面的还是负面的。例如,消费者在社交圈发帖子,讨论在市场上推出的新产品。测试人员需要捕捉他们的情绪,并将其转化为决策制定和进一步业务分析的洞见。

4. 延期和成本风险

如果测试过程没有标准化以及加强重用和优化测试用例集,那么测试周期就会存在超出预期的风险,从而导致成本增加,或者出现维护问题和交付延迟。特别是当大数据测试人员在测试过程中使用手工测试,那么测试周期有可能会延长到几周甚至更长。

5. 大数据测试技能

大数据的技术一直在发展,所以大数据测试人员也需要跟进新技术的演进,彻底了解大数据生态系统的组成部分。大数据以其意想不到的格式,可能会导致自动化测试用例无法理解的问题,因此为这样一个大数据池创建自动化测试用例需要团队成员之间的专业知识和协调。测试团队应与开发团队和营销团队协作,了解不同资源的数据提取、数据过滤和前后处理算法。由于市场上有许多用于大数据验证的全自动测试工具,测试人员必须不可避免地学习所需的技能集。

12 大数据测试对测试人员的要求

正如前面提到,大数据测试和传统测试相比,其困难度以及对技术的要求非常高,这也使得对执行大数据测试的测试人员来说同样有相当高的要求。测试人员不仅需要掌握一般的测试方法和测试技术,还需要掌握大数据相关的技术。

  • 测试人员应该能够处理非结构化数据和半结构化数据。它们还应该能够处理数据仓库或源RDBMS中的结构化数据。

  • 由于模式可能随着应用程序的发展而变化,测试人员应该能够处理变化的模式。

  • 由于数据可以来自各种不同的数据源,并且在结构上也有所不同,因此测试人员应该能够根据自己对数据源的了解来开发自己的结构。

  • 需要测试人员与开发团队以及业务用户一起工作来理解数据。

  • 测试人员必须与业务和开发团队一起工作,并且必须在提出策略之前研究问题领域。

  • 测试人员必须进行创新,以获得能够在保持高测试生产力的同时提供足够测试覆盖率的技术和工具。

  • 测试人员应该知道如何使用Hadoop、HDFS等系统。在一些组织中,他们可能还需要具备或获得设置系统的基本知识。

  • 测试人员可能需要了解Hive QL和Pig Latin,也可以要求他们编写MapReduce程序,以确保应用程序的完整测试。

大数据该如何开展测试

在大数据项目的流程/工作流中有几个需要进行测试的领域,而大数据项目中的测试通常与数据库测试、基础设施和性能测试以及功能测试相关。有一个清晰的测试策略有助于项目的成功。

13 大数据功能测试的测试策略

大数据测试虽然在技术上要求更高,但是实际上从测试本质的基本策略来说和普通的软件测试一样,也是属于IPO(Input-Process-Output)的测试过程。从图1-16大数据应用数据流可以看出,针对数据的准备、处理和输出将是大数据应用测试的重要组成部分。综上所述,以上步骤可分为3大类,如图1-17所示:

图1-17 大数据功能测试策略

(1)数据输入验证:验证来自不同来源的数据,如传感器、扫描仪、日志等。我们还需要验证推入Hadoop(或类似框架)的数据。

(2)处理过程验证:在此步骤中,测试人员验证通过大数据应用处理后得到的数据是否准确。这还包括测试从Map Reduce或类似过程中生成的数据的准确性。

(3)数据输出验证:在这个步骤中,测试人员验证来自大数据应用程序的输出是否正确地存储在数据仓库中。他们还验证数据在业务智能系统或任何其他目标UI中得到了准确的表示。

14 大数据性能测试的测试策略

大数据项目涉及在短时间内处理大量数据。这种操作需要大量的计算资源和网络中流畅的数据流。系统中的体系结构问题可能导致流程中的性能瓶颈,从而影响应用程序的可用性。这反过来又会影响项目的成功。

为了避免上述问题,需要对系统进行性能测试。这里我们度量的指标包括吞吐量、内存利用率、CPU利用率、完成任务所需的时间等。当然我们还建议进行故障转移测试,以验证系统的容错能力,并确保如果某些节点失败,其他节点将接管处理工作。大数据应用的性能测试主要集中在以下几个方面。

(1)数据加载和吞吐量:在这个测试中,测试人员观察数据从不同来源(如传感器、日志等)进入系统的速率。测试人员还检查在数据存储中创建数据的速度。对于消息队列,我们测试处理一定数量的消息所花费的时间。
(2)数据处理速度:在这个测试中,我们测量使用MapReduce作业处理数据的速度。
(3)子系统性能:在这个测试中,我们测量作为整个应用程序一部分的各个组件的性能。隔离测试组件以识别应用程序中的瓶颈可能是有益的。这包括MapReduce过程的测试,查询的性能等等。

大数据应用的性能测试方法如下图1-18所示。

图1-18 大数据性能测试方法

(1)为了开始性能测试,需要设置将要测试的大数据集群。

(2)必须标识和计划将作为性能测试的一部分执行的负载和作业。

(3)编写可能需要的自定义脚本/客户端。

(4)运行性能测试并研究结果。

(5)如果结果不令人满意,系统不符合性能标准,则必须对组件进行优化,并重新运行测试。

(6)必须重复前面的步骤,直到达到性能要求。

15 大数据自动化测试工具策略

测试大数据应用程序比测试常规应用程序要复杂得多。大数据自动化测试工具有助于自动化测试中涉及的重复性任务。任何用于大数据应用程序自动化测试的工具都必须满足以下需求:

  • 允许整个软件测试过程的自动化。

  • 由于数据库测试是大数据测试的重要组成部分,通过MapReduce算法和其他ETL转换处理后,当数据从源数据转换到目标数据时,数据库测试应该支持对数据的跟踪。

  • 可伸缩,但同时它应该足够灵活,可以随着应用程序复杂性的增加而合并更改。

  • 与不同的系统和平台如Hadoop、Teredata、MongoDB、AWS、其他NoSQL产品等集成

  • 与DevOps解决方案集成,支持持续交付。

  • 良好的报告功能,帮助你识别系统中的不良数据和缺陷。

总结

本文是大数据测试基础的介绍,主要简单的介绍了大数据的起源、定义、相关的特征和业务形态等;同时介绍了处理大数据的常规架构;最后介绍了大数据测试的挑战及基本测试策略。内容如下:

  1. 大数据的5V特征包括了代表数据体量的Volume、数据产生速度的Velocity、数据多样性的Variety、数据质量的Veracity和数据价值的Value。

  2. 大数据中的数据格式可以分为三类,它们分别是结构化数据、半结构化数据和非结构化数据。

  3. Hadoop由两项关键服务构成:采用Hadoop分布式文件系统(HDFS)的可靠数据存储服务以及利用一种叫作MapReduce技术的高性能并行数据处理服务。这两项服务的共同目标是提供一个使对结构化和复杂数据的快速、可靠分析变为现实的基础。

  4. 大数据测试虽然在技术上要求更高,但是实际上从测试本质的基本策略来说和普通的软件测试一样,也是属于IPO(Input-Process-Output)的测试过程。

  5. 大数据测试和传统测试相比,其困难度以及对技术的要求非常高,这也使得对执行大数据测试的测试人员来说同样有相当高的要求。测试人员不仅需要掌握一般的测试方法和测试技术,还需要掌握大数据相关的技术。

参考文献


[ 1 ] 赵国栋,易欢欢,糜万军,鄂维南. 大数据时代的历史机遇[M]. 北京:清华大学出版社,2013

[ 2 ] 刘凯悦. 大数据综述[J]. 计算机科学与应用,2018,8(10):1503-1509.

原文链接: https://mp.weixin.qq.com/s?__biz=MzIxNzc4ODgxMg==&mid=2247484410&idx=1&sn=730f343583ef1bdc08c52bca5662cb7e