本文6089字,阅读约需16分钟
Hi,大家好。随着各个国家使用大数据应用程序或应用大数据技术场景的数量呈指数增长,相应的,对于测试大数据应用时所需的知识与大数据测试工程师的需求也在同步增加。医疗、能源、通信、零售业、金融、体育等各行业都可以从其数据的采集、传输、存储、分析等各个环节产生巨大的经济价值,马爸爸认为,未来的时代将不是IT时代,而是DT
的时代,即Data Technology数据科技。大数据测试或将成为未来的一个热门的职业方向,以下就给大家揭开大数据测试的神秘面纱。
一
大数据测试简介
1
什么是大数据?
大数据
是一个大的数据集合,通过传统的计算技术无法进行处理。这些数据集的测试需要使用各种工具、技术和框架进行处理。大数据涉及数据创建、存储、检索、分析,而且它在数量、多样性、速度方法都很出色,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
2
大数据应用场景举例?
电子商务:淘宝,京东和其他电子商务平台每天都有数以百万计的访问者,会浏览其中的数十万种商品。淘宝使用大数据来存储有关商品,客户和购买的信息。包括围绕商品的搜索,添加入购物车的商品,购物车放弃及一起购买的其他商品等数据。所有这些数据都经过存储和处理后,会生成针对客户最有可能购买的商品建议。
社交媒体:社交媒体类应用会根据图片、视频、喜欢数、帖子内容,评论等生成大量数据。这些数据不仅存储于大数据平台中,还会对其进行处理和分析,以进而提供针对用户更加精准的可能喜欢的内容推荐。数据不仅存储在大数据平台中,还经过处理和分析,以针对您可能感兴趣的事物提供建议。例如,如果在抖音上查看某商品的广告并转到淘宝,淘宝将会显示相同的广告。这是一个典型的大数据应用,因为抖音每天的日活用户数已超4亿,所以有大量的网站在上面做广告。而传统的数据库是无法在同一时间内存储和处理大量的信息并用以向正确的用户推送正确的广告。
医疗卫生:大数据在抗疫大战发挥了多项作用,比如监测人口和车辆流动、追踪确诊病例、预测疫情。在当前输入型病例呈上升趋势的情况下,大数据可继续用于强化境外人员入境前的通报预警,入境时的查验管控以及入境后协助社区防控工作,以及时有效的防范对境外疫情输入的风险。大数据应用将那些与我国有通航业务的中外航空公司建立了乘客订票信息的链接,实现了所有空港的入境人员基本信息即知、回国信息预知以及入境落地信息悉知,通过这样的方式,第一时间向入境地的海关检疫部门通报预警,实施重点的检疫工作。
3
大数据测试的类型?
测试大数据应用程序更多的是验证其数据处理,而不是测试软件产品的个别功能。当涉及到大数据测试时,性能和功能测试是关键。处理可以是三种类型:批量、实时、交互。
在测试应用程序之前,有必要检查数据的质量,并将其视为数据库测试的一部分。它涉及检查各种字段,如一致性,准确性,有效性,数据完整性等。
4
大数据中的数据格式?
大数据的数据格式可以分为3
类,分别是:结构化数据、半结构化数据、非结构化数据。
结构化数据:
- 数据具有高度组织性;
- 普遍存储于任何关系型数据库中(如MySQL,Oracle,SQL Server);
- 通过使用简单的查询操作就可以轻松的检索使用;
半结构化数据:
- 半结构化数据的组织性不高;
- 半结构化数据不在关系型数据库中存储;
- 经过一系列处理后可以转换为结构化格式存储于关系型数据库中;
- 半结构化数据包含标签和其他类型的元数据,用以实现在数据格式体系中的层次结构和顺序;
- 属于同一类型的实体,可以具有不同属性且顺序也可以不同;
非结构化数据:
- 非结构化数据不具有任何预定义格式的结构;
- 不遵循任何结构化数据模型;
- 图像,视频,文档等即使具有内部结构,但其本身还是非结构化数据;
- 这类数据一般在关系型数据库中直接以二进制形式存储,所以存取操作极为不便;
- 我们在软件应用场景中的80%的数据都是非结构化数据;
二
大数据测试类型
一般情况下,大数据项目的工作流中有多个过程域需要进行测试。大数据项目中的测试通常包含功能测试、数据库测试、基础架构测试和性能测试。在测试开始之前,制定严格清晰的测试策略有助于整体项目的成功。大数据项目不同于其他类别的项目,其本身包含的海量数据验证本身对于测试工作而言就极具挑战性,而测试过程中又要同时兼顾对大数据基础架构自身的测试,大大加剧了测试的难度和深度。所以在制定大数据项目测试策略的时候,建议在测试中进行分段测试。不同的阶段指定不同的测试主体,明确不同的测试目标,再应用不同的测试方法。基本的原则遵循基础架构测试——数据库测试——功能测试——性能测试的流程进行。
1
架构测试
Hadoop处理大量的数据,并且是非常耗费资源的。因此,架构测试对于确保大数据项目的成功至关重要。系统设计不当可能导致性能下降,系统不能满足要求。至少,性能和故障转移测试服务应该在Hadoop环境中完成。
2
部署方式测试
大数据具备scale-out的特点,能够构建大规模,高性能的文件系统集群。针对不同应用和解决方案,文件系统部署方式会有显著不同;部署方式测试需要测试不同场景下的系统部署方式,包括自动安装配置,集群规模,硬件配置(服务器,存储,网络),自动负载均衡等,这部分测试不大可能进行自动化测试,需要根据应用场景来设计解决方案和具体部署,再进行手动测试。
3
数据库测试
与大数据应用程序功能测试相比,数据库测试工作的很大一部分将花在数据验证上。数据库测试将是大数据应用程序中测试的关键组成部分。它又分为三个主要组成部分:
- 数据分段验证:这里我们验证从各种来源如IoT设备,数据采集设备,系统日志等获取的数据。我们还验证推送到Hadoop、Spark或其他类似框架中的数据;
- 流程验证:测试工程师还将测试通过大数据处理后获得的数据是否准确。这其中包含会测试从MapReduce或类似过程生成的数据的准确性;
- 输出验证:在此阶段中,测试工程师将验证大数据的输出是否正确存储在于数据仓库中,同时还需测试数据是否已在BI系统或任何其他目标系统的UI中正确显示。
4
数据一致性测试
这里的数据一致性是指文件系统中的数据与从外部写入前的数据保持一致,即写入数据与读出数据始终是一致的。数据一致性能够表明文件系统可保证数据的完整性,不会导致数据丢失或数据错误,这是文件系统最基本的功能,测试可用diff,md5sum编写脚本自动化测试,LTP也提供了数据一致性的测试工具。
5
功能测试
与传统软件测试一样,大数据应用程序的功能测试也是根据用户需求来执行的。但是大数据应用程序的功能测试一般主要针对大数据应用程序中的前端部分。这里所说的前端,是指与后端框架(Hadoop或其他)接口的,基于Web的应用程序。这类前端应用程序的测试可直接使用一般Web应用程序的功能测试方法进行测试,但需要特别注意接口测试,因为接口本身的正确性与安全性将是制约大数据应用程序整体表现的关键特性。
6
性能测试
性能是评估一个大数据分析系统的最为关键的维度,大数据系统性能主要包括吞吐量,任务完工时间,内存利用率等多个指标,可反应大数据分析平台的处理能力,资源利用能力等性能。可通过hadoop性能监控器来监测运行状态性能指标和瓶颈问题,性能测试采用自动化化方式进行,测试系统在不同负载情况下的性能。
7
容错性测试
可从部分失效中自动恢复,而且不会验证的影响整体性能,特别地,当故障发生时,大数据分析系统应该在进行恢复的同时继续以可接受的方式进行操作,在发生错误时某种程度上可以继续操作,需根据应用场景来设计解决方案和具体部署,然后手动测试。
8
可用性测试
高可用性已是大数据分析不可或缺的特性之一,从而保证数据应用业务的连续性。大数据高可用性对很多应用非常关键,需要严格进行测试和验证,以手动测试为主。
9
扩展性测试
弹性扩展能力对于大数据时代的文件系统尤其重要,文件系统扩展性测试主要包括测试系统弹性扩展能力(扩展/回缩)及扩展系统带来的性能影响,验证是否具有线性扩展能力,以手动测试为主。
10
稳定性测试
大数据分析系统通常是不间断长期运行,稳定性的重要性不言而喻,稳定测试主要验证系统在长时间(7/30/180/365*24)允许下,系统是否仍然能够正常运行,功能是否正常.稳定性测试通常采用自动化方式进行,LTP,10ZONE,POSTMARK,FIO等工具对测试系统产生负载,同时需要验证功能。
11
压力测试
大数据分析系统的负载能力是存在上限的,系统过载时,系统就可能存在性能下降,功能异常,拒绝访问等问题。压力测试是验证系统造大压力下,包括数据多客户端,高OPS压力,高IOPS/吞吐量压力,系统是否仍然能够正常运行,功能是否正常,系统资源消耗情况,从而为大数据运营提供依。
三
大数据测试步骤
大数据测试包括数据预处理验证、Map Reduce验证、结果验证3部分。
1
数据预处理验证
在进行大数据测试时,首先要预hadoop前验证数据的准确性等。数据来源可能是关系数据库、日志系统、社交网络等等,所有应该确保数据能正确的加载到系统中,我们要验证:
- 加载的数据和源数据是一致的;
- 确保正确的提取和加载数据至hdfs中;
2
Map Reduce验证
在进行大数据测试时,第二个关键步骤是“Map Reduce”验证。在本阶段,我们主要验证每一个处理节点的业务逻辑是否正确,并验证在多个运行后,确保:
- Map Reduce过程工作正常;
- 数据聚合、分离规则已经实现;
- 数据key-value关系已正确生成;
- 验证经过map reduce后数据的准确性等特性;
3
结果验证
在本阶段主要验证在经过大数据工具/框架处理后,生成的最终数据的成果。检查转换(Transformation)规则被正确应用检查数据完整性和成功的数据加载到目标系统中。
四
大数据测试实施
1
测试流程
大数据测试与其他测试过程类似,也需要经历不同的测试阶段。其流程如下:
- 分析并评估业务需求;
- 编写测试计划;
- 设计测试用例,准备测试数据;
- 执行测试,回归测试;
- 分析测试结果,生成测试报告;
2
测试用例
以下列出大数据测试部分用例,如下:
测试场景 | 测试用例 |
---|---|
Mapping Doc Validation(映射文件验证) | 验证映射文件是否提供了响应的ETL信息,且每个映射文档的更新日志有记录 |
Validatioin(验证) | 1. 根据对应的映射文件验证源与目的地数据仓库的表结构;2. 验证源和目标数据的类型一致;3. 验证源和目标数据的长度一致;4. 验证数据字段类型和格式是指定的类型;5. 验证源的数据类型长度不应小于目标数据类型长度;6. 针对映射表对数据表的列的名称进行验证。 |
约束验证 | 验证目标表中的约束关系满足我们的期望设计。 |
数据一致性验证 | 1. 防止语义定义相同,但特定属性的数据类型和长度不一致的问题;2. 防止完整性约束滥用。 |
完整性验证 | 1. 要确保所有期望的数据都已经完整的加载到目标表中;2. 要比较源和目标数据的个数(即确保计数上的完整);3. 检查出现的任何不合格的记录;4. 检查目标表列中的数据没出现被截断的情况;5. 对边界值进行分析检查;6. 要检查比较目标数据仓库和源数据的关键字段的唯一性。 |
正确性验证 | 1. 数据要没有拼写错误或不准确的记录;2. 无null、非惟一或超出范围的数据记录存在。 |
转换 | 验证转换逻辑的正确性。 |
数据准确性 | 1. 数值型验证,验证是否为数值类型;2. 日期型验证,验证是否为日期格式,并且在所有日期类型数据的格式应该统一;3. 精度验证,小数点的精度要满足期望的精度;4. 数据检查:检查数据的正确性,完整性;5. null检查。 |
拷贝验证 | 1. 验证目标表中业务要求所有惟一性指标均正确的实现(例如主键、惟一标识的键、或其他任一惟一表示的列);2. 验证从源数据多列合并而成的数据是正确的;3. 验证仅仅根据客户要求对源数据进行了多列合并至目标表中。 |
数据完整性验证 | 在验证源和目标表中的数据集的完整性时,我们需要用到交集运算,以确定目标数据的完整性。 |
数据清理 | 对于不需要的列在载入至数据仓库前应该进行删除。 |
3
总结
1)数据可以从各种来源,以各种形式流入大数据系统,例如IOT设备,终端扫描仪,系统数据文件,系统日志,社交媒体等;
2) 为了更好的在Hadoop或类似框架中使用这些数据。大数据应用程序将对采集的这些数据集进行清理和验证,以确保以后使用过程的正确;
3) 为了确保数据是否已正确导入到Hadoop中,我们要测试数据的正确性和完整性;大数据应用程序将处理Hadoop中的数据并根据所需逻辑对其进行处理
4) Hadoop中可用的数据非常庞大,我们无法使用所有数据进行测试,所以我们选择部分数据子集成为测试数据;
5) 针对测试数据,必须根据需求对其反复运行相同的数据处理过程。然后对多次的处理结果进行比较,以确认大数据应用程序正在以正确的方式处理数据;
6)处理后的数据将存储于数据仓库中。我们需要将数据仓库中的数据进行再次验证,以确保其与应用程序处理后的数据保持保持一致性;
7) 一些组织使用SAP,Oracle等厂商的BI工具以可视格式分析和描述来自数据仓库的数据,所以一旦数据以可视化的视觉方式呈现后,必须要对其进行再次验证;
8) 一些大数据系统还会通过Web服务将数据从数据仓库传输到BI系统中。那么在这种情况下,还必须对Web服务进行测试,这往往容易被忽略.
以上
That‘s all
更多系列文章