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