首先,簡單介紹下,ETL,是英文Extract-Transform-Load的縮寫,用來描述將數據歷來源端通過抽取(extract)、轉換(transform)、加載(load)至目的端的過程,屬於大數據測試的核心內容。sql
今天和你們分享下我做爲大數據測試工程師對ETL測試的一些認識。數據庫
1、ETL測試工程師的主要責任微信
對於一個ETL測試工程師而言,其關鍵的責任有三大類:性能
1. 源數據分析(包含:數據庫表、文本等類型數據分析)測試
2. 業務轉換邏輯實現(包含:code diff,目標表全量數據的邏輯實現驗證)字體
3. 將通過轉換的數據載入至目標表的各維度與指標數據與對標數據進行對標驗證其一致性大數據
2、ETL測試場景和測試用例spa
1. 根據對應的映射文件驗證"源"與"目標數據倉庫"的表結構.net
2. 驗證"源"和"目標數據的類型、長度、格式一致或源長度不該大於目標數據類型長度"設計
3. 約束驗證目標表中的約束關係知足咱們的指望設計
4. 數據一致性問題
<1>. 要防止語義定義相同,但特定屬性的數據類型和長度不一致的問題
<2>. 完整性約束、主鍵不能夠重複、異常數據處理方式等
5. 完整性問題
<1>. 要確保全部指望的數據都已經完整的加載到目標表中
<2>. 要比較源和目標數據的個數(即確保計數上的完整)
<3>. 檢查出現的任何不合格的記錄
<4>. 檢查目標表列中的數據沒出現被截斷的狀況--針對的是竄列的狀況。好比comments裏的內容含有列分隔符,被分隔開了。
<5>. 對邊界值進行分析檢查
6. 要檢查比較目標數據倉庫和源數據的關鍵字段的惟一性和正確性問題[主鍵一致]
<1>. 數據要沒有拼寫錯誤或不許確的記錄。
<2>. 無超出業務許可範圍的數據記錄存在
<3>. 數值型驗證,驗證是否爲數值類型
<4>. 日期型驗證,驗證是否爲日期格式,而且在全部日期類型數據的格式應該統一
<5>. 精度驗證,小數點的精度要知足指望的精度
<6>. 數據檢查:檢查數據的正確性,完整性
<7>. null檢查
<8>. 轉換驗證轉換邏輯的正確性
7. 拷貝驗證
<1>. 驗證目標表中業務要求全部唯一性指標均正確的實現(例如主鍵、唯一標識的鍵、或其餘任一唯一表示的列)
<2>. 驗證從源數據多列合併而成的數據是正確的
<3>. 驗證僅僅根據客戶要求對源數據進行了多列合併至目標表中
8. 日期驗證是ETL開發過程當中經常使用的數據,主要用於:
<1>. 瞭解數據建立的日期,分區日期和業務日期要分清楚。
<2>. 用於識別活動記錄
<3>. 根據業務需求透視表肯定活動記錄
<4>. 便於基於時間插入、更新記錄
9. 數據完整性驗證在驗證源和目標表中的數據集的完整性時,咱們須要用到交集運算,以肯定目標數據的完整性
10. 數據清理對於不須要的列在載入至數據倉庫前應該進行刪除
11. 結果集驗證:
<1>. 一般使用的是全量數據驗證方法,應用層的目標表數據驗證時,則使用匯總層的表再left join各類維度表,拿到對應的維度的值後再與應用層的目標表進行join,
根據需求中同一個維度或指標的不一樣場景,進行case設計,從而在case執行時,體如今一個個查詢sql上的不一樣,找出sql查詢出的異常數據值,單條數據進行驗證後,
若是確認是測試查詢sql的問題,則須要修正測試sql,再繼續執行,若是確認是實現的結果不符合需求,則提bug給到對應的開發。
<2>. 但針對一些特殊的需求,咱們不會去構造一個驗證集去對比結果集,由於代價過高了。固然若是有對標數據是另一種狀況。咱們能夠簡化爲從幾個維度去驗證跑出來的結果集。
好比,總量維度,結果集的數據量是否符合某個數量級。酒店維度,某些個指標是否包含了全部酒店數。數值維度,某指標的全量和是否符合預期。
3、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。達不到業務要求時間。
ETL測試與數據庫測試的不一樣
1. 驗證數據是否按照預期進行了移動主要驗證數據是否遵循了設計預約的數據模式規則或標準
2. 驗證數據通過業務轉換後是否知足預約的轉換邏輯以及驗證源和目標數據計算是否一致主要表的主、外鍵等約束是否正常
3. 驗證ETL過程數據表的主外鍵關係是否保存驗證沒有冗餘表,數據庫最佳化
4. 驗證已載入的數據拷貝是否知足預期驗證須要的是否缺乏數據
本文分享自微信公衆號 - 無量測試之道(gh_858a1aa25a6d)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。