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