天天看點

淺談ETL(大資料)測試(一)

歡迎關注【無量測試之道】公衆号,回複【領取資源】,

Python程式設計學習資源幹貨、

Python+Appium架構APP的UI自動化、

Python+Selenium架構Web的UI自動化、

Python+Unittest架構API自動化、

資源和代碼 免費送啦~

文章下方有公衆号二維碼,可直接微信掃一掃關注即可。

首先,簡單介紹下,ETL,是英文Extract-Transform-Load的縮寫,用來描述将資料從來源端經過抽取(extract)、轉換(transform)、加載(load)至目的端的過程,屬于大資料測試的核心内容。

今天和大家分享下我作為大資料測試工程師對ETL測試的一些認識。

一、ETL測試工程師的主要責任

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

1. 源資料分析(包含:資料庫表、文本等類型資料分析)

2. 業務轉換邏輯實作(包含:code diff,目标表全量資料的邏輯實作驗證)

3. 将經過轉換的資料載入至目标表的各次元與名額資料與對标資料進行對标驗證其一緻性

二、ETL測試場景和測試用例

1. 根據對應的映射檔案驗證"源"與"目标資料倉庫"的表結構

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>. 但針對一些特殊的需求,我們不會去構造一個驗證集去對比結果集,因為代價太高了。當然如果有對标資料是另外一種情況。我們可以簡化為從幾個次元去驗證跑出來的結果集。

比如,總量次元,結果集的資料量是否符合某個數量級。 酒店次元,某些個名額是否包含了所有酒店數。數值次元,某名額的全量和是否符合預期。

三、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.驗證已載入的資料拷貝是否滿足預期驗證需要的是否缺少資料

備注:我的個人公衆号已正式開通,緻力于測試技術的分享,包含:功能測試,測試開發,API接口自動化、測試運維、UI自動化測試等,微信搜尋公衆号:“無量測試之道”,或掃描下方二維碼:

淺談ETL(大資料)測試(一)

添加關注,一起共同成長吧。