離線數倉測試

絲瓜呆呆發表於2021-12-23

一.文件編寫目的

為了指導和規範大資料測試人員對離線數倉的測試方法,減少因為資料測試不夠嚴格,導致後期資料應用出現偏差和錯誤的情況。特別關注下後面的測試總結,是為了減少漏測,新增常見核心測試點,希望能夠指導離線數倉測試人員。

二.大資料測試型別

1.功能測試

通常是資料完整性測試,資料一致性測試,資料準確性測試,資料及時性測試,資料約束檢查,資料儲存檢查,SQL檔案檢查,資料處理邏輯驗證,排程任務檢查

a)資料約束檢查

檢查資料型別,資料長度,索引和主鍵等是否符合要求,檢查目標表的約束條件是否滿足設計預期。

b)資料儲存檢查

c)SQL 指令碼檔案檢查

  • 開發規範檢查  ---這塊現在沒有嚴格要求,主要是檢查HiveQL註釋,欄位,表名,中間表,“髒”資料處理,join操作等
  • SQl語法檢查--檢查SQL連線方式,函式,聚合和關鍵字的使用是否正確,確認union(去重)和union all(不去重) 

 

d)資料處理邏輯驗證

  • 驗證過程是否符合業務邏輯,運算子和函式的使用是否正確。
  • 對異常值,“髒”資料,極值,特殊資料(0值,負數等)的 處理是否符合預期。
  • 欄位型別與實際資料是否一致,主鍵構成是否合理
  • 去重記錄,是否按照去重規則規則去重處理
  • 資料的輸入輸出是否符合規定格式

e)排程任務檢查

  • 依賴的任務是否配置合理
  • 任務依賴層次是否合理
  • 任務是否在規定時間內完成
  • 任務排程時間設定是否合理

 

 

 

 

 

 

效能測試

 

 

 

 

效能測試結果

場景編號
併發執行緒
資料量
執行時間/s
QPS
GC
Gc Time/ms
95%延時/ms
1 1 100萬條插入資料 753        
2 16 100萬條插入資料 70        
3 50 100萬條插入資料 43        
4 100 100萬條插入資料 39        
5 200 100萬條插入資料 39        
6 16 50萬條讀取資料,50萬條更新資料 95        
7 50 50萬條讀取資料,50萬條更新資料 68        

三.離線數倉測試流程

分析業務和需求->制定測試方案和測試計劃->設計測試用例和準備測試資料->測試執行→生成測試報告並分析結果

(1)分析業務和需求

在澄清會上就要理解業務和需求

(2)制定測試方案和測試計劃

參與技術評審,瞭解技術架構設計,模組設計和資料模型設計等,並根據不同業務場景,進行專案排期

(3)設計測試用例和準備測試資料

測試用例設計

測試點
測試用例
源資料和目標資料驗證
  • 對照相應的對映表驗證源表和目標表的結構
  • 驗證源資料型別和目標資料型別是否相同
  • 驗證後設資料和目標資料的長度
  • 對照對映文件驗證列名
資料一致性驗證 檢查完整性約束是否正確使用
資料完整性驗證
  • 確保按預期將資料從源傳輸到目標
  • 比較源和目標的記錄計數
  • 檢查資料是否在目標表的列中有被截斷現象
  • 檢查被拒絕的記錄
  • 檢查邊界值
  • 檢查載入資料的唯一鍵屬性
約束驗證 驗證是否按預期為特定表定義了約束
資料正確性驗證

檢查資料是否已記錄或拼寫是否正確

檢查NULL,以及

資料轉換驗證  

造數

  • 業務上根據圖形使用者介面構造資料
  • 批量資料生成工具構造資料
  • 通過資料庫生成資料
  • 真實業務資料脫敏後匯入測試環境
  • 基於中介軟體構造資料

(4)測試執行

(5)生成測試報告並分析結果

 

三.測試總結

1.典型問題

a)資料質量

我們需要關注資料本身的質量問題,以及資料處理過程中各種處理方式和結果是否滿足預期,是否與邏輯不相符,是否影響後續業務的使用等問題,常見如下:

  • 資料記錄不唯一
  • 資料處理過濾條件不正確(特別注意狀態和是否過濾刪除)
  • 處理前後的資料不一致或有部分資料丟失(一般是關聯的資料型別不同,關聯有問題)
  • 資料流轉過程中NULL值被自動替換的問題。
  • 處理前後的資料列順序錯誤
  • 資料的約束關係不正確

現在上了資料質量平臺,可以用這個快速發現問題。

b)資料SQL問題

看程式碼中的source中的scripts對應表的SQL

  • SQL未對異常資料進行處理(比如空資料的處理)
  • 左右連線使用不正確(實時就發現join和left join使用不恰當)
  • 資料庫索引問題(影響資料庫的查詢速度)
  • SQL函式使用不當

c)資料傾斜的問題

d)大資料分佈測試與大資料對比測試

測試型別 常見核心測試點 專案開發型別
新增表 新增欄位 修改舊欄位 修改表邏輯
大資料分佈測試 表級測試-總資料量    
表級測試-是否存在重複資料    
表級測試-主鍵唯一性    
表級測試-空值量    
表級測試-空值率    
表級測試-去重資料量    
表級測試-有效資料量    
大資料對比測試 表級測試-總資料量對比    
表級測試-全量資料對比    
欄位級測試-去重資料量對比    
欄位級測試-統計類指標對比    

e)資料倉儲分層測試重點

資料倉儲層級
測試目標
測試範圍
測試重點
ods 資料完整性,資料正確性 表,欄位

1)表命名規範檢查

2)欄位資訊檢查

3)資料質量檢查(空值,零值,主鍵唯一性和欄位值域

4)資料完整性檢查

dwd 資料完整性,資料正確性和資料清洗邏輯 表,欄位

1)表命名規範檢查

2)欄位資訊檢查

3)資料質量檢查(空值,零值,主鍵唯一性和欄位值域

4)資料完整性檢查

5)資料清洗邏輯檢查(包括資料填充,噪聲資料去除等)

dws 業務邏輯性 表,重點欄位

1)表命名規範檢查

2)欄位資訊檢查

3)指標計算,勾稽(內在邏輯對應關係)邏輯檢查

ads 業務邏輯性 表,重點欄位

1)表命名規範檢查

2)欄位資訊檢查

3)指標計算,勾稽(內在邏輯對應關係)邏輯檢查

相關文章