1. 程式人生 > >ETL測試基本知識

ETL測試基本知識

比較 form 合法性 手工 div 運行時間 簡單 測試數據 目標

轉載自: https://www.cnblogs.com/clarke157/p/6383024.html

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

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

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

ETL測試基本知識