大資料測試--轉載自開源優測
什麼是大資料
大資料是指無法在一定時間範圍內用傳統的計算機技術進行處理的海量資料集。
對於大資料的測試則需要不同的工具、技術、框架來進行處理。
大資料的體量大、多樣化和高速處理所涉及的資料生成、儲存、檢索和分析使得大資料工程師需要掌握極其高的技術功底。
需要你學習掌握更多的大資料技術、Hadoop、Mapreduce等等技術。
大資料測試策略
大資料應用程式的測試更多的是去驗證其資料處理而不是驗證其單一的功能特色。
當然在大資料測試時,功能測試和效能測試是同樣很關鍵的。
對於大資料測試工程師而言,如何高效正確的驗證經過大資料工具/框架成功處理過的至少百萬兆位元組的資料將會是一個巨大的挑戰。
因為大資料高效的處理測試速度,它要求測軟體工程師具備高水平的測試技術才能應對大資料測試。
我們來看下大資料處理的三個特性:
- 大批量
- 實時性
- 可互動
另外,資料質量也同樣是大資料測試的一個重要維度。
因此在進行應用程式測試之前,必須確保資料質量,並且考慮把資料質量作為資料庫測試的一部分。涉及資料的各種特性的檢驗,例如一致性、準確性、重複性、連貫性、有效性及完整性等等。
大資料應用測試步驟
下面我們一起看看大資料應用的測試過程是怎麼樣的。
整體而言,大資料測試大體可以分為三大步驟:
- 步驟一,資料預處理驗證
在進行大資料測試時,首先要預hadoop前驗證資料的準確性等等。
- 我們資料來源可能是關係資料庫、日誌系統、社交網路等等,所以我們應該確保資料能正確的載入到系統中
- 我們要驗證載入的資料和源資料是一致的
- 我們要確保正確的提取和載入資料至hdfs中
- 步驟二,Map Reduce驗證 在進行大資料測試時,第二個關鍵步驟是“Map Reduce”驗證。在本階段,我們主要驗證每一個處理節點的業務邏輯是否正確,並驗證在多個執行後,確保:
- Map Reduce過程工作正常
- 資料聚合、分離規則已經實現
- 資料key-value關係已正確生成
- 驗證經過map reduce後資料的準確性等特性
- 步驟三,結果驗證 在本階段主要驗證在經過大資料工具/框架處理後,生成的最終資料的成果。
主要驗證:
- 驗證資料轉換規則是否正確應用
- 驗證資料的完整性和是否成功持久化到目標系統
- 驗證無資料損壞
架構測試
Hadoop處理海量資料是非常的消耗資源的,良好的架構是確保大資料專案成功的基礎。糟糕的涉及會導致效能急劇的下降,進而使得系統無法滿足我們的需要,因此我們需要,或是說至少在Hadoop環境下進行效能測試、故障恢復測試,以應改進效率和應對可能的最糟糕的情況。
效能測試是一個複雜的工作,它貫穿整個測試周期,需要關注記憶體、CPU、網路等等指標。
故障恢復測試則是驗證資料處理過程中可能出現的故障,為做好意外的恢復做好相應的應對措施。
效能測試
大資料效能測試主要包含以下幾個部分:
- 資料提取、儲存效率
在本階段,我們主要驗證大資料應用從源資料中提取、載入資料的效率。
一是驗證單位時間內資料的提取、加 載效率。
二是驗證資料持久化至mongodb等庫的效率等等
- 資料處理
在本階段,我們驗證map reduce任務的執行效率,重點關注的是資料處理的效率。當然這個過程可能也會涉及到資料的持久化相關指標,例如儲存至HDFS讀寫效率等等,同樣也會涉及在記憶體中處理效率,即我們的處理演算法效率等等
- 子元件效能
大資料處理,一般都會需要綜合利用各種元件來輔助處理,所以我們也是需要關注這些輔助元件的效能
效能測試策略
大資料應用效能測試涉及海量的結構化和非結構化的資料,與我們平時所面對的業務系統有所不同,所以我們需要針對大資料應用制定特定的測試策略,以應對海量的資料。
據上圖效能測試執行過程一般是這樣的:
- 在效能測試前需要先初始化大資料叢集環境
- 梳理和設計大資料效能測試場景
- 準備大資料效能測試指令碼
- 執行並分析測試結果(如果指標異常,則調優相應的元件並重新測試)
- 優化配置
效能測試基礎準備
在大資料效能測試時,需要準備相關的基礎工作,如下:
- 資料準備,我們需要在不同的節點準備什麼量級資料?
- 日誌預估,在測試過程中,可能會生成多大的日誌,日誌的可能增量是什麼樣的?
- 併發,在測試時,可能會有多少執行緒併發讀和寫?
- 超時設定,應對設定怎樣的連線超時?查詢超時?寫超時等等?
- JVM引數,如何設定最優的jvm引數,heap size、GC機制等等
- Map Reduce,我們應該選擇什麼樣的sort、merge等演算法?
- 訊息佇列,訊息佇列長度會怎麼樣?等等
必備的測試環境
大資料測試不同於常規的應用測試,你應該具備以下一些基礎環境:
- 擁有足夠的儲存裝置來儲存和處理大資料
- 擁有叢集來做分散式節點和資料處理
- 至少擁有足夠的cpu、記憶體來確保有高效能的處理基礎
大資料測試的挑戰
對於從事大資料測試的軟體測試工程師而言,與傳統的測試工作相對比,我們可能面臨的以下幾個可能的挑戰:
- 自動化
自動化測試是從事大資料測試必備的技術,但自動化測試工具可能並不具備處理測試過程所引發的異常的能力,意味著現有工具可能並不適用,程式設計能力將是更好的一種技能。 - 虛擬化 當前業內大規模使用虛擬化技術,但虛擬機器的延遲有可能造成大資料實時測試處理的異常。
對大資料而言,管理影像資訊也將是一個巨大的問題。
- 海量資料集
- 需要驗證的資料量巨大,而且需要更快的處理速度
- 需要有效的自動化測試手段
- 需要儘可能的跨平臺
大資料效能測試的挑戰
對於從是大資料效能測試,與傳統效能測試相比較,我們要面臨是樣的挑戰呢,可能有以下幾個方面:
- 技術的多樣化,複雜化,面對不同的大資料解決方案,我們可能需要掌握不同的技術和定製不同的測試解決方案
- 無通用的工具,目前業界暫無通用的標準的大資料效能測試工具,這意味著我們需要根據大資料應用解決方案技術,要自行開發或整合多種相關工具才可能解決問題
- 測試環境複雜化,因為海量的資料,我們所需要測試環境亦會更加複雜,所消耗的基礎成本會更高
- 監控解決方案,目前有的監控解決方案有限,但通過整合不同的監控工具,大致可能擁有一套相對可行的監控解決方案
- 診斷方案,由於大資料應用所涉及的技術、環境複雜性,對於問題的診斷調優,我們需要根據實際情況來進行開發定製
從上面幾個方面來看,從事大資料效能測試所要面臨的問題是相對複雜的,尤其對當下國內的測試工程師而言,要走的路還很長,很艱難。
小結
- 隨著大資料工程和資料分析逐步的進入新的階段,大資料測試將成為必然,也必定成為未來的一個熱門的職業方向
- 大資料處理必須是批量的,實時的、可互動的
- 大資料應用測試的三大階段:
- 資料驗證
- Map Reduce 驗證
- 資料處理結果驗證
- 架構測試也是非常重要的一個測試型別,糟糕的架構可能直接導致您的大資料專案的失敗
- 效能測試三大節點:
- 資料提取、儲存效率
- 資料處理效率
- 子元件工作效率
- 大資料測試不同於傳統的測試,不僅僅是型別、策略的不同,工具等具體技術都會有區別
- 大資料因其複雜性,其測試所面臨的挑戰也會不同於傳統的測試
- 大資料效能測試將會是軟體測試工程師進一步艱難攻克的目標之一