当涉及到测试大数据应用时,有很多东西需要考虑,并有可能被淹没在其中。本文让测试人员简单轻松上手。
数据质量是软件测试过程中最具挑战性,但也是最重要的要素之一。当涉及到测试大数据,数据越大,挑战就越大。
随着大数据测试对企业应用质量变得更加不可或缺,测试人员必须确保数据被顺利收集。同样,支持大数据的技术也变得更加重要,包括廉价的存储、不同类型的数据库和强大的--且随时可用的--计算。
让我们研究一下大数据应用的性能测试如何在测试人员的日常工作中发挥重要作用。
一.什么是大数据?
一般来说,大数据是指超过传统数据库内存能力的数据。此外,大数据通常涉及收集关于客户、交易、网站访问、网络性能等的大量不同信息。企业必须存储所有这些数据--也许是在很长的时间内。
然而,大数据不仅仅是规模。大数据最重要的方面可以细分为六个V。
体积:庞大数量的数据。
速度:系统创建和传输数据的速度。
种类:有多少不同类型的数据。
真实性:数据的准确性和质量。
可变性:数据流如何变化和经常变化。
价值:对企业有益的数据。
二、大数据和业务
大数据满足了关键的业务需求并产生了价值,因为它为企业提供了关于其业务趋势、客户和竞争对手的关键信息。数据能够实现分析--通常以统计学术语表达结果--如趋势、可能性或分布;即,企业的决策者可能会发现有用的统计数据。相对于数据查询,大数据应用都是关于分析的。
大数据通常是非结构化的,不适合用有组织的列和行来定义数据模型。数据可以以音频和视觉的形式出现,如电话、即时信息、语音邮件、图片、视频、PDF、地理空间数据和幻灯片分享。数据也可以采取社交媒体帖子的形式。一批大数据的格式和来源可能需要特别的QA考虑。例如,为了测试从社交媒体收集的大数据,测试人员可能需要检查每个单独的社交媒体渠道,以确保显示的广告与用户购买行为相对应。
三、测试大数据应用
虽然测试人员一般不测试数据本身,但他们需要对数据库类型、数据架构以及如何访问该数据库有基本的了解,以成功测试大数据应用。测试人员不太可能使用实时数据,因此他们必须维护自己的测试环境版本的数据库和足够的数据,以使测试切合实际。
依靠分析输出的应用并不都是一样的。用户更有可能运行统计和敏感性分析,而不是为一个特定的结果查询数据库。这种可能性意味着正确的输出--答案--取决于分布、概率或时间序列趋势。测试人员不可能提前知道答案,因为它们往往是趋势和复杂的计算,而不是数据库中的简单字段。而且,一旦测试人员找到这些答案,它们显然不会是正确或不正确的,这为设计测试用例和分析结果的测试人员增加了另一层不确定性。
然而,如果测试人员把大数据测试看成是某种水生动物,就会有帮助。
四、如何测试ETL
大数据测试就像测试水母。由于数据量巨大,而且其非结构化的性质(就像水母是一个模糊的未定义的形状),测试过程很难定义。测试将需要自动化,虽然存在许多工具,但它们很复杂,需要技术能力来排除故障。
在最高层次上,大数据测试方法涉及功能和非功能部分。功能性测试验证了数据质量和处理数据。所有大数据测试策略都是基于提取、加载、转换(ELT)过程。大数据测试验证了来自源数据库的数据质量、数据结构转换或流程以及加载到数据仓库的数据。
ELT测试有三个阶段。
数据暂存
MapReduce验证
输出验证
数据暂存是通过比较来自源系统的数据和暂存位置的数据来验证的。
下一个阶段是MapReduce验证,或者说是数据转换的验证。MapReduce是非结构化数据的编程模型,Hadoop的实现在测试界最常用。这种测试确保应用程序用来聚合和隔离数据的业务规则正常工作。
最后的ELT阶段是输出验证阶段,来自MapReduce的输出文件已经准备好移动到数据仓库。当数据到达这个阶段时,数据的完整性和转换是完整和正确的。
数据加载是负载--即,数据如何进入应用程序。这个组件的性能测试应该集中在该过程的压力和负载测试上。这种测试还应该检查应用程序是否有效地处理查询和消息。
评估数据处理的性能是整个测试的关键。验证MapReduce作业的速度,并考虑建立一个数据档案来测试整个端到端的过程。
对用于处理大数据的分析方法应进行性能测试。这就是验证算法和吞吐量的地方。
最后,确保包括提交日志的大小、并发性、缓存和超时在内的参数被纳入性能测试策略。
五、大数据性能测试的挑战
与功能测试一样,大数据的数量和种类--特别是其非结构化的性质--造成了与性能测试相关的潜在问题。当这些问题与大数据处理的速度和高速结合在一起时,它为测试人员需要注意的众多问题打开了大门。
但是,正是这些考虑使得性能测试变得更加重要。测试人员应验证负载、响应时间、网络带宽、内存容量和其他分析组件,因为由于大数据的巨大规模、数量和速度,这些领域中的任何问题都会导致问题。
数据处理由三个活动组成:提取、转换和加载。性能测试策略必须解决这些活动中的每一项,以及端到端的数据流。在高层次上,大数据的性能测试的主要组成部分是提取、处理和分析。
六、相关工具
许多类型的工具支持大数据应用,包括用于存储、处理和查询的工具。以下是几个常用的选项。
Hadoop分布式文件系统在多台机器上存储数据,而HadoopMapReduce为查询提供并行处理。另外,Apache发布了HadoopOzone,这是一个用于Hadoop的可扩展分布式对象存储。
另一个Apache的产品是Hive,一个开源的数据仓库系统,允许数据科学家和开发人员用SQL类型的语言进行查询。PigLatin,一种为ApachePig编写的查询语言,帮助团队分析大型数据集。它可以处理复杂的数据结构和NoSQL,通常用于查询非结构化数据。
从大数据分析的角度来看,一些最强大的工具是Tableau、ZohoAnalytics和Splunk。Tableau提供了一个可以混合多个数据点的引擎,并且不需要用户知道编码来创建数据查询。ZohoAnalytics是用户友好型的,并提供各种各样的详细报告。Splunk最重要的特点是其可扩展性;它每天可以处理多达TB的数据。
NoSQL数据库--如MongoDB和Couchbase--的成熟使得分析的大数据挖掘更加有效。专门的数据库可以满足特定的用途,如用于高性能的内存数据库和用于数据长期趋势的时间序列数据库。
测试人员在测试大数据设置时应抛开测试案例的惯例。测试人员不应该寻找一个具体的、已知的答案,而应该寻找一个统计结果,所以测试用例必须反映这一点。例如,如果你测试一个零售网站收集的大数据,你必须设计测试用例,让团队从所有关于客户、他们的搜索、添加到购物车的产品、放弃和购买历史的信息中推断出购买潜力。
最后,测试人员不应该以其正确性来评估测试结果,因为没有简单的方法来确定这一点。你可能要把问题分成小块,从每块中分析测试。使用技术能力和解决问题的创造力来确定如何解释测试结果。
七、测试人员的定位
作为测试人员,我们常常对数据有一种爱恨交加的关系。处理数据是我们的应用程序存在的主要原因,没有数据,我们就不能测试。数据往往是测试问题的根源;我们并不总是有我们需要的数据,这导致测试用例受阻,而缺陷被返回为"数据问题"。
在过去的几年里,数据已经成倍增长,并继续增长。我们开始用兆字节和千兆字节进行测试,随后是兆字节和千兆字节,现在艾兆字节、泽兆字节和尤兆字节已经加入了数据领域。欢迎来到大数据测试的勇敢新世界。