不知您是否还记得,在互联网的初期,数据往往是通过使用简单的数据文件来保存的。后来,随着数据复杂性的增加,数据库管理系统应运而生。近年来,结构化和非结构化类型的数据都得到了巨大的发展,我们将它们统称为“大数据”。如今,随着大数据应用的蓬勃发展,针对数据的处理技术也得到了不断迭代。
为了保证大数据的质量,我们显然需要对大体量的数据进行测试。本文将通过简要指南的形式,引导您全面了解大数据测试的相关概念、策略、挑战、好处以及相关测试工具。
什么是大数据软件测试?
总的说来,大数据测试是对大数据应用程序的数据质量进行检测的过程。由于我们难以使用传统计算技术来处理大型数据集合,因此传统的数据测试方法不适合被实施到大数据上。为此,我们需要考虑的大数据测试策略应包括:大数据测试的基本技术(例如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知识。
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人员通过发现、定位从不同来源和渠道收集来的数据,以确定应用程序的设定功能可以按照预期运行,验证数据的完整性与准确性,并在此基础上着手对应用程序进行必要的迭代和改进。具体而言,大数据测试能够为开发团队带来如下好处:
数据的准确性:对于企业而言,无论是业务计划,还是预测和决策,都需要基于准确的数据。而在大数据应用中,验证数据的正确性就显得尤为重要。我们需要在验证的过程中注意如下四个方面:在数据注入过程中不会出现错误将完整且正确的数据加载到大数据框架中 基于业务设计的逻辑,能够让数据的基本验证功能正常运行根据业务需求,各种数据访问工具能够获取正确的输出数据具有成本效益的存储:在每个大数据应用的背后,都有着多台计算主机。它们可以从不同服务器处,将数据注入并存储到大数据的应用框架中。显然,将逐个应用类型的数据进行单独验证和存储,是非常不经济实惠的。因此,我们可以将其配置为根据诸如:数据复制因子和数据块大小等条件,全面验证已注入的数据,是否能够按照规则被正确地存储到不同节点上。如您所知,那些结构或格式不正确的数据,往往会消耗更多的存储空间。因此,我们一旦完成了数据的测试和构造,其存储空间的占有率便会大幅减少,进而最终为企业产生成本效益。有效的决策和业务策略:准确的数据往往是关键业务的决策基础。它们不但有助于分析各类潜在的风险,而且能够确保只注入那些有助于决策分析、并产生明智的业务决策的数据。在正确的时间提供正确的数据:大数据框架必然包含多个组件。任何组件的配置不当,都可能导致数据在加载或处理中引起应用性能的下降。与此同时,即使数据的准确性得到了保障,如果无法在正确的时间提供可用的数据,这对于应用服务来说同样是惘然。可见,大数据测试就是要测试应用在不同的数据类型和负载体量下,能够快速地处理并交付出准确信息的能力。·提高利润与满意度:那些难以确定的错误原因和位置,往往会成为企业大数据应用的主要漏洞和缺陷。而通过深入的测试,我们能够有效地将有用的数据与结构不良的无用数据相互分离,在增强客户使用体验的同时,提高业务的营收,以及优化整个业务的决策流程。
举报/反馈

51CTO

1.1万获赞 9239粉丝
IT及互联网领域专业垂直技术媒体
北京无忧创想信息技术有限公司
关注
0
0
收藏
分享