[大數據測試]ETL測試或數據倉庫測試入門

轉載自: 

http://blog.csdn.net/zhusongziye/article/details/78633934

概述

在咱們學習ETL測試以前,先了解下business intelligence(即BI)和數據倉庫。數據庫

什麼是BI?

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

原始數據記錄了企業平常事務,例如與客戶交互的信息、財務信息,員工相關記錄等等。app

這些數據能夠用於彙報、分析、挖掘、數據質量、交互、預測分析等等工具

什麼是數據倉庫

數據倉庫是爲查詢和分析而不是事務處理而設計的數據庫。學習

數據倉庫是經過整合不一樣的異構數據源而構建起來的。測試

數據倉庫的存在使得企業或組織可以將整合、分析數據工做與事務處理工做分離。字體

數據可以被轉換、整合爲更高質量的信息來知足企業級用戶不一樣層次的需求。大數據

什麼是ETL

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

咱們從聯機事務數據庫中提取數據,進行轉換處理,匹配數據倉庫模式,而後載入至數據倉庫數據庫中。設計

在一般狀況下,大多數的數據倉庫要整合非聯機事務數據庫系統的數據,例如來源文本文件、日誌、電子表格等等。

下面咱們一塊兒看看ETL是怎麼工做的。

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

如今咱們想要去檢查客戶的歷史數據,而且想要了解他/她在不一樣的營銷活動中購買的不一樣產品是什麼。這將是一項很是枯燥的工做。

該解決方案就是使用數據倉庫應用統一的結構來存儲通過ETL處理過的不一樣源的數據。

ETL可以轉換不一樣結構/類型的數據集爲統一的結構,以便後續使用BI工具生成有意義的分析和表報。

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

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也須要經歷不一樣的測試階段。其流程以下:

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或數據庫操做代碼完成實現各類測試場景

等等其餘工做內容。。。

相關文章
相關標籤/搜索