ETL測試或資料倉儲測試入門

weixin_34402408發表於2017-08-08

概述

在我們學習ETL測試之前,先了解下business intelligence(即BI)和資料倉儲。

什麼是BI?

BI(Business Intelligence)即商務智慧,它是一套完整的解決方案,用來將企業中現有的資料(原始資料或商業資料或業務資料等)進行有效的整合,快速準確地提供報表並提出決策依據,幫助企業做出明智的業務經營決策。

原始資料記錄了企業日常事務,例如與客戶互動的資訊、財務資訊,員工相關記錄等等。

這些資料可以用於彙報、分析、挖掘、資料質量、互動、預測分析等等

什麼是資料倉儲

資料倉儲是為查詢和分析而不是事務處理而設計的資料庫。

資料倉儲是通過整合不同的異構資料來源而構建起來的。

資料倉儲的存在使得企業或組織能夠將整合、分析資料工作與事務處理工作分離。

資料能夠被轉換、整合為更高質量的資訊來滿足企業級使用者不同層次的需求。

什麼是ETL

ETL是Extract-Transform-Load的縮寫(提取-轉換-載入),是一個完整的從源系統提取資料,進行轉換處理,載入至資料倉儲的過程。

我們從聯機事務資料庫中提取資料,進行轉換處理,匹配資料倉儲模式,然後載入至資料倉儲資料庫中。

在通常情況下,大多數的資料倉儲要整合非聯機事務資料庫系統的資料,例如來源文字檔案、日誌、電子表格等等。

下面我們一起看看ETL是怎麼工作的。

例如一個公司,有關於其不同部門的資料記錄,銷售、市場、物流等等。每個部門所處理的客戶資訊是獨立的,而且儲存的資料也是相對不同的,假如銷售團隊有儲存客戶的姓名,而物流團隊儲存的是使用者 的ID。

現在我們想要去檢查客戶的歷史資料,並且想要了解他/她在不同的營銷活動中購買的不同產品是什麼。這將是一項非常枯燥的工作。

該解決方案就是使用資料倉儲應用統一的結構來儲存經過ETL處理過的不同源的資料。

ETL能夠轉換不同結構/型別的資料集為統一的結構,以便後續使用BI工具生成有意義的分析和表報。

下面我們看一下ETL過程完整的流程圖:

5146600-c1cfa4dea34fb1ef.png
ETLProcess.png
  1. Extract
    提取有效的資料
  2. Transform
  • 將提取的資料轉換為資料倉儲模式/格式
  • 構建keys:一個key是一個或多個資料屬性的惟一標識例項,key的型別可以是主鍵(primary key)、外來鍵(foreign key)、替代鍵(alternate key)、複合鍵(composite key)以及代理鍵(surrogate key)。這些key只允許資料倉儲進行維護管理,且不允許其他任何實體進行分配。
  • 資料清理:在提取好資料後,則進入下一個節點:資料清理。對提取的資料中的錯誤進行標識和修復。解決不同資料集之間的不相容的衝突問題,使資料一致性,以便資料集能用於目標資料倉儲。通常,通過轉換系統的處理,我們能建立一些後設資料(meta data)來解決源資料的問題,並改進資料的質量。
  1. Load
  • 將轉換後的資料載入資料倉儲
  • 構建聚集:建立聚集對資料進行彙總並儲存資料至表中,以改進終端使用者的查詢體驗。

什麼是ETL測試

ETL測試是為了確保從源到目的地資料經過業務轉換完成後是準確的。

同時它還涉及資料的驗證,即從源到目的地資料各個不同階段驗證資料。

ETL是Extract-Transform-Load的縮寫。

ETL測試過程

與其他測試過程類似,ETL也需要經歷不同的測試階段。其流程如下:

5146600-7644f1cf4b63257f.png
ETLTestingProcess.png

ETL測試過程主要分為以下五大階段:

  1. 分析需求、業務和源資料
  2. 獲取資料
  3. 實現業務邏輯和維度建模
  4. 構建和填充資料
  5. 生成報告

ETL測試型別

  1. Production Validation Testing
    該型別的ETL測試是在資料遷移至生產系統時進行的。為了保證生產業務的正常運營,生產系統中的資料必須以正確的順序進行排序。在該ETL測試型別中要注意從資料層面進行自動化測試和管理能力的植入。
  2. Source to Target Testing(Validation Testing)
    該型別的測試主要元組轉換的資料是否滿足預期的轉換目標
  3. Application Upgrades(升級測試)
    該型別的ETL測試是可以自動生成的,能節省大量的測試開發時間。主要檢查舊應用或儲存庫中提取的資料是否與新的應用或新的儲存庫中的資料完全相同。
  4. Metadata testing(後設資料測試)
    後設資料測試包括資料型別檢查、資料長度和索引/約束檢查。
  5. Data Completeness Testing(資料完整性測試)
    當把所有期望的資料從源載入到目標地時,就算完成了資料完整性測試。在資料完整性測試過程中,我們還可以進行一些簡單的轉換或無轉換的源與目標之間的計數、聚合和實際資料比較和驗證的測試。
  6. Data Accuracy Testing(資料準確性測試)
    該型別測試驗證資料正確的完成載入和按預期目標進行轉換。
  7. Data Transformation Testing(資料轉換測試)
    測試資料轉換是一個複雜的過程,並不是簡單的寫一個源SQL查詢並與目標進行比較來實現的。可能需要為每個行執行多個SQL查詢,來驗證轉換規則
  8. Data Quality Testing(資料質量測試)
    資料質量測試包含語法和基準測試。為了避免在業務過程中由於日期或唯一編號(例如訂單號)引起的錯誤,進行資料質量測試。
  • 語法測試:根據無效字元、字元模式、不正確大小寫、順序等出具髒資料測試結果
  • 基準測試:基於資料模型檢查資料,例如客戶ID資料質量測試,包含:數字檢查、日期檢查、精度檢查、資料檢查、零校驗等等
  1. Incremental ETL Testing(增量ETL測試)
    該型別測試主要驗證舊資料和新資料的完整性,並新增新資料。增量測試驗在增量ETL過程中,插入和更新是否滿足預期的要求。
  2. GUI/Navigation Testing
    該型別測試主要檢查生成的大資料包告的UI\導航方面是否正常

怎麼建立ETL測試用例

ETL測試是一個可以應用於資訊管理領域中不同工具和資料庫的概念。

ETL測試的目的是確保在業務轉換完成後從源載入到目的地的資料是正確無誤的。

ETL測試同樣還涉及在源和目的地之間轉換時的各個階段的資料的驗證。

在從事ETL測試時,有兩份文件是ELT測試人員實時使用的:

  1. ETL對映表:一個ETL對映表包含源和目的地表的所有的資訊,包括每個列及其引用表等約束關係。ETL測試人員需要更為優美的SQL查詢語句,因為在ETL測試各階段可能需要編寫具有多個連線的大查詢來驗證資料。ETL對映表在為資料驗證編寫查詢時提供大量的有用的資訊。
  2. 源、目標資料庫模式:該模式應該便於驗證對映表中的所有細節。

ETL測試場景和測試用例

序號 測試場景 測試用例
1 Mapping Doc Validation(對映檔案驗證) 驗證對映檔案是否提供了響應的ETL資訊,且每個對映文件的更新日誌有記錄
2 Validatioin(驗證) 1. 根據對應的對映檔案驗證源與目的地資料倉儲的表結構
2. 驗證源和目標資料的型別一致
3. 驗證源和目標資料的長度一致
4. 驗證資料欄位型別和格式是指定的型別
5. 驗證源的資料型別長度不應小於目標資料型別長度
6. 針對對映表對資料表的列的名稱進行驗證
3 約束驗證 驗證目標表中的約束關係滿足我們的期望設計
4 資料一致性問題 1. 要防止語義定義相同,但特定屬性的資料型別和長度不一致的問題
2. 防止完整性約束濫用
5 完整性問題 1. 要確保所有期望的資料都已經完整的載入到目標表中
2. 要比較源和目標資料的個數(即確保計數上的完整)3. 檢查出現的任何不合格的記錄
4. 檢查目標表列中的資料沒出現被截斷的情況
5. 對邊界值進行分析檢查
6. 要檢查比較目標資料倉儲和源資料的關鍵欄位的唯一性
6 正確性問題 1. 資料要沒有拼寫錯誤或不準確的記錄
2. 無null、非惟一或超出範圍的資料記錄存在
7 轉換 驗證轉換邏輯的正確性
8 資料質量 1. 數值型驗證,驗證是否為數值型別
2. 日期型驗證,驗證是否為日期格式,並且在所有日期型別資料的格式應該統一
3. 精度驗證,小數點的精度要滿足期望的精度
4. 資料檢查:檢查資料的正確性,完整性
5. null檢查
9 拷貝驗證 1. 驗證目標表中業務要求所有惟一性指標均正確的實現(例如主鍵、惟一標識的鍵、或其他任一惟一表示的列)
2. 驗證從源資料多列合併而成的資料是正確的
3. 驗證僅僅根據客戶要求對源資料進行了多列合併至目標表中
10 日期驗證 日期是ETL開發過程中常用的資料,主要用於:
1. 瞭解資料行建立的日期
2. 用於識別活動記錄
3. 根據業務需求透視表確定活動記錄
4. 便於基於時間插入、更新記錄
11 資料完整性驗證 在驗證源和目標表中的資料集的完整性時,我們需要用到交集運算,以確定目標資料的完整性
12 資料清理 對於不需要的列在載入至資料倉儲前應該進行刪除

ETL的bug型別

序號 bug型別 描述說明
1 使用者介面bug 1. 主要涉及應用的GUI
2.字型、樣式、顏色、對齊、拼寫錯誤、導航等等
2 邊界值bug 資料的邊界值範圍
3 等價類劃分bug 有效和無效類
4 輸出/輸出bug 1.未接受的有效值
2. 無效的值被接受
5 計算類bug 1. 數學計算錯誤
2. 最終輸出錯誤
6 載入條件bug 1. 不執行多使用者操作
2. 不執行使用者載入期望的資料
7 崩潰bug 1. 系統當機或掛起
2. 系統無法執行在使用者的平臺上
8 版本控制bug 1. 無匹配標識
2. 沒有可用的版本資訊
3. 一般版本控制bug發生在迴歸測試時
9 硬體問題 一般發生在應用程式不相容裝置
10 文件錯誤bug 錯誤的幫助文件資訊

ETL測試與資料庫測試的不同

序號 ETL測試 資料庫測試
1 驗證資料是否按照預期進行了移動 主要驗證資料是否遵循了設計預定的資料模式規則或標準
2 驗證資料經過業務轉換後是否滿足預定的轉換邏輯以及驗證源和目標資料計算是否一致 主要表的主、外來鍵等越蘇是否正常
3 驗證ETL過程資料表的主外來鍵關係是否儲存 驗證沒有冗餘表,資料庫最佳化
4 驗證已載入的資料拷貝是否滿足預期 驗證需要的是否缺少資料

ETL測試工程師的主要責任

對於一個ETL測試工程師而言,其關鍵的責任有三大類:

  • 源資料分析(資料庫、文字等型別資料分析)
  • 業務轉換邏輯實現
  • 將經過轉換的資料載入至目標表

其他有:

  • 掌握ETL測試軟體
  • ETL資料倉儲測試元件
  • 在後端執行資料驅動測試
  • 建立、設計、執行測試用例、計劃等
  • 標識問題、提供問題解決方案
  • 梳理業務需求和設計測試策略
  • 寫SQL或資料庫操作程式碼完成實現各種測試場景

等等其他工作內容

相關文章