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

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

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

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

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

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

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


一. 什么是大数据?


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

然而,大数据不仅仅是规模。大数据最重要的方面可以细分为六个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--的成熟使得分析的大数据挖掘更加有效。专门的数据库可以满足特定的用途,如用于高性能的内存数据库和用于数据长期趋势的时间序列数据库。

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

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


七、测试人员的定位


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

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


相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
19天前
|
存储 消息中间件 监控
【Flume】Flume在大数据分析领域的应用
【4月更文挑战第4天】【Flume】Flume在大数据分析领域的应用
|
30天前
|
SQL 安全 测试技术
【软件设计师备考 专题 】测试要求说明书的编写和应用
【软件设计师备考 专题 】测试要求说明书的编写和应用
58 0
|
1月前
|
Cloud Native 数据处理 云计算
探索云原生技术在大数据分析中的应用
随着云计算技术的不断发展,云原生架构作为一种全新的软件开发和部署模式,正逐渐引起企业的广泛关注。本文将探讨云原生技术在大数据分析领域的应用,介绍其优势与挑战,并探讨如何利用云原生技术提升大数据分析的效率和可靠性。
|
1月前
|
存储 消息中间件 大数据
Go语言在大数据处理中的实际应用与案例分析
【2月更文挑战第22天】本文深入探讨了Go语言在大数据处理中的实际应用,通过案例分析展示了Go语言在处理大数据时的优势和实践效果。文章首先介绍了大数据处理的挑战与需求,然后详细分析了Go语言在大数据处理中的适用性和核心技术,最后通过具体案例展示了Go语言在大数据处理中的实际应用。
|
1月前
|
安全 测试技术
现代软件测试中的自动化技术应用及挑战
在当今数字化时代,软件测试的重要性日益凸显。本文探讨了现代软件测试中自动化技术的应用现状和挑战,分析了自动化测试在提高效率、降低成本、增强可靠性等方面的优势,同时也提出了自动化测试所面临的挑战和解决方案。
|
29天前
|
数据采集 分布式计算 大数据
Java语言在大数据处理中的应用
传统的大数据处理往往依赖于庞大的数据中心和高性能的服务器,然而随着大数据时代的到来,Java作为一种强大的编程语言正在被广泛应用于大数据处理领域。本文将探讨Java语言在大数据处理中的优势和应用,以及其在分布式计算、数据处理和系统集成等方面的重要作用。
|
1月前
|
机器学习/深度学习 数据采集 人工智能
探索AI在软件测试中的应用与挑战
【2月更文挑战第25天】 随着人工智能(AI)技术的迅猛发展,其在软件测试领域的应用逐渐深入。AI不仅改变了传统测试流程,提高了测试效率和质量,也引入了新的挑战。本文将详细探讨AI在软件测试中的具体应用,包括智能化测试用例生成、缺陷预测、自动化测试执行等,并分析当前面临的主要挑战,如数据质量、模型泛化能力和工具集成等问题。通过实例分析和研究展望,本文旨在为软件测试专业人士提供一个关于AI技术融合的全面视角。
|
1月前
|
机器学习/深度学习 数据采集 人工智能
探索AI在软件测试中的应用和优势
【2月更文挑战第22天】 随着科技的不断发展,人工智能(AI)在各个领域的应用越来越广泛。本文主要探讨了AI在软件测试领域的应用及其带来的优势。文章首先介绍了AI技术的基本概念,然后详细分析了AI在软件测试中的具体应用,包括自动化测试、智能缺陷检测和预测等方面。最后,文章总结了AI在软件测试领域的优势,如提高测试效率、降低人力成本、提高测试质量等,并展望了AI在软件测试领域的未来发展趋势。
|
1天前
|
人工智能 监控 数据处理
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
9 0
|
1天前
|
测试技术 数据安全/隐私保护
深入理解与应用软件测试中的边界值分析法
【4月更文挑战第23天】在软件测试的诸多技术中,边界值分析法因其简洁性和高效性而备受青睐。本文旨在探讨边界值分析法的核心原理及其在实际测试场景中的应用。通过对边界条件进行系统的识别、分类和测试,该方法能够有效地发现软件缺陷。我们将详细讨论如何确定边界值,设计测试用例,以及如何处理复杂数据类型的边界情况。此外,文章还将展示通过案例研究来验证边界值分析法在提升测试覆盖率和发现潜在错误方面的实际效益。

热门文章

最新文章