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).監控增量數據和增量運行時間。
增量數據監控:項目發佈後,咱們能夠觀察數據的波動趨勢,通常來講數據的波動是在必定範圍,遵循必定原則的,若是發現數據波動超出了預計範圍,這個時候就須要特別注意了。
增量運行時間監控:每每項目上線後,比較在乎的是性能問題,以確保在規定的時間內,完成跑批。咱們要經過監控增量運行時間,及時發現程序的性能問題。