大數據測試的簡要指南:概念、策略、挑戰、工具和好處
譯文【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人員通過發現、定位從不同來源和渠道收集來的數據,以確定應用程序的設定功能可以按照預期運行,驗證數據的完整性與準確性,并在此基礎上著手對應用程序進行必要的迭代和改進。具體而言,大數據測試能夠為開發團隊帶來如下好處:
- 數據的準確性:對于企業而言,無論是業務計劃,還是預測和決策,都需要基于準確的數據。而在大數據應用中,驗證數據的正確性就顯得尤為重要。我們需要在驗證的過程中注意如下四個方面:
- 在數據注入過程中不會出現錯誤
- 將完整且正確的數據加載到大數據框架中
- 基于業務設計的邏輯,能夠讓數據的基本驗證功能正常運行
- 根據業務需求,各種數據訪問工具能夠獲取正確的輸出數據
- 具有成本效益的存儲:在每個大數據應用的背后,都有著多臺計算主機。它們可以從不同服務器處,將數據注入并存儲到大數據的應用框架中。顯然,將逐個應用類型的數據進行單獨驗證和存儲,是非常不經濟實惠的。因此,我們可以將其配置為根據諸如:數據復制因子和數據塊大小等條件,全面驗證已注入的數據,是否能夠按照規則被正確地存儲到不同節點上。
- 如您所知,那些結構或格式不正確的數據,往往會消耗更多的存儲空間。因此,我們一旦完成了數據的測試和構造,其存儲空間的占有率便會大幅減少,進而最終為企業產生成本效益。
- 有效的決策和業務策略:準確的數據往往是關鍵業務的決策基礎。它們不但有助于分析各類潛在的風險,而且能夠確保只注入那些有助于決策分析、并產生明智的業務決策的數據。
- 在正確的時間提供正確的數據:大數據框架必然包含多個組件。任何組件的配置不當,都可能導致數據在加載或處理中引起應用性能的下降。與此同時,即使數據的準確性得到了保障,如果無法在正確的時間提供可用的數據,這對于應用服務來說同樣是惘然。可見,大數據測試就是要測試應用在不同的數據類型和負載體量下,能夠快速地處理并交付出準確信息的能力。
- ·提高利潤與滿意度:那些難以確定的錯誤原因和位置,往往會成為企業大數據應用的主要漏洞和缺陷。而通過深入的測試,我們能夠有效地將有用的數據與結構不良的無用數據相互分離,在增強客戶使用體驗的同時,提高業務的營收,以及優化整個業務的決策流程。
原文標題:A Complete Guide to Big Data Testing,作者:Vakul gotra
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】