大數據是指沒法在必定時間範圍內用傳統的計算機技術進行處理的海量數據集。html
對於大數據的測試則須要不一樣的工具、技術、框架來進行處理。算法
大數據的體量大、多樣化和高速處理所涉及的數據生成、存儲、檢索和分析使得大數據工程師須要掌握極其高的技術功底。mongodb
須要你學習掌握更多的大數據技術、Hadoop、Mapreduce等等技術。數據庫
大數據應用程序的測試更多的是去驗證其數據處理而不是驗證其單一的功能特點。編程
固然在大數據測試時,功能測試和性能測試是一樣很關鍵的。網絡
對於大數據測試工程師而言,如何高效正確的驗證通過大數據工具/框架成功處理過的至少百萬兆字節的數據將會是一個巨大的挑戰。架構
由於大數據高效的處理測試速度,它要求測軟件工程師具有高水平的測試技術才能應對大數據測試。併發
咱們來看下大數據處理的三個特性:框架
大批量jvm
實時性
可交互
另外,數據質量也一樣是大數據測試的一個重要維度。
所以在進行應用程序測試以前,必須確保數據質量,而且考慮把數據質量做爲數據庫測試的一部分。涉及數據的各類特性的檢驗,例如一致性、準確性、重複性、連貫性、有效性及完整性等等。
下面咱們一塊兒看看大數據應用的測試過程是怎麼樣的。
總體而言,大數據測試大致能夠分爲三大步驟:
步驟一,數據預處理驗證
在進行大數據測試時,首先要預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 驗證
數據處理結果驗證
架構測試也是很是重要的一個測試類型,糟糕的架構可能直接致使您的大數據項目的失敗
性能測試三大節點:
數據提取、存儲效率
數據處理效率
子組件工做效率
大數據測試不一樣於傳統的測試,不只僅是類型、策略的不一樣,工具等具體技術都會有區別
大數據因其複雜性,其測試所面臨的挑戰也會不一樣於傳統的測試
大數據性能測試將會是軟件測試工程師進一步艱難攻克的目標之一本文轉載:https://www.cnblogs.com/crstyl/articles/7277550.html