前言
在個人看來,大數(shù)據(jù)測試可以歸為一個測試體系。因為它不僅要驗證正常的業(yè)務(wù)功能,還要針對大數(shù)據(jù)所使用的工具/框架進行測試,這需要大數(shù)據(jù)測試人員掌握大數(shù)據(jù)技術(shù),比如說Hadoop生態(tài)圈的技術(shù):Hadoop生態(tài)圈技術(shù)棧
大數(shù)據(jù)是什么
大數(shù)據(jù)是指那些數(shù)據(jù)量特別大、數(shù)據(jù)類別特別復(fù)雜的數(shù)據(jù)集,這種數(shù)據(jù)集不能用傳統(tǒng)的數(shù)據(jù)庫進行轉(zhuǎn)存、管理和處理。
大數(shù)據(jù)測試策略
1、基本功能測試
不管是什么樣的測試,首先要保證的就是基本功能的正確性。從黑盒層面來看,大數(shù)據(jù)測試可以看成三個步驟:

1、原始數(shù)據(jù)->大數(shù)據(jù)處理
這里要測試的是原始數(shù)據(jù)的正確性,比如數(shù)據(jù)來源是埋點,那么就需要保證埋點上報的正確性,也就是對埋點進行測試。
測試文檔可以是埋點測試文檔
2、大數(shù)據(jù)處理
這里要測試的是大數(shù)據(jù)對原始數(shù)據(jù)處理的正確性,大數(shù)據(jù)對原始數(shù)據(jù)處理完后,會把處理后的數(shù)據(jù)保存在一個/多個數(shù)據(jù)倉庫中(比如es),這時候可以通過查詢數(shù)據(jù)倉庫的數(shù)據(jù)來進行。
測試文檔可以是詳細設(shè)計文檔
3、前端展示
前端展示的數(shù)據(jù),有兩個可能性:
a.展示的數(shù)據(jù)直接來源于大數(shù)據(jù)(比如clickhouse)
b.展示的數(shù)據(jù)是經(jīng)過后端處理的
所以這里的測試,是需要根據(jù)具體的業(yè)務(wù)和實際的技術(shù)方案來進行
測試文檔可以是需求文檔
2、大數(shù)據(jù)處理步驟的測試

從上圖可以看出,大數(shù)據(jù)處理步驟大體上可以分成三個步驟:
1、原始數(shù)據(jù)進入大數(shù)據(jù)步驟
首先要確保原始數(shù)據(jù)在到達hdfs/kafka前的正確性
1.確保原始數(shù)據(jù)正確進入系統(tǒng)中
因為原始數(shù)據(jù)可能來源于埋點、關(guān)系型數(shù)據(jù)庫、日志系統(tǒng)、其它系統(tǒng)等地方,所以要首先保證原始數(shù)據(jù)能夠正確進入系統(tǒng),有可能在進入時候因為數(shù)據(jù)格式不匹配而報錯
2.確保加載進來的數(shù)據(jù)和原始數(shù)據(jù)是一樣的
當(dāng)原始數(shù)據(jù)進入系統(tǒng)后,需要看下加載進來的數(shù)據(jù)是否和原始數(shù)據(jù)一樣,或者說是否符合下一步所需的數(shù)據(jù)格式標(biāo)準(zhǔn)。
3.確保數(shù)據(jù)正確提取和加載到hdfs/kafka2、數(shù)據(jù)在計算框架中的處理(ETL)
當(dāng)文件存入HDFS之后就要通過MapReduce進行處理了。這個階段可能出現(xiàn)的問題包括但不限于編碼不對、節(jié)點配置錯誤、聚合不正確、輸出格式不對等問題。一般需要進行如下的測試:
1.MapReduce進程正常工作
2.數(shù)據(jù)處理完成,輸出文件正確
3.驗證map時生成的key-value是否正確
4.驗證reduce結(jié)束后聚合是否正確
5.輸出格式是否符合要求3、處理后的數(shù)據(jù)輸出階段
此階段主要是生成處理過的最終數(shù)據(jù)文件以及存放到數(shù)據(jù)倉庫。一般需要進行如下的測試:
1.檢查轉(zhuǎn)換規(guī)則被正確應(yīng)用
2.檢查數(shù)據(jù)加載到目標(biāo)系統(tǒng)中且完整
3.通過將目標(biāo)數(shù)據(jù)與HDFS文件系統(tǒng)數(shù)據(jù)進行比較來檢查沒有數(shù)據(jù)損壞
這些過程中,可以通過Hive得到分析報告來做進一步的驗證。
hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供簡單的sql查詢功能,可以將sql語句轉(zhuǎn)換為MapReduce任務(wù)進行運行。 其優(yōu)點是學(xué)習(xí)成本低,可以通過類SQL語句快速實現(xiàn)簡單的MapReduce統(tǒng)計,不必開發(fā)專門的MapReduce應(yīng)用,十分適合數(shù)據(jù)倉庫的統(tǒng)計分析。