【51CTO.com快译】不知您是否还记得,在互联网的初期,数据往往是通过使用简单的数据文件来保存的。后来,随着数据复杂性的增加,数据库管理系统应运而生。近年来,结构化和非结构化类型的数据都得到了巨大的发展,我们将它们统称为“大数据”。如今,随着大数据应用的蓬勃发展,针对数据的处理技术也得到了不断迭代。

为了保证大数据的质量,我们显然需要对大体量的数据进行测试。本文将通过简要指南的形式,引导您全面了解大数据测试的相关概念、策略、挑战、好处以及相关测试工具。

什么是大数据软件测试?

总的说来,大数据测试是对大数据应用程序的数据质量进行检测的过程。由于我们难以使用传统计算技术来处理大型数据集合,因此传统的数据测试方法不适合被实施到大数据上。为此,我们需要考虑的大数据测试策略应包括:大数据测试的基本技术(例如Apache的Hadoop)、方法、以及自动化工具。

大数据测试的策略

首先,我们来看针对大数据质量检测的策略,其中有着与传统测试相似的地方:

  • 功能测试(Functional Testing):前端应用测试能够为数据的验证提供便利。例如,我们可以将前端应用程序所产生的实际结果,与预期的结果进行比较,以深入了解目标应用框架、及其各个组件。

  • 性能测试(Performance Testing):大数据的自动化,能够方便我们在不同的条件下测试目标应用的性能。例如,我们通过使用不同种类和数量的数据,测试应用程序,进而确保所涉及到的组件的确能够为大数据集合,提供有效的存储、处理、以及检索功能。

  • 数据提取测试(Data Ingestion Testing):通过测试性地提取数据,我们可以验证并确保所有的数据,均能在大数据应用中被正确地提取和加载。

  • 数据处理测试(Data Processing Testing):在针对大数据的处理策略上,我们需要运用数据自动化工具,重点关注数据的获取与处理过程,通过比较输出文件和输入文件,来验证业务逻辑是否能够被正确地实现。

  • 数据存储测试(Data Storage Testing):借助大数据自动化测试工具,QA测试人员可以通过将输出数据与数据库中的数据进行比较,来验证输出数据是否已正确地被加载到了数据库中。

  • 数据迁移测试(Data Migration Testing):每当应用程序被迁移到其他服务器,或发生任何技术变更时,我们都需要通过软件测试,来验证数据从旧的传统系统,被迁移到新系统的过程中,所经历的停机时间最少,而且不会造成任何数据丢失。

大数据测试的挑战

大数据的多样性主要体现在那些非结构化的数据上。鉴于目前在大数据应用场景中被采用和实施工具尚不成熟,我们在测试过程中,可能会遇到各种挑战。下面我们来深入讨论大数据测试的各项潜在问题和对应的解决方案。

数据的多样性和不完整性

问题:如今许多企业根据日常的业务所需,存储了数十亿字节的数据。测试人员必须审核这些海量数据,以确认它们的准确性和与业务的相关性。显然,即使企业拥有数百名QA测试人员,也无法通过手动测试的方式,来处理这种量级的数据。

解决方案:我们很自然地会想到采用大数据自动化工具,去检测该体量数据的有效性。通过自动化工具,QA工程师只需为大数据应用程序创建和执行自动化测试用例,便可实现对数据的反复与深度测试。

高度扩展性

问题:随着业务访问量的显著增加,大数据应用程序的后端数据库,可能会在可访问性、处理能力、甚至是网络连接上,受到严重的影响。即使是那些针对处理海量数据而开发的分布式应用,也可能会因为受到拒绝服务(DoS)攻击或CC(Challenge Collapsar)攻击,而无法处理正常的业务请求。

解决方案:我们通常可以采取如下两种方式,来设计数据测试的方法:

  • 集群技术:可以在集群的所有节点之间均匀地分配大量的数据。也就是说,大数据文件可以被轻松地拆分为不同的数据块,并且存储在集群中的不同节点上。这种复制文件块、并将其存储在不同的节点处的方式,大幅减少了应用对于主机的依赖。

  • 数据分区:这种大数据自动化的方法不但简单易行,而且可以让QA测试人员执行CPU级别的并行处理。

测试数据管理

问题:自动化工具往往只能从通用的层面上,针对大数据应用场景,实现数据的迁移、处理和存储测试。如果QA测试人员并不理解待测的业务、组件和数据,那么他们将很难得到有价值的测试结果和洞见。

解决方案:首先,QA团队应当与市场营销和开发团队进行协调,以了解从不同源头提取、过滤数据,以及预处理和后期处理算法的过程。在此基础上,他们可以通过熟悉大数据自动化工具、和指定待运行的测试用例,以便合理地管理好各种测试数据。

优秀大数据测试工具

常言道:工欲善其事,必先利其器。只有用到了强大的测试工具,QA测试人员才能提高大数据检测的效率。下面我们将给出几款目前公认比较实用的大数据测试工具:

Hadoop

大多数据科学家都认为:没有开源框架的技术栈是不完整的。那么作为开源框架的Hadoop,不但可以存储大量各种类型的数据,而且具有分布式处理海量任务的能力。当然,QA工程师在采用Hadoop进行大数据性能测试时,应事先具备一定的Java知识,具体方面请参见--https://blog.qasource.com/big-data-and-hadoop-performance-testing-perfcast-spring-2019。

HPCC

高性能计算集群(High-Performance Computing Cluster,HPCC)是免费且完整的大数据应用解决方案。通过提供具有高度可扩展性的超级计算平台,HPCC不但能够提供高性能的架构,而且支持测试中的数据、管道、以及系统的并发性。当然,QA工程师在使用HPCC之前,应具备一定的C ++和ECL编程基础。

Cloudera

Cloudera通常被称为CDH(Cloudera Distribution for Hadoop)。它是企业级技术部署的理想测试工具。作为一个开源的工具,它提供了免费的平台发行版,其中包括:Apache Hadoop、Apache Impala和Apache Spark。易于实施的Cloudera,不但具有较高的安全性和管理能力,而且能够方便测试团队收集,处理,管理和分发海量的数据。

Cassandra

Cassandra是一款免费的开源工具。凭借着高性能的分布式数据库,它可以处理商用服务器上的海量数据,因此常被业界许多大型公司用来进行大数据的测试。而作为最可靠的大数据测试工具之一,Cassandra提供了自动化复制、线性可扩展性、无单点故障等服务。

Storm

作为免费的开源测试工具,Storm支持对于非结构化数据集的实时处理,并且能够与任何编程语言相兼容。Storm通过可靠的扩展性和防错能力,来准确地处理任何级别的数据。目前,这款跨平台工具提供了包括日志处理、实时分析、机器学习、以及持续计算等方面的多种用例。

大数据测试的好处

说到底,对于大数据的测试,就是要让QA人员通过发现、定位从不同来源和渠道收集来的数据,以确定应用程序的设定功能可以按照预期运行,验证数据的完整性与准确性,并在此基础上着手对应用程序进行必要的迭代和改进。具体而言,大数据测试能够为开发团队带来如下好处:

  • 数据的准确性:对于企业而言,无论是业务计划,还是预测和决策,都需要基于准确的数据。而在大数据应用中,验证数据的正确性就显得尤为重要。我们需要在验证的过程中注意如下四个方面:

  1. 在数据注入过程中不会出现错误

  2. 将完整且正确的数据加载到大数据框架中

  3.  基于业务设计的逻辑,能够让数据的基本验证功能正常运行

  4. 根据业务需求,各种数据访问工具能够获取正确的输出数据

  • 具有成本效益的存储:在每个大数据应用的背后,都有着多台计算主机。它们可以从不同服务器处,将数据注入并存储到大数据的应用框架中。显然,将逐个应用类型的数据进行单独验证和存储,是非常不经济实惠的。因此,我们可以将其配置为根据诸如:数据复制因子和数据块大小等条件,全面验证已注入的数据,是否能够按照规则被正确地存储到不同节点上。

  • 如您所知,那些结构或格式不正确的数据,往往会消耗更多的存储空间。因此,我们一旦完成了数据的测试和构造,其存储空间的占有率便会大幅减少,进而最终为企业产生成本效益。

  • 有效的决策和业务策略:准确的数据往往是关键业务的决策基础。它们不但有助于分析各类潜在的风险,而且能够确保只注入那些有助于决策分析、并产生明智的业务决策的数据。

  • 在正确的时间提供正确的数据:大数据框架必然包含多个组件。任何组件的配置不当,都可能导致数据在加载或处理中引起应用性能的下降。与此同时,即使数据的准确性得到了保障,如果无法在正确的时间提供可用的数据,这对于应用服务来说同样是惘然。可见,大数据测试就是要测试应用在不同的数据类型和负载体量下,能够快速地处理并交付出准确信息的能力。

  • ·提高利润与满意度:那些难以确定的错误原因和位置,往往会成为企业大数据应用的主要漏洞和缺陷。而通过深入的测试,我们能够有效地将有用的数据与结构不良的无用数据相互分离,在增强客户使用体验的同时,提高业务的营收,以及优化整个业务的决策流程。

原文标题:A Complete Guide to Big Data Testing,作者:Vakul gotra

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】