一.文件編寫目的
為了指導和規範大資料測試人員對離線數倉的測試方法,減少因為資料測試不夠嚴格,導致後期資料應用出現偏差和錯誤的情況。特別關注下後面的測試總結,是為了減少漏測,新增常見核心測試點,希望能夠指導離線數倉測試人員。
二.大資料測試型別
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)指標計算,勾稽(內在邏輯對應關係)邏輯檢查 |