大數(shù)據(jù)測試的簡要指南:概念、策略、挑戰(zhàn)、工具和好處

51CTO
編譯
總的說來,大數(shù)據(jù)測試是對大數(shù)據(jù)應用程序的數(shù)據(jù)質量進行檢測的過程。由于我們難以使用傳統(tǒng)計算技術來處理大型數(shù)據(jù)集合,因此傳統(tǒng)的數(shù)據(jù)測試方法不適合被實施到大數(shù)據(jù)上。為此,我們需要考慮的大數(shù)據(jù)測試策略應包括:大數(shù)據(jù)測試的基本技術(例如Apache的Hadoop)、方法、以及自動化工具。

不知您是否還記得,在互聯(lián)網(wǎng)的初期,數(shù)據(jù)往往是通過使用簡單的數(shù)據(jù)文件來保存的。后來,隨著數(shù)據(jù)復雜性的增加,數(shù)據(jù)庫管理系統(tǒng)應運而生。近年來,結構化和非結構化類型的數(shù)據(jù)都得到了巨大的發(fā)展,我們將它們統(tǒng)稱為“大數(shù)據(jù)”。如今,隨著大數(shù)據(jù)應用的蓬勃發(fā)展,針對數(shù)據(jù)的處理技術也得到了不斷迭代。

為了保證大數(shù)據(jù)的質量,我們顯然需要對大體量的數(shù)據(jù)進行測試。本文將通過簡要指南的形式,引導您全面了解大數(shù)據(jù)測試的相關概念、策略、挑戰(zhàn)、好處以及相關測試工具。

什么是大數(shù)據(jù)軟件測試?

總的說來,大數(shù)據(jù)測試是對大數(shù)據(jù)應用程序的數(shù)據(jù)質量進行檢測的過程。由于我們難以使用傳統(tǒng)計算技術來處理大型數(shù)據(jù)集合,因此傳統(tǒng)的數(shù)據(jù)測試方法不適合被實施到大數(shù)據(jù)上。為此,我們需要考慮的大數(shù)據(jù)測試策略應包括:大數(shù)據(jù)測試的基本技術(例如Apache的Hadoop)、方法、以及自動化工具。

大數(shù)據(jù)測試的策略

首先,我們來看針對大數(shù)據(jù)質量檢測的策略,其中有著與傳統(tǒng)測試相似的地方:

功能測試(Functional Testing):前端應用測試能夠為數(shù)據(jù)的驗證提供便利。例如,我們可以將前端應用程序所產生的實際結果,與預期的結果進行比較,以深入了解目標應用框架、及其各個組件。

性能測試(Performance Testing):大數(shù)據(jù)的自動化,能夠方便我們在不同的條件下測試目標應用的性能。例如,我們通過使用不同種類和數(shù)量的數(shù)據(jù),測試應用程序,進而確保所涉及到的組件的確能夠為大數(shù)據(jù)集合,提供有效的存儲、處理、以及檢索功能。

數(shù)據(jù)提取測試(Data Ingestion Testing):通過測試性地提取數(shù)據(jù),我們可以驗證并確保所有的數(shù)據(jù),均能在大數(shù)據(jù)應用中被正確地提取和加載。

數(shù)據(jù)處理測試(Data Processing Testing):在針對大數(shù)據(jù)的處理策略上,我們需要運用數(shù)據(jù)自動化工具,重點關注數(shù)據(jù)的獲取與處理過程,通過比較輸出文件和輸入文件,來驗證業(yè)務邏輯是否能夠被正確地實現(xiàn)。

數(shù)據(jù)存儲測試(Data Storage Testing):借助大數(shù)據(jù)自動化測試工具,QA測試人員可以通過將輸出數(shù)據(jù)與數(shù)據(jù)庫中的數(shù)據(jù)進行比較,來驗證輸出數(shù)據(jù)是否已正確地被加載到了數(shù)據(jù)庫中。

數(shù)據(jù)遷移測試(Data Migration Testing):每當應用程序被遷移到其他服務器,或發(fā)生任何技術變更時,我們都需要通過軟件測試,來驗證數(shù)據(jù)從舊的傳統(tǒng)系統(tǒng),被遷移到新系統(tǒng)的過程中,所經(jīng)歷的停機時間最少,而且不會造成任何數(shù)據(jù)丟失。

大數(shù)據(jù)測試的挑戰(zhàn)

大數(shù)據(jù)的多樣性主要體現(xiàn)在那些非結構化的數(shù)據(jù)上。鑒于目前在大數(shù)據(jù)應用場景中被采用和實施工具尚不成熟,我們在測試過程中,可能會遇到各種挑戰(zhàn)。下面我們來深入討論大數(shù)據(jù)測試的各項潛在問題和對應的解決方案。

數(shù)據(jù)的多樣性和不完整性

問題:如今許多企業(yè)根據(jù)日常的業(yè)務所需,存儲了數(shù)十億字節(jié)的數(shù)據(jù)。測試人員必須審核這些海量數(shù)據(jù),以確認它們的準確性和與業(yè)務的相關性。顯然,即使企業(yè)擁有數(shù)百名QA測試人員,也無法通過手動測試的方式,來處理這種量級的數(shù)據(jù)。

解決方案:我們很自然地會想到采用大數(shù)據(jù)自動化工具,去檢測該體量數(shù)據(jù)的有效性。通過自動化工具,QA工程師只需為大數(shù)據(jù)應用程序創(chuàng)建和執(zhí)行自動化測試用例,便可實現(xiàn)對數(shù)據(jù)的反復與深度測試。

高度擴展性

問題:隨著業(yè)務訪問量的顯著增加,大數(shù)據(jù)應用程序的后端數(shù)據(jù)庫,可能會在可訪問性、處理能力、甚至是網(wǎng)絡連接上,受到嚴重的影響。即使是那些針對處理海量數(shù)據(jù)而開發(fā)的分布式應用,也可能會因為受到拒絕服務(DoS)攻擊或CC(Challenge Collapsar)攻擊,而無法處理正常的業(yè)務請求。

解決方案:我們通??梢圆扇∪缦聝煞N方式,來設計數(shù)據(jù)測試的方法:

集群技術:可以在集群的所有節(jié)點之間均勻地分配大量的數(shù)據(jù)。也就是說,大數(shù)據(jù)文件可以被輕松地拆分為不同的數(shù)據(jù)塊,并且存儲在集群中的不同節(jié)點上。這種復制文件塊、并將其存儲在不同的節(jié)點處的方式,大幅減少了應用對于主機的依賴。

數(shù)據(jù)分區(qū):這種大數(shù)據(jù)自動化的方法不但簡單易行,而且可以讓QA測試人員執(zhí)行CPU級別的并行處理。

測試數(shù)據(jù)管理

問題:自動化工具往往只能從通用的層面上,針對大數(shù)據(jù)應用場景,實現(xiàn)數(shù)據(jù)的遷移、處理和存儲測試。如果QA測試人員并不理解待測的業(yè)務、組件和數(shù)據(jù),那么他們將很難得到有價值的測試結果和洞見。

解決方案:首先,QA團隊應當與市場營銷和開發(fā)團隊進行協(xié)調,以了解從不同源頭提取、過濾數(shù)據(jù),以及預處理和后期處理算法的過程。在此基礎上,他們可以通過熟悉大數(shù)據(jù)自動化工具、和指定待運行的測試用例,以便合理地管理好各種測試數(shù)據(jù)。

優(yōu)秀大數(shù)據(jù)測試工具

常言道:工欲善其事,必先利其器。只有用到了強大的測試工具,QA測試人員才能提高大數(shù)據(jù)檢測的效率。下面我們將給出幾款目前公認比較實用的大數(shù)據(jù)測試工具:

Hadoop

大多數(shù)據(jù)科學家都認為:沒有開源框架的技術棧是不完整的。那么作為開源框架的Hadoop,不但可以存儲大量各種類型的數(shù)據(jù),而且具有分布式處理海量任務的能力。當然,QA工程師在采用Hadoop進行大數(shù)據(jù)性能測試時,應事先具備一定的Java知識,具體方面請參見--https://blog.qasource.com/big-data-and-hadoop-performance-testing-perfcast-spring-2019。

HPCC

高性能計算集群(High-Performance Computing Cluster,HPCC)是免費且完整的大數(shù)據(jù)應用解決方案。通過提供具有高度可擴展性的超級計算平臺,HPCC不但能夠提供高性能的架構,而且支持測試中的數(shù)據(jù)、管道、以及系統(tǒng)的并發(fā)性。當然,QA工程師在使用HPCC之前,應具備一定的C ++和ECL編程基礎。

Cloudera

Cloudera通常被稱為CDH(Cloudera Distribution for Hadoop)。它是企業(yè)級技術部署的理想測試工具。作為一個開源的工具,它提供了免費的平臺發(fā)行版,其中包括:Apache Hadoop、Apache Impala和Apache Spark。易于實施的Cloudera,不但具有較高的安全性和管理能力,而且能夠方便測試團隊收集,處理,管理和分發(fā)海量的數(shù)據(jù)。

Cassandra

Cassandra是一款免費的開源工具。憑借著高性能的分布式數(shù)據(jù)庫,它可以處理商用服務器上的海量數(shù)據(jù),因此常被業(yè)界許多大型公司用來進行大數(shù)據(jù)的測試。而作為最可靠的大數(shù)據(jù)測試工具之一,Cassandra提供了自動化復制、線性可擴展性、無單點故障等服務。

Storm

作為免費的開源測試工具,Storm支持對于非結構化數(shù)據(jù)集的實時處理,并且能夠與任何編程語言相兼容。Storm通過可靠的擴展性和防錯能力,來準確地處理任何級別的數(shù)據(jù)。目前,這款跨平臺工具提供了包括日志處理、實時分析、機器學習、以及持續(xù)計算等方面的多種用例。

大數(shù)據(jù)測試的好處

說到底,對于大數(shù)據(jù)的測試,就是要讓QA人員通過發(fā)現(xiàn)、定位從不同來源和渠道收集來的數(shù)據(jù),以確定應用程序的設定功能可以按照預期運行,驗證數(shù)據(jù)的完整性與準確性,并在此基礎上著手對應用程序進行必要的迭代和改進。具體而言,大數(shù)據(jù)測試能夠為開發(fā)團隊帶來如下好處:

數(shù)據(jù)的準確性:對于企業(yè)而言,無論是業(yè)務計劃,還是預測和決策,都需要基于準確的數(shù)據(jù)。而在大數(shù)據(jù)應用中,驗證數(shù)據(jù)的正確性就顯得尤為重要。我們需要在驗證的過程中注意如下四個方面:

在數(shù)據(jù)注入過程中不會出現(xiàn)錯誤

將完整且正確的數(shù)據(jù)加載到大數(shù)據(jù)框架中

基于業(yè)務設計的邏輯,能夠讓數(shù)據(jù)的基本驗證功能正常運行

根據(jù)業(yè)務需求,各種數(shù)據(jù)訪問工具能夠獲取正確的輸出數(shù)據(jù)

具有成本效益的存儲:在每個大數(shù)據(jù)應用的背后,都有著多臺計算主機。它們可以從不同服務器處,將數(shù)據(jù)注入并存儲到大數(shù)據(jù)的應用框架中。顯然,將逐個應用類型的數(shù)據(jù)進行單獨驗證和存儲,是非常不經(jīng)濟實惠的。因此,我們可以將其配置為根據(jù)諸如:數(shù)據(jù)復制因子和數(shù)據(jù)塊大小等條件,全面驗證已注入的數(shù)據(jù),是否能夠按照規(guī)則被正確地存儲到不同節(jié)點上。

如您所知,那些結構或格式不正確的數(shù)據(jù),往往會消耗更多的存儲空間。因此,我們一旦完成了數(shù)據(jù)的測試和構造,其存儲空間的占有率便會大幅減少,進而最終為企業(yè)產生成本效益。

有效的決策和業(yè)務策略:準確的數(shù)據(jù)往往是關鍵業(yè)務的決策基礎。它們不但有助于分析各類潛在的風險,而且能夠確保只注入那些有助于決策分析、并產生明智的業(yè)務決策的數(shù)據(jù)。

在正確的時間提供正確的數(shù)據(jù):大數(shù)據(jù)框架必然包含多個組件。任何組件的配置不當,都可能導致數(shù)據(jù)在加載或處理中引起應用性能的下降。與此同時,即使數(shù)據(jù)的準確性得到了保障,如果無法在正確的時間提供可用的數(shù)據(jù),這對于應用服務來說同樣是惘然。可見,大數(shù)據(jù)測試就是要測試應用在不同的數(shù)據(jù)類型和負載體量下,能夠快速地處理并交付出準確信息的能力。

·提高利潤與滿意度:那些難以確定的錯誤原因和位置,往往會成為企業(yè)大數(shù)據(jù)應用的主要漏洞和缺陷。而通過深入的測試,我們能夠有效地將有用的數(shù)據(jù)與結構不良的無用數(shù)據(jù)相互分離,在增強客戶使用體驗的同時,提高業(yè)務的營收,以及優(yōu)化整個業(yè)務的決策流程。

原文標題:A Complete Guide to Big Data Testing,作者:Vakul gotra

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論