在我們了解ETL測試之前,先了解有關商業智能和數據倉庫的重要性。
讓我們開始吧 -
什么是BI?
商業智能是收集原始數據或業務數據並將其轉化為有用和更有意義的信息的過程。
原始數據是一個組織每日事務的記錄,如與客戶的互動,財務管理和員工管理等。
這些數據將用於“報告,分析,數據挖掘,數據質量和解釋,預測分析”。
什么是數據倉庫?
數據倉庫是一個數據庫,專為查詢和分析而設計,而不是事務處理。
通過集成來自多個異構源的數據構建數據倉庫,使公司或組織能夠整合來自多個來源的數據,並將分析工作與事務工作分開。
數據轉化為高質量信息,以滿足各級用戶的所有企業報告要求。

什么是ETL?
ETL代表Extract-Transform-Load,它是將數據從源系統加載到數據倉庫的過程。
從OLTP(聯機事務處理)數據庫中提取數據,將其轉換為與數據倉庫模式匹配並加載到數據倉庫數據庫中。
許多數據倉庫還包括非OLTP系統的數據,例如文本文件,遺留系統和電子表格。
看看它是如何工作的
例如,有零售公司有不同的部門,如銷售,營銷,物流等。他們每個都是獨立處理客戶信息,而且存儲數據的方式是截然不同的。
銷售部門按客戶名稱存儲,營銷部門按客戶編號存儲。
現在,如果他們想檢查客戶的歷史,並想知道由於不同的營銷活動,他/她購買的不同的產品?這將是非常困難的。
解決方案是使用數據倉庫來使用ETL將來自不同來源的信息存儲在統一的結構中。
ETL可以將不同的數據集轉換為統一的結構。后來使用BI工具從這些數據中獲得有意義的見解和報告。
下圖給出了ETL過程的ROAD MAP

-
Extract
- 提取相關數據
-
Transform
-
將數據轉換為DW(數據倉庫)格式
-
構建鍵 - 鍵是唯一標識實體的一個或多個數據屬性。
各種鍵是主鍵,備用鍵,外鍵,復合鍵,代理鍵。
數據倉庫管理這些鍵,並且不允許再去分配給任何其他實體。 -
清理數據:提取數據后,將進入下一個階段,清理和規范數據。
清理在數據中排除以及識別和修復錯誤。
規范意味着解決那些不兼容的數據之間的沖突,以便它們可以在企業數據倉庫中使用。
除此之外,該系統還創建了用於診斷源系統問題並提高數據質量的meta-data(元數據)。
-
-
加載
-
將數據加載到DW(數據倉庫)
-
構建聚合 - 創建聚合是匯總和存儲事實表中可用的數據,以便提高最終用戶查詢的性能。
-
什么是ETL測試?
完成ETL測試是為了確保經過業務轉換后從源加載到目標的數據准確無誤。
它還涉及在源和目標之間使用的各個中間階段的數據的驗證。
ETL測試流程
與其他測試過程類似,ETL也經過不同的階段。
ETL測試過程的不同階段如下

ETL測試分五個階段進行
- 識別數據源和需求
- 數據采集
- 實現業務邏輯和維度建模
- 構建和填充分析的多維立方體
- 構建報告

ETL測試的類型
測試類型 | 測試過程 |
---|---|
生產驗證測試 | “Table balancing”或“production reconciliation”這種類型的ETL測試是在數據移入生產系統時進行的。為了支持您的業務決策,生產系統中的數據必須按正確的順序排列。 Informatica數據驗證選項提供ETL測試自動化和管理功能,以確保生產系統不會受到數據的影響。 |
源到目標測試(驗證測試) | 執行這種類型的測試是為了驗證轉換的數據值是否是符合預期。 |
應用升級 | 這種類型的ETL測試可以自動生成,節省了大量的測試開發時間。這種類型的測試檢查從舊的應用程序或庫提取的數據是否與庫或新應用程序中的數據完全相同。 |
元數據測試 | 元數據測試包括數據類型檢查,數據長度檢查和索引/約束檢查的測試。 |
數據完整性測試 | 要驗證所有預期的數據是否從源中加載到目標中,則完成數據的完整性測試。其中一些測試可以運行去比較和驗證源和目標之間的計數,聚合和實際數據的列,簡單轉換或不轉換。 |
數據精度測試 | 這種測試是為了確保數據按預期精確地加載和轉換。 |
數據轉換測試 | 在許多情況下,測試數據轉換不能通過編寫一個源SQL查詢並將輸出與目標進行比較來實現。可能需要針對每一行運行多個SQL查詢來驗證轉換規則。 |
數據質量檢測 | 數據質量測試包括語法和引用測試。為了避免在業務流程期間由於日期或訂單號等造成的任何錯誤。 語法測試:將根據無效字符,字符模式,大小寫不正確等報告臟數據。 引用測試:將根據數據模型檢查數據。例如:客戶ID數據質量測試包括數字檢查,日期檢查,精確檢查,數據檢查,空檢查等。 |
增量ETL測試 | 此測試是通過添加新數據來檢查舊數據和新數據的數據完整性。增量測試驗證插入和更新是否在增量ETL過程中按預期進行處理。 |
GUI /導航測試 | 這個測試是為了檢查前端報告的導航或GUI方面。 |
如何創建ETL測試用例
ETL測試是一種可以應用於信息管理行業不同工具和數據庫的概念。
ETL測試的目標是確保通過業務轉換后從源到目標的數據准確無誤。 它還涉及在源和目標之間各個中間階段使用的數據的驗證。
在執行ETL測試時,ETL測試儀將始終使用兩個文檔
-
ETL映射表: ETL映射表包含源表和目標表的所有信息,包括每個列以及它們在引用表中的引用。
ETL測試人員需要對SQL查詢感到滿意,因為ETL測試可能涉及用多種連接寫大的查詢語句以在ETL的任何階段驗證數據。
在編寫數據驗證查詢時,ETL映射表提供了重要的幫助。 -
源和目標的DB Schema:應該方便地驗證映射表中的任何細節。
ETL測試場景和測試用例
測試場景 | 測試用例 |
---|---|
映射文檔驗證 | 驗證映射文檔是否提供相符的ETL信息。每次更改日志應保留在映射文檔中。 |
驗證 | 1. 根據相應的映射文檔驗證源表和目標表結構。 2. 源數據類型和目標數據類型應該相同 3. 源和目標數據類型的長度應相等 4. 驗證是否指定了數據字段類型和格式 5. 源數據類型長度不應小於目標數據類型長度 6. 根據映射文檔驗證表中列的名稱。 |
約束驗證 | 確保按預期為特定表定義約束 |
數據一致性問題 | 1. 特定屬性的數據類型和長度可能在文件或表中不同,但語義定義相同。 2. 濫用完整性約束 |
完整性問題 | 1. 確保所有預期的數據都加載到目標表中。 2. 比較源和目標之間的記錄計數。 3. 檢查任何被拒絕的記錄 4. 檢查數據不應在目標表的列中被截斷 5. 檢查邊界值分析 6. 比較加載到倉庫的數據和源數據之間的關鍵字段的唯一值 |
正確性問題 | 1. 數據拼寫錯誤或記錄錯誤 2. 空,非唯一或超出范圍的數據 |
轉換 | 轉換 |
數據質量 | 1. 數字檢查:需要數字檢查和驗證 2. 日期檢查:他們必須遵循日期格式,它應該在所有記錄中相同 3. 精度檢查 4. 數據檢查 5. 空檢查 |
空驗證 | 為指定“Not Null”的特定列驗證空值。 |
重復檢查 | 1. 需要驗證唯一鍵,主鍵和任何其他列應該是唯一的,如果業務需求具有任何重復的行 檢查從源中的多個列提取並組合成一列的任何列中是否存在任何重復值 根據客戶端要求,需要確保僅在目標中的多個列的組合不會重復 |
日期驗證 | 日期值用在ETL開發中使用許多領域 1. 獲取行創建日期 2. 根據ETL開發視角識別活動記錄 3. 根據業務需求視角確定活動記錄 4. 有時根據日期值生成更新和插入。 |
數據完整性驗證 | 1. 驗證源表和目標表中的完整數據集減去最佳解決方案中的查詢 2. 我們需要源減去目標和目標減去源 3. 如果減法查詢返回任何值,那么這些值應被視為不匹配行 4.使用intersect語句在源和目標之間相交返回的計數,應與源表和目標表的單獨的計數相匹配 5. 如果行的查詢返回的行和計數相交小於源計數或目標表,那么我們可以考慮重復的行存在。 |
數據清理 | 在加載到暫存區域之前,應刪除不必要的列。 |
ETL錯誤的類型
錯誤類型 | 描述 |
---|---|
用戶界面錯誤bug | * 與應用程序的GUI相關 * 字體樣式,字體大小,顏色,對齊方式,拼寫錯誤,導航等 |
邊界值分析(BVA)相關的bug | 最小值和最大值 |
等價類分類(ECP)相關的bug | 有效和無效的類型 |
輸入/輸出bug | * 有效值不被接受 * 無效值被接受 |
計算bug | * 精度錯誤 * 最終輸出錯誤 |
加載條件錯誤 | * 不允許多個用戶 * 不允許客戶預期的加載 |
Race Condition錯誤 | * 系統崩潰和掛起 * 系統無法運行客戶端平台 |
版本控制錯誤 | * 沒有標志匹配 沒有版本信息可用 這通常發生在回歸測試中 |
H / W錯誤 | 設備沒有響應應用程序 |
幫助源錯誤 | 幫助文件中的錯誤 |

錯誤類型 | 描述 |
---|---|
用戶界面錯誤bug | * 與應用程序的GUI相關 * 字體樣式,字體大小,顏色,對齊方式,拼寫錯誤,導航等 |
邊界值分析(BVA)相關的bug | 最小值和最大值 |
等價類分類(ECP)相關的bug | 有效和無效的類型 |
輸入/輸出bug | * 有效值不被接受 * 無效值被接受 |
計算bug | * 精度錯誤 * 最終輸出錯誤 |
加載條件錯誤 | * 不允許多個用戶 * 不允許客戶預期的加載 |
Race Condition錯誤 | * 系統崩潰和掛起 * 系統無法運行客戶端平台 |
版本控制錯誤 | * 沒有標志匹配 沒有版本信息可用 這通常發生在回歸測試中 |
H / W錯誤 | 設備沒有響應應用程序 |
幫助源錯誤 | 幫助文件中的錯誤 |
數據庫測試與ETL測試的區別
ETL測試 | 數據庫測試 |
---|---|
驗證數據是否按預期移動 | 主要目標是檢查數據是否遵循數據模型中定義的規則/標准 |
驗證源和目標中的計數是否匹配 驗證數據轉換是否符合預期 |
驗證沒有孤立記錄和維護外主鍵關系 |
驗證ETL期間外部主鍵關系是否保留 | 驗證沒有冗余表,數據庫被最佳地標准化 |
驗證是否重復的加載數據中 | 驗證是否在需要的列中丟失數據 |
ETL測試的職責
ETL測試的主要職責分為三類
- 階段表/ SFS或MFS
- 業務轉型邏輯應用
- 應用轉換后,從階段文件或表格中加載目標表。
ETL測試的一些職責是
- 測試ETL軟件
- 測試ETL數據倉庫的組件
- 執行后端數據驅動測試
- 創建,設計和執行測試用例,測試計划和測試工具
- 確定問題並為潛在問題提供解決方案
- 審核需求和設計規范
- 數據傳輸和測試平面文件
- 編寫SQL查詢用於各種場景,如計數測試
ETL性能測試和調優
ETL 性能測試是確保ETL系統能夠處理多個用戶和事務負載的確認測試。
性能調優的目標是通過消除性能瓶頸來優化會話性能。
要調整或提高會話的性能,您必須找出性能瓶頸並將其消除。
在源和目標數據庫,映射,會話和系統中可以找到性能瓶頸。
用於性能測試的最佳工具之一是Informatica。
ETL測試自動化
ETL測試的一般方法是使用SQL腳本或做數據的“ eyeballing”。這些ETL測試方法耗時,容易出錯,很少提供完整的測試覆蓋。
加快,提高覆蓋率,降低成本,提高
生產和開發環境中ETL測試的缺陷發現率,自動化是需要的時間。一個這樣的工具是Informatica。
ETL測試的最佳實踐
- 確保數據正確轉換
- 沒有任何數據丟失和截斷,數據應該被加載到數據倉庫中
- 確保ETL應用程序適當地拒絕並使用默認值替換並報告無效數據
- 需要確保在規定的預期時間范圍內加載數據倉庫的數據,以確認可擴展性和性能
- 所有方法都應該有適當的單元測試,而不管可見性
- 要測量其有效性,所有單元測試都應使用適當的覆蓋率測試技術
- 為每個測試用例爭取一個斷言
- 創建針對異常的單元測試
作者:傑克家的貓
鏈接:https://www.jianshu.com/p/f56c808cd2c3
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。