如何对大数据应用进行性能测试

简介: 如何对大数据应用进行性能测试

大家好,我是阿萨。今天聊一个大数据的话题。

当涉及到测试大数据应用时,有很多东西需要考虑,并有可能被淹没在其中。本文让测试人员简单轻松上手。

数据质量是软件测试过程中最具挑战性,但也是最重要的要素之一。当涉及到测试大数据时,数据越大,挑战就越大。

随着大数据测试对企业应用质量变得更加不可或缺,测试人员必须确保数据被顺利收集。同样,支持大数据的技术也变得更加重要,包括廉价的存储、不同类型的数据库和强大的--且随时可用的--计算。

让我们研究一下大数据应用的性能测试如何在测试人员的日常工作中发挥重要作用。


一. 什么是大数据?


一般来说,大数据是指超过传统数据库内存能力的数据。此外,大数据通常涉及收集关于客户、交易、网站访问、网络性能等的大量不同信息。企业必须存储所有这些数据--也许是在很长的时间内。

然而,大数据不仅仅是规模。大数据最重要的方面可以细分为六个V。

  • 体积:庞大数量的数据。
  • 速度:系统创建和传输数据的速度。
  • 种类:有多少不同类型的数据。
  • 真实性:数据的准确性和质量。
  • 可变性:数据流如何变化和经常变化。
  • 价值:对企业有益的数据。

二、大数据和业务


大数据满足了关键的业务需求并产生了价值,因为它为企业提供了关于其业务趋势、客户和竞争对手的关键信息。数据能够实现分析--通常以统计学术语表达结果--如趋势、可能性或分布;即,企业的决策者可能会发现有用的统计数据。相对于数据查询,大数据应用都是关于分析的。

大数据通常是非结构化的,不适合用有组织的列和行来定义数据模型。数据可以以音频和视觉的形式出现,如电话、即时信息、语音邮件、图片、视频、PDF、地理空间数据和幻灯片分享。数据也可以采取社交媒体帖子的形式。一批大数据的格式和来源可能需要特别的QA考虑。例如,为了测试从社交媒体收集的大数据,测试人员可能需要检查每个单独的社交媒体渠道,以确保显示的广告与用户购买行为相对应。


三、测试大数据应用


虽然测试人员一般不测试数据本身,但他们需要对数据库类型、数据架构以及如何访问该数据库有基本的了解,以成功测试大数据应用。测试人员不太可能使用实时数据,因此他们必须维护自己的测试环境版本的数据库和足够的数据,以使测试切合实际。

依靠分析输出的应用并不都是一样的。用户更有可能运行统计和敏感性分析,而不是为一个特定的结果查询数据库。这种可能性意味着正确的输出--答案--取决于分布、概率或时间序列趋势。测试人员不可能提前知道答案,因为它们往往是趋势和复杂的计算,而不是数据库中的简单字段。而且,一旦测试人员找到这些答案,它们显然不会是正确或不正确的,这为设计测试用例和分析结果的测试人员增加了另一层不确定性。

然而,如果测试人员把大数据测试看成是某种水生动物,就会有帮助。


四、如何测试ETL


大数据测试就像测试水母。由于数据量巨大,而且其非结构化的性质(就像水母是一个模糊的未定义的形状),测试过程很难定义。测试将需要自动化,虽然存在许多工具,但它们很复杂,需要技术能力来排除故障。

在最高层次上,大数据测试方法涉及功能和非功能部分。功能性测试验证了数据质量和处理数据。所有大数据测试策略都是基于提取、加载、转换(ELT)过程。大数据测试验证了来自源数据库的数据质量、数据结构转换或流程以及加载到数据仓库的数据。

ELT测试有三个阶段。

数据暂存

MapReduce验证

输出验证

数据暂存是通过比较来自源系统的数据和暂存位置的数据来验证的。

下一个阶段是MapReduce验证,或者说是数据转换的验证。MapReduce是非结构化数据的编程模型,Hadoop的实现在测试界最常用。这种测试确保应用程序用来聚合和隔离数据的业务规则正常工作。

最后的ELT阶段是输出验证阶段,来自MapReduce的输出文件已经准备好移动到数据仓库。当数据到达这个阶段时,数据的完整性和转换是完整和正确的。

数据加载是负载--即,数据如何进入应用程序。这个组件的性能测试应该集中在该过程的压力和负载测试上。这种测试还应该检查应用程序是否有效地处理查询和消息。

评估数据处理的性能是整个测试的关键。验证MapReduce作业的速度,并考虑建立一个数据档案来测试整个端到端的过程。

对用于处理大数据的分析方法应进行性能测试。这就是验证算法和吞吐量的地方。

最后,确保包括提交日志的大小、并发性、缓存和超时在内的参数被纳入性能测试策略。


五、大数据性能测试的挑战


与功能测试一样,大数据的数量和种类--特别是其非结构化的性质--造成了与性能测试相关的潜在问题。当这些问题与大数据处理的速度和高速结合在一起时,它为测试人员需要注意的众多问题打开了大门。

但是,正是这些考虑使得性能测试变得更加重要。测试人员应验证负载、响应时间、网络带宽、内存容量和其他分析组件,因为由于大数据的巨大规模、数量和速度,这些领域中的任何问题都会导致问题。

数据处理由三个活动组成:提取、转换和加载。 性能测试策略必须解决这些活动中的每一项,以及端到端的数据流。在高层次上,大数据的性能测试的主要组成部分是提取、处理和分析。


六、相关工具


许多类型的工具支持大数据应用,包括用于存储、处理和查询的工具。以下是几个常用的选项。

Hadoop分布式文件系统在多台机器上存储数据,而Hadoop MapReduce为查询提供并行处理。另外,Apache发布了Hadoop Ozone,这是一个用于Hadoop的可扩展分布式对象存储。

另一个Apache的产品是Hive,一个开源的数据仓库系统,允许数据科学家和开发人员用SQL类型的语言进行查询。Pig Latin,一种为Apache Pig编写的查询语言,帮助团队分析大型数据集。它可以处理复杂的数据结构和NoSQL,通常用于查询非结构化数据。

从大数据分析的角度来看,一些最强大的工具是Tableau、Zoho Analytics和Splunk。Tableau提供了一个可以混合多个数据点的引擎,并且不需要用户知道编码来创建数据查询。Zoho Analytics是用户友好型的,并提供各种各样的详细报告。Splunk最重要的特点是其可扩展性;它每天可以处理多达100TB的数据。

NoSQL数据库--如MongoDB和Couchbase--的成熟使得分析的大数据挖掘更加有效。专门的数据库可以满足特定的用途,如用于高性能的内存数据库和用于数据长期趋势的时间序列数据库。

测试人员在测试大数据设置时应抛开测试案例的惯例。测试人员不应该寻找一个具体的、已知的答案,而应该寻找一个统计结果,所以测试用例必须反映这一点。例如,如果你测试一个零售网站收集的大数据,你必须设计测试用例,让团队从所有关于客户、他们的搜索、添加到购物车的产品、放弃和购买历史的信息中推断出购买潜力。

最后,测试人员不应该以其正确性来评估测试结果,因为没有简单的方法来确定这一点。你可能要把问题分成小块,从每块中分析测试。使用技术能力和解决问题的创造力来确定如何解释测试结果。


七、测试人员的定位


作为测试人员,我们常常对数据有一种爱恨交加的关系。处理数据是我们的应用程序存在的主要原因,没有数据,我们就不能测试。数据往往是测试问题的根源;我们并不总是有我们需要的数据,这导致测试用例受阻,而缺陷被返回为 "数据问题"。

在过去的几年里,数据已经成倍增长,并继续增长。我们开始用兆字节和千兆字节进行测试,随后是兆字节和千兆字节,现在艾兆字节、泽兆字节和尤兆字节已经加入了数据领域。欢迎来到大数据测试的勇敢新世界。


相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
6月前
|
监控 安全 Shell
管道符在渗透测试与网络安全中的全面应用指南
管道符是渗透测试与网络安全中的关键工具,既可用于高效系统管理,也可能被攻击者利用实施命令注入、权限提升、数据外泄等攻击。本文全面解析管道符的基础原理、实战应用与防御策略,涵盖Windows与Linux系统差异、攻击技术示例及检测手段,帮助安全人员掌握其利用方式与防护措施,提升系统安全性。
261 6
|
6月前
|
存储 数据采集 搜索推荐
Java 大视界 -- Java 大数据在智慧文旅旅游景区游客情感分析与服务改进中的应用实践(226)
本篇文章探讨了 Java 大数据在智慧文旅景区中的创新应用,重点分析了如何通过数据采集、情感分析与可视化等技术,挖掘游客情感需求,进而优化景区服务。文章结合实际案例,展示了 Java 在数据处理与智能推荐等方面的强大能力,为文旅行业的智慧化升级提供了可行路径。
Java 大视界 -- Java 大数据在智慧文旅旅游景区游客情感分析与服务改进中的应用实践(226)
|
6月前
|
机器学习/深度学习 数据采集 数据可视化
Java 大视界 -- 基于 Java 的大数据可视化在城市空气质量监测与污染溯源中的应用(216)
本文探讨Java大数据可视化在城市空气质量监测与污染溯源中的创新应用,结合多源数据采集、实时分析与GIS技术,助力环保决策,提升城市空气质量管理水平。
Java 大视界 -- 基于 Java 的大数据可视化在城市空气质量监测与污染溯源中的应用(216)
|
6月前
|
存储 监控 数据可视化
Java 大视界 -- 基于 Java 的大数据可视化在企业生产运营监控与决策支持中的应用(228)
本文探讨了基于 Java 的大数据可视化技术在企业生产运营监控与决策支持中的关键应用。面对数据爆炸、信息孤岛和实时性不足等挑战,Java 通过高效数据采集、清洗与可视化引擎,助力企业构建实时监控与智能决策系统,显著提升运营效率与竞争力。
|
6月前
|
Java 大数据 数据处理
Java 大视界 -- 基于 Java 的大数据实时数据处理在工业互联网设备协同制造中的应用与挑战(222)
本文探讨了基于 Java 的大数据实时数据处理在工业互联网设备协同制造中的应用与挑战。文章分析了传统制造模式的局限性,介绍了工业互联网带来的机遇,并结合实际案例展示了 Java 在多源数据采集、实时处理及设备协同优化中的关键技术应用。同时,也深入讨论了数据安全、技术架构等挑战及应对策略。
|
6月前
|
数据采集 搜索推荐 Java
Java 大视界 -- Java 大数据在智能教育虚拟学习环境构建与用户体验优化中的应用(221)
本文探讨 Java 大数据在智能教育虚拟学习环境中的应用,涵盖多源数据采集、个性化推荐、实时互动优化等核心技术,结合实际案例分析其在提升学习体验与教学质量中的成效,并展望未来发展方向与技术挑战。
|
5月前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
719 11
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
Java 大视界 -- Java 大数据机器学习模型在自然语言生成中的可控性研究与应用(229)
本文深入探讨Java大数据与机器学习在自然语言生成(NLG)中的可控性研究,分析当前生成模型面临的“失控”挑战,如数据噪声、标注偏差及黑盒模型信任问题,提出Java技术在数据清洗、异构框架融合与生态工具链中的关键作用。通过条件注入、强化学习与模型融合等策略,实现文本生成的精准控制,并结合网易新闻与蚂蚁集团的实战案例,展示Java在提升生成效率与合规性方面的卓越能力,为金融、法律等强监管领域提供技术参考。
|
6月前
|
存储 人工智能 算法
Java 大视界 -- Java 大数据在智能医疗影像数据压缩与传输优化中的技术应用(227)
本文探讨 Java 大数据在智能医疗影像压缩与传输中的关键技术应用,分析其如何解决医疗影像数据存储、传输与压缩三大难题,并结合实际案例展示技术落地效果。
|
6月前
|
机器学习/深度学习 安全 Java
Java 大视界 -- Java 大数据在智能金融反洗钱监测与交易异常分析中的应用(224)
本文探讨 Java 大数据在智能金融反洗钱监测与交易异常分析中的应用,介绍其在数据处理、机器学习建模、实战案例及安全隐私等方面的技术方案与挑战,展现 Java 在金融风控中的强大能力。