ETL測試基本知識

1、ETL測試的重要性:數據庫

ETL(Extract-Transform-Load的縮寫,即數據抽取、轉換、裝載的過程)做爲BI/DW(Business Intelligence)的核心和靈魂,可以按照統一的規則集成並提升數據的價值,是負責完成數據從數據源向目標數據倉庫轉化的過程,是實施數據倉庫的重要步驟。若是說數據倉庫的模型設計是一座大廈的設計藍圖,數據是磚瓦的話,那麼ETL就是建設大廈的過程。在整個項目中最難部分是用戶需求分析和模型設計,而ETL規則設計和實施則是工做量最大的,約佔整個項目的60%~80%,這是國內外從衆多實踐中獲得的廣泛共識。 oracle

在技術上,ETL主要涉及到關聯、轉換、增量、調度和監控等幾個方面;數據倉庫系統中數據不要求與聯機事務處理系統中數據實時同步,因此ETL能夠定時進行。但多個ETL的操做時間、順序和成敗對數據倉庫中信息的有效性相當重要。因此作好ETL測試也相當重要。 post

2、ETL測試過程: 性能

在獨立驗證與確認下,與任何其餘測試同樣,ETL也經歷一樣的階段。 測試

1)業務和需求分析並驗證。 設計

2)測試方案編寫 日誌

3)從全部可用的輸入條件來設計測試用例和測試場景進行測試 orm

4)執行全部用例直到知足退出標準 blog

5)書寫總結報告和測試過程結束。 接口

3、ETL測試的規則: 

測試數據的正確性、一致性、完整性 

4、ETL測試的方法 

1.數據量統計: 

源表和目標表數據量統計 

2.轉換規則測試 

首先是數據格式的合法性。對於數據源中時間、數值、字符等數據的處理,是否符合數據倉庫規則,是否進行統一的轉換。 

其次是值域的有效性。是否有超出維表或者業務值域的範圍。 

第三是空值的處理。是否捕獲字段空值,或者須要對空值進行替換爲其餘含義值的處理。 

第四是主鍵的有效性。主鍵是否惟一。 

第五是亂碼的檢查。特殊符號或者亂碼符號的護理規則。 

第六是髒數據的處理。好比不符合業務邏輯的數據 

3.關鍵字段測試 

    經過轉換規則,查詢關鍵字段是否正確。好比保費收入字段,看其是否乘以匯率,共保比率等; 

    通常表中會添加時間戳,時間戳數據和數據格式是否正確 

4.抽樣測試 

經過抽樣,測試源表和目標表映射是否正確。 

5.加載規則測試 

     通常加載方式有兩種:全量加載和增量加載 

     增量加載通常是先刪後插(delete and insert)。 

     全量加載通常是先清空再插入(truncate and insert),但也要分狀況,咱們作的項目,源-->ODSSGA層爲先清空後插入,向外提供的接口數據則爲先刪後插,這須要根據不一樣的狀況不一樣對待。 

     增量加載方式 

     對於增量抽取,捕捉變化的數據有以下幾種:1)採用快照方式。須要業務系統創建insert,update,delete觸發器。2)時間戳方式,在業務系統表建一個時間戳字段,一旦數據發生變化,則修改此字段。3)全表刪除插入方式,每次ETL操做先將目標表數據刪除,而後抽取。4)hash比對,是全表比對的一個擴展,經過計算主要業務字段的MD5校驗碼存入hash維表,經過與hash維表的比對進行抽取。5)日誌表方式,跟進業務系統的日誌表進行數據抽取。6)oracle變化數據捕捉,經過分析數據庫自身日誌判斷變化的數據。 

     因爲咱們採起的是時間戳方式,這裏就只介紹這種方式的測試方案。 

     1)測試結果是否遺漏數據,若是爲時間戳方式,要尤爲注意時間戳是否帶時分秒 

     2)增量規則是否正確 

        對於源表作好足夠的數據探查,明白源表中的數據的增量是怎麼回事,必要時須要討論,而後根據業務規則作增量規則方案。 

     3)監控增量數據 

由於項目在上線前通常都會試運行一段時間,因此在這段時間,就要天天作表中數據量的的監控。 

對於日全量表的監控:只要看源表和目標表數據量是否一致就能夠對於增量數據量監控:看全量+增量的數據是否與源表數據量是否一致。根據不一樣的業務規則,查看是否正確。 

而後經過多日監控,能夠發現不論是增量仍是全量,數據量基本都會處於一個值左右,幅度不會太大,若是出現特殊狀況,就要去考慮檢查一下它的正確性了。 

     4)監控增量運行時間 

     經過監控增量的運行時長,能夠發現性能問題和批量數據的運行是否成功。對於時間浮動比較大的增量表,能夠第一時間發現問題並解決問題。 

     全量加載方式 

     因爲咱們採起的是全量加載+增量加載(採用時間戳方式),我這裏指的全量加載即數據倉庫中數據的初始化。 

     全量加載的測試方案相對要簡單些。 

     1)測試源和目標表的數據量的一致性 

     2)運行1,2,3,4測試測試方法測試通常來講便可。    

6.性能測試 

     確保數據在規定和預計的時間內被加載到數據倉庫中,以確認改進的性能和可擴展性。 

7.測試用例 

    項目中的關鍵業務,複雜邏輯部分做爲測試重點 

    基礎數據:能夠爲真實數據,也能夠單純手工造數據。由於ETL數據量較大,而且表中字段數量比較多,各表關聯比較大,因此本人以爲仍是用真實數據效率比較高。 

    測試用例的編寫:測試用例能夠單獨設計,也能夠採用調度的思想進行設計,採用調度方法進行設計時,能一次驗證多個用例,另外也方便迴歸。 

8.發佈實施後 

    1).測試Datastage中源、目標映射是否一致 

    2).測試開發庫和生產庫中ETL程序是否一致 

    3).監控增量數據和增量運行時間。 

增量數據監控:項目發佈後,咱們能夠觀察數據的波動趨勢,通常來講數據的波動是在必定範圍,遵循必定原則的,若是發現數據波動超出了預計範圍,這個時候就須要特別注意了。 

增量運行時間監控:每每項目上線後,比較在乎的是性能問題,以確保在規定的時間內,完成跑批。咱們要經過監控增量運行時間,及時發現程序的性能問題。

相關文章
相關標籤/搜索