ETL測試小結


一、ETL測試的重要性:

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

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

二、ETL測試過程: 

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

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

2)測試方案編寫 

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

4)執行所有用例直到滿足退出標准 

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

三、ETL測試的規則: 

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

四、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).監控增量數據和增量運行時間。 

增量數據監控:項目發布后,我們可以觀察數據的波動趨勢,一般來說數據的波動是在一定范圍,遵循一定原則的,如果發現數據波動超出了預計范圍,這個時候就需要特別注意了。 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM