新人應(yīng)該從哪幾個方面掌握大數(shù)據(jù)測試?
什么是大數(shù)據(jù)
大數(shù)據(jù)是指無法在一定時間范圍內(nèi)用傳統(tǒng)的計算機(jī)技術(shù)進(jìn)行處理的海量數(shù)據(jù)集。
對于大數(shù)據(jù)的測試則需要不同的工具、技術(shù)、框架來進(jìn)行處理。
大數(shù)據(jù)的體量大、多樣化和高速處理所涉及的數(shù)據(jù)生成、存儲、檢索和分析使得大數(shù)據(jù)工程師需要掌握極其高的技術(shù)功底。
需要你學(xué)習(xí)掌握更多的大數(shù)據(jù)技術(shù)、Hadoop、Mapreduce等等技術(shù)。
大數(shù)據(jù)測試策略
大數(shù)據(jù)應(yīng)用程序的測試更多的是去驗(yàn)證其數(shù)據(jù)處理而不是驗(yàn)證其單一的功能特色。
當(dāng)然在大數(shù)據(jù)測試時,功能測試和性能測試是同樣很關(guān)鍵的。
對于大數(shù)據(jù)測試工程師而言,如何高效正確的驗(yàn)證經(jīng)過大數(shù)據(jù)工具/框架成功處理過的至少百萬兆字節(jié)的數(shù)據(jù)將會是一個巨大的挑戰(zhàn)。
因?yàn)榇髷?shù)據(jù)高效的處理測試速度,它要求測軟件工程師具備高水平的測試技術(shù)才能應(yīng)對大數(shù)據(jù)測試。
我們來看下大數(shù)據(jù)處理的三個特性:
大批量
實(shí)時性
可交互
另外,數(shù)據(jù)質(zhì)量也同樣是大數(shù)據(jù)測試的一個重要維度。
因此在進(jìn)行應(yīng)用程序測試之前,必須確保數(shù)據(jù)質(zhì)量,并且考慮把數(shù)據(jù)質(zhì)量作為數(shù)據(jù)庫測試的一部分。涉及數(shù)據(jù)的各種特性的檢驗(yàn),例如一致性、準(zhǔn)確性、重復(fù)性、連貫性、有效性及完整性等等。
大數(shù)據(jù)應(yīng)用測試步驟
下面我們一起看看大數(shù)據(jù)應(yīng)用的測試過程是怎么樣的。

整體而言,大數(shù)據(jù)測試大體可以分為三大步驟:
步驟一,數(shù)據(jù)預(yù)處理驗(yàn)證
在進(jìn)行大數(shù)據(jù)測試時,首先要預(yù)hadoop前驗(yàn)證數(shù)據(jù)的準(zhǔn)確性等等。
我們數(shù)據(jù)來源可能是關(guān)系數(shù)據(jù)庫、日志系統(tǒng)、社交網(wǎng)絡(luò)等等,所以我們應(yīng)該確保數(shù)據(jù)能正確的加載到系統(tǒng)中
我們要驗(yàn)證加載的數(shù)據(jù)和源數(shù)據(jù)是一致的
我們要確保正確的提取和加載數(shù)據(jù)至hdfs中
步驟二,Map Reduce驗(yàn)證 在進(jìn)行大數(shù)據(jù)測試時,第二個關(guān)鍵步驟是“Map Reduce”驗(yàn)證。在本階段,我們主要驗(yàn)證每一個處理節(jié)點(diǎn)的業(yè)務(wù)邏輯是否正確,并驗(yàn)證在多個運(yùn)行后,確保:
Map Reduce過程工作正常
數(shù)據(jù)聚合、分離規(guī)則已經(jīng)實(shí)現(xiàn)
數(shù)據(jù)key-value關(guān)系已正確生成
驗(yàn)證經(jīng)過map reduce后數(shù)據(jù)的準(zhǔn)確性等特性
步驟三,結(jié)果驗(yàn)證 在本階段主要驗(yàn)證在經(jīng)過大數(shù)據(jù)工具/框架處理后,生成的最終數(shù)據(jù)的成果。
主要驗(yàn)證:
驗(yàn)證數(shù)據(jù)轉(zhuǎn)換規(guī)則是否正確應(yīng)用
驗(yàn)證數(shù)據(jù)的完整性和是否成功持久化到目標(biāo)系統(tǒng)
驗(yàn)證無數(shù)據(jù)損壞
架構(gòu)測試
Hadoop處理海量數(shù)據(jù)是非常的消耗資源的,良好的架構(gòu)是確保大數(shù)據(jù)項(xiàng)目成功的基礎(chǔ)。糟糕的涉及會導(dǎo)致性能急劇的下降,進(jìn)而使得系統(tǒng)無法滿足我們的需要,因此我們需要,或是說至少在Hadoop環(huán)境下進(jìn)行性能測試、故障恢復(fù)測試,以應(yīng)改進(jìn)效率和應(yīng)對可能的最糟糕的情況。
性能測試是一個復(fù)雜的工作,它貫穿整個測試周期,需要關(guān)注內(nèi)存、CPU、網(wǎng)絡(luò)等等指標(biāo)。
故障恢復(fù)測試則是驗(yàn)證數(shù)據(jù)處理過程中可能出現(xiàn)的故障,為做好意外的恢復(fù)做好相應(yīng)的應(yīng)對措施。
性能測試
大數(shù)據(jù)性能測試主要包含以下幾個部分:
數(shù)據(jù)提取、存儲效率
在本階段,我們主要驗(yàn)證大數(shù)據(jù)應(yīng)用從源數(shù)據(jù)中提取、加載數(shù)據(jù)的效率。
一是驗(yàn)證單位時間內(nèi)數(shù)據(jù)的提取、加 載效率。
二是驗(yàn)證數(shù)據(jù)持久化至mongodb等庫的效率等等
數(shù)據(jù)處理
在本階段,我們驗(yàn)證map reduce任務(wù)的執(zhí)行效率,重點(diǎn)關(guān)注的是數(shù)據(jù)處理的效率。當(dāng)然這個過程可能也會涉及到數(shù)據(jù)的持久化相關(guān)指標(biāo),例如存儲至HDFS讀寫效率等等,同樣也會涉及在內(nèi)存中處理效率,即我們的處理算法效率等等
子組件性能
大數(shù)據(jù)處理,一般都會需要綜合利用各種組件來輔助處理,所以我們也是需要關(guān)注這些輔助組件的性能
性能測試策略
大數(shù)據(jù)應(yīng)用性能測試涉及海量的結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)據(jù),與我們平時所面對的業(yè)務(wù)系統(tǒng)有所不同,所以我們需要針對大數(shù)據(jù)應(yīng)用制定特定的測試策略,以應(yīng)對海量的數(shù)據(jù)。

根據(jù)上圖性能測試執(zhí)行過程一般是這樣的:
在性能測試前需要先初始化大數(shù)據(jù)集群環(huán)境
梳理和設(shè)計大數(shù)據(jù)性能測試場景
準(zhǔn)備大數(shù)據(jù)性能測試腳本
執(zhí)行并分析測試結(jié)果(如果指標(biāo)異常,則調(diào)優(yōu)相應(yīng)的組件并重新測試)
優(yōu)化配置
性能測試基礎(chǔ)準(zhǔn)備
在大數(shù)據(jù)性能測試時,需要準(zhǔn)備相關(guān)的基礎(chǔ)工作,如下:
數(shù)據(jù)準(zhǔn)備,我們需要在不同的節(jié)點(diǎn)準(zhǔn)備什么量級數(shù)據(jù)?
日志預(yù)估,在測試過程中,可能會生成多大的日志,日志的可能增量是什么樣的?
并發(fā),在測試時,可能會有多少線程并發(fā)讀和寫?
超時設(shè)置,應(yīng)對設(shè)置怎樣的連接超時?查詢超時?寫超時等等?
JVM參數(shù),如何設(shè)置最優(yōu)的jvm參數(shù),heap size、GC機(jī)制等等
Map Reduce,我們應(yīng)該選擇什么樣的sort、merge等算法?
消息隊(duì)列,消息隊(duì)列長度會怎么樣?等等
必備的測試環(huán)境
大數(shù)據(jù)測試不同于常規(guī)的應(yīng)用測試,你應(yīng)該具備以下一些基礎(chǔ)環(huán)境:
擁有足夠的存儲設(shè)備來存儲和處理大數(shù)據(jù)
擁有集群來做分布式節(jié)點(diǎn)和數(shù)據(jù)處理
至少擁有足夠的cpu、內(nèi)存來確保有高性能的處理基礎(chǔ)
大數(shù)據(jù)測試的挑戰(zhàn)
對于從事大數(shù)據(jù)測試的軟件測試工程師而言,與傳統(tǒng)的測試工作相對比,我們可能面臨的以下幾個可能的挑戰(zhàn):
自動化
自動化測試是從事大數(shù)據(jù)測試必備的技術(shù),但自動化測試工具可能并不具備處理測試過程所引發(fā)的異常的能力,意味著現(xiàn)有工具可能并不適用,編程能力將是更好的一種技能。虛擬化 當(dāng)前業(yè)內(nèi)大規(guī)模使用虛擬化技術(shù),但虛擬機(jī)的延遲有可能造成大數(shù)據(jù)實(shí)時測試處理的異常。
對大數(shù)據(jù)而言,管理影像信息也將是一個巨大的問題。
海量數(shù)據(jù)集
需要驗(yàn)證的數(shù)據(jù)量巨大,而且需要更快的處理速度
需要有效的自動化測試手段
需要盡可能的跨平臺
大數(shù)據(jù)性能測試的挑戰(zhàn)
對于從是大數(shù)據(jù)性能測試,與傳統(tǒng)性能測試相比較,我們要面臨是樣的挑戰(zhàn)呢,可能有以下幾個方面:
技術(shù)的多樣化,復(fù)雜化,面對不同的大數(shù)據(jù)解決方案,我們可能需要掌握不同的技術(shù)和定制不同的測試解決方案
無通用的工具,目前業(yè)界暫無通用的標(biāo)準(zhǔn)的大數(shù)據(jù)性能測試工具,這意味著我們需要根據(jù)大數(shù)據(jù)應(yīng)用解決方案技術(shù),要自行開發(fā)或整合多種相關(guān)工具才可能解決問題
測試環(huán)境復(fù)雜化,因?yàn)楹A康臄?shù)據(jù),我們所需要測試環(huán)境亦會更加復(fù)雜,所消耗的基礎(chǔ)成本會更高
監(jiān)控解決方案,目前有的監(jiān)控解決方案有限,但通過整合不同的監(jiān)控工具,大致可能擁有一套相對可行的監(jiān)控解決方案
診斷方案,由于大數(shù)據(jù)應(yīng)用所涉及的技術(shù)、環(huán)境復(fù)雜性,對于問題的診斷調(diào)優(yōu),我們需要根據(jù)實(shí)際情況來進(jìn)行開發(fā)定制
從上面幾個方面來看,從事大數(shù)據(jù)性能測試所要面臨的問題是相對復(fù)雜的,尤其對當(dāng)下國內(nèi)的測試工程師而言,要走的路還很長,很艱難。
小結(jié)
隨著大數(shù)據(jù)工程和數(shù)據(jù)分析逐步的進(jìn)入新的階段,大數(shù)據(jù)測試將成為必然,也必定成為未來的一個熱門的職業(yè)方向
大數(shù)據(jù)處理必須是批量的,實(shí)時的、可交互的
大數(shù)據(jù)應(yīng)用測試的三大階段:
數(shù)據(jù)驗(yàn)證
Map Reduce 驗(yàn)證
數(shù)據(jù)處理結(jié)果驗(yàn)證
架構(gòu)測試也是非常重要的一個測試類型,糟糕的架構(gòu)可能直接導(dǎo)致您的大數(shù)據(jù)項(xiàng)目的失敗
性能測試三大節(jié)點(diǎn):
數(shù)據(jù)提取、存儲效率
數(shù)據(jù)處理效率
子組件工作效率
大數(shù)據(jù)測試不同于傳統(tǒng)的測試,不僅僅是類型、策略的不同,工具等具體技術(shù)都會有區(qū)別
大數(shù)據(jù)因其復(fù)雜性,其測試所面臨的挑戰(zhàn)也會不同于傳統(tǒng)的測試
大數(shù)據(jù)性能測試將會是軟件測試工程師進(jìn)一步艱難攻克的目標(biāo)之一
注:本文參考的資料包括但不限于IBM、Microsoft、hadoop、spark、apache等等官方網(wǎng)站
