ETL測試模型(早期)

1锨侯、什么是ETL

E-T-L代表Extract-Transform-Load。用來描述將數(shù)據(jù)從來源端經(jīng)過抽取、轉(zhuǎn)換泰涂、加載至目的端的過程;(數(shù)據(jù)清洗)

Extract為提取相關(guān)數(shù)據(jù)辐怕;Transform根據(jù)規(guī)則對數(shù)據(jù)進(jìn)行處理與轉(zhuǎn)換逼蒙;Load為將數(shù)據(jù)加載到對應(yīng)的倉庫。

2寄疏、什么是ETL測試

保證經(jīng)過E T L全過程后是牢,從源加載到目標(biāo)倉庫的的數(shù)據(jù)準(zhǔn)確無誤且符合目標(biāo)需求。

3赁还、ETL測試點

圍繞ETL的實現(xiàn)過程和分層測試的思想妖泄,ETL測試重心包括:數(shù)據(jù)源測試、轉(zhuǎn)換規(guī)則測試艘策、加載測試蹈胡。為了確保需求驅(qū)動,我們還額外設(shè)置了集成統(tǒng)一測試朋蔫。

根據(jù)軟件測試左移的思想罚渐,我們需要盡量將一些可以前置的測試事情提前完成,以達(dá)到縮短工期驯妄、減小成本的目的荷并。

因此我們將針對不同的測試階段進(jìn)行不同的測試。

需求測試

如果不想看詳細(xì)說明就看這張表:

階段測試場景測試指標(biāo)詳細(xì)說明

需求階段需求測試清洗規(guī)則是否符合原始需求按照清洗規(guī)則是否可以得到原始需求需要的數(shù)據(jù)

是否過多--未過濾無效數(shù)據(jù)

是否過少--少考慮某些業(yè)務(wù)場景

清洗目標(biāo)是否符合上下游要求清洗目標(biāo)字段定義青扔、值定義是否符合上下游要求

清洗規(guī)則是各種項目源织、業(yè)務(wù)通用清洗規(guī)則服務(wù)所有項目,但各個項目數(shù)據(jù)源格式微猖、業(yè)務(wù)規(guī)則不同谈息。

清洗規(guī)則是否清晰數(shù)據(jù)源,轉(zhuǎn)換規(guī)則凛剥,load定義

數(shù)據(jù)源測試數(shù)據(jù)源設(shè)置是否清晰侠仇,全面。各個項目數(shù)據(jù)源格式是否符合清洗規(guī)則預(yù)期

根據(jù)語法測試數(shù)據(jù)源是否存在臟數(shù)據(jù)根據(jù)無效字符,字符模式逻炊,大小寫不正確等報告臟數(shù)據(jù)

根據(jù)數(shù)據(jù)模型檢查數(shù)據(jù)是否符合預(yù)期根據(jù)清洗規(guī)則建立數(shù)據(jù)模型互亮,數(shù)據(jù)應(yīng)該具備什么特點(數(shù)字檢查、日期檢查余素、精度檢查豹休、空檢查)

需求階段,即在需求確認(rèn)提出階段桨吊,測試就可以開展的工作慕爬。

ETL的需求一般由三個重要部分組成:數(shù)據(jù)源 、? 清洗規(guī)則 與 清洗目標(biāo)屏积。整體的ETL需求測試也是圍繞著這三個方向來完成医窿。

1、數(shù)據(jù)源需求測試

1)數(shù)據(jù)源設(shè)置是否清晰炊林,全面姥卢。

在需求中,關(guān)于數(shù)據(jù)源的描述務(wù)必清晰準(zhǔn)確渣聚。注意不可含糊不清独榴,不可出現(xiàn)二義性。指定的數(shù)據(jù)源也需要確鞭戎Γ可靠與全面棺榔。

eg:在某ETL需求中,數(shù)據(jù)源指向某個數(shù)據(jù)庫的某張表隘道。我們繼續(xù)調(diào)查這張表的來源症歇,是來自另一個ETL程序,那么我們就需要結(jié)合上一個程序的邏輯來考慮數(shù)據(jù)源的穩(wěn)定性與風(fēng)險谭梗。

eg:在某ETL需求中忘晤,一個基礎(chǔ)數(shù)據(jù)要求得到用戶持有的所有資源,在需求的數(shù)據(jù)源設(shè)定中激捏,僅要求獲取用戶背包資源设塔,但是在不同游戲項目中,資源的存放地多種多樣远舅,而不僅僅存放在背包中闰蛔。

2)根據(jù)語法測試數(shù)據(jù)源是否存在臟數(shù)據(jù)

程序上對于臟數(shù)據(jù)的處理通常是容錯然后丟棄。雖然在后續(xù)測試中會涵蓋臟數(shù)據(jù)的兼容測試图柏,但是在需求提出時我們就需要對臟數(shù)據(jù)進(jìn)行調(diào)查序六。評估臟數(shù)據(jù)的大概量級和出現(xiàn)的可能性也作為后續(xù)的測試參考。

我們根據(jù)無效字符爆办,大小寫不正確难咕、空字符等報告臟數(shù)據(jù)课梳。

3)根據(jù)數(shù)據(jù)模型檢查數(shù)據(jù)是否符合預(yù)期

當(dāng)我們拿到清洗規(guī)則時距辆,可以根據(jù)清洗規(guī)則建立數(shù)據(jù)模型(這里的數(shù)據(jù)模型指數(shù)據(jù)源所具備的統(tǒng)一結(jié)構(gòu)特征余佃,例如:數(shù)字檢查、日期檢查跨算、精度檢查爆土、空檢查、數(shù)據(jù)含義檢查)诸蚕,去調(diào)研當(dāng)前數(shù)據(jù)源下有沒有不符合該數(shù)據(jù)模型的數(shù)據(jù)或者存在非法數(shù)據(jù)的可能性步势。

后期甚至需要進(jìn)行持續(xù)的監(jiān)測。

eg:某ETL需求中背犯,要求從“ 超級牛逼-EN-換預(yù)覽圖 - 副本 (23842702728410179)”這樣的一個數(shù)據(jù)結(jié)構(gòu)中取出后面的數(shù)字串坏瘩。那么我們需要調(diào)查當(dāng)前數(shù)據(jù)源中是否所有數(shù)據(jù)都匹配這種數(shù)據(jù)結(jié)構(gòu)

eg:例如delete字段為1表示已經(jīng)被刪除的記錄,那么在后續(xù)規(guī)則清洗的時候需要過濾這部分記錄漠魏。

2倔矾、清洗規(guī)則需求測試

繼承上方數(shù)據(jù)源需求測試得到的信息后,我們開始清洗規(guī)則需求測試柱锹。

1)清洗規(guī)則是否符合原始需求預(yù)期

原始需求指需求提出方希望通過使用我們的數(shù)據(jù)產(chǎn)品得到數(shù)據(jù)哪自。我們需要評審我們的產(chǎn)品(這里指的是策劃角色)產(chǎn)出的清洗規(guī)則的最終產(chǎn)物是否符合原始需求的要求。這要求測試人員能夠充分了解原始需求禁熏,而原始需求往往具備較強的業(yè)務(wù)性壤巷。

我們可以通過了解行業(yè)統(tǒng)一指標(biāo)、使用對應(yīng)類比競品瞧毙、了解用戶使用場景來提高自己的業(yè)務(wù)理解能力胧华。

例如:某原始需求是希望可以得到用戶歷史付費最高額度,清洗規(guī)則中簡單的說明了通過數(shù)據(jù)源中的price字段值group by uid后取出max(price)宙彪。但是在實際的業(yè)務(wù)場景中撑柔,部分付費信息日志是由測試人員通過特殊渠道測試產(chǎn)生,需要進(jìn)行過濾您访。(這部分需要結(jié)合上方的數(shù)據(jù)源調(diào)查才得以發(fā)現(xiàn))

2)清洗規(guī)則是各種項目铅忿、業(yè)務(wù)通用

3)清洗規(guī)則是否清晰

這兩個部分的測試同理數(shù)據(jù)源測試

3、清洗目標(biāo)需求測試

1)清洗目標(biāo)是否符合上下游要求

在完整的數(shù)據(jù)產(chǎn)品中灵汪,不是ETL產(chǎn)生了結(jié)果檀训,就結(jié)束了,往往會伴有后續(xù)的業(yè)務(wù)邏輯享言,對這些產(chǎn)出的數(shù)據(jù)進(jìn)行處理峻凫。因此對清洗目標(biāo)的考察還需要考慮她是否符合上下游業(yè)務(wù)的要求。

例如在一些BI報表類應(yīng)用中览露,該報表期望展示的是一個具體的項目名稱“xx項目”荧琼,但是我們在清洗結(jié)果中僅僅提供了項目ID.那么沒有做好約定的話就會出現(xiàn)中間斷層

開發(fā)設(shè)計測試:

如果不想看詳細(xì)說明就看這表:

階段測試場景測試指標(biāo)詳細(xì)說明

開發(fā)階段結(jié)構(gòu)測試根據(jù)清洗規(guī)則驗證源表和目標(biāo)表結(jié)構(gòu)(類型、長度、名稱)監(jiān)測目標(biāo)表字段定義類型命锄、數(shù)值長度

約束驗證確保按預(yù)期為特定表定義約束主鍵堰乔、外鍵、檢查脐恩、默認(rèn)镐侯、唯一、非空約束

設(shè)計評審分析設(shè)計漏洞

了解程序路徑

1)目標(biāo)表結(jié)構(gòu)驗證

通常在清洗開始之前驶冒,需要對目標(biāo)加載的倉庫進(jìn)行建表苟翻。根據(jù)清洗規(guī)則驗證源表和目標(biāo)表結(jié)構(gòu)(類型、長度骗污、名稱)崇猫,通過源目標(biāo)數(shù)據(jù)結(jié)構(gòu)+清洗規(guī)則我們可以得出目標(biāo)表結(jié)構(gòu)要求結(jié)論,因此可以對目標(biāo)表和源表做個結(jié)構(gòu)上的對比驗證需忿。

例如:某原始需求是希望可以得到用戶歷史付費最高額度邓尤,清洗規(guī)則中簡單的說明了通過數(shù)據(jù)源中的price字段值group by uid后取出max(price),可以推斷出price字段未進(jìn)行任何加工贴谎,所以目標(biāo)表結(jié)構(gòu)中price字段的定義應(yīng)該和源表一致汞扎。

2)目標(biāo)表約束驗證

同理上方。確保按預(yù)期為特定表定義約束擅这,包括:主鍵澈魄、外鍵、檢查仲翎、默認(rèn)痹扇、唯一、非空約束溯香。

3)開發(fā)設(shè)計測試分析

了解開發(fā)腳本設(shè)計思路鲫构,評估是否符合需求規(guī)則實現(xiàn),通過數(shù)據(jù)源分析玫坛、需求分析收集到的異常數(shù)據(jù)结笨、臟數(shù)據(jù)進(jìn)行開發(fā)設(shè)計漏洞尋找。

同時通過了解程序路徑湿镀,進(jìn)行異常炕吸、正向場景數(shù)據(jù)流設(shè)計,提供給后續(xù)測試使用勉痴。

例如:上文所述的源數(shù)據(jù)數(shù)據(jù)模型分析赫模,在數(shù)據(jù)源表掃描過程中發(fā)現(xiàn)id出現(xiàn)重復(fù),那么需要程序增加進(jìn)行去重處理蒸矛。

4)調(diào)度策略設(shè)計分析

關(guān)于測試腳本如何調(diào)度瀑罗,清洗規(guī)則需求中通常不會明確說明胸嘴。因此需要充分評估調(diào)度策略是否符合需求,時間差需求是否接受斩祭。

模塊測試劣像、

階段測試場景測試指標(biāo)詳細(xì)說明

模塊測試

一致性驗證特定屬性的數(shù)據(jù)類型和長度可能在文件或表中不同,但語義定義相同停忿。業(yè)務(wù)正常流:口徑一致,邏輯正確

業(yè)務(wù)異常流:考慮業(yè)務(wù)中存在的異常場景

完整性驗證數(shù)據(jù)從條數(shù)蚊伞、長度席赂、大小上都不應(yīng)缺失。1时迫、比較源和目標(biāo)之間的記錄計數(shù)颅停。

2、檢查任何被拒絕的記錄

3掠拳、檢查數(shù)據(jù)不應(yīng)在目標(biāo)表的列中被截斷

4癞揉、檢查邊界值分析

轉(zhuǎn)換轉(zhuǎn)換規(guī)則正確

數(shù)據(jù)精度正確

按照清洗規(guī)則實現(xiàn)了轉(zhuǎn)換規(guī)則

數(shù)據(jù)清理在加載到暫存區(qū)域之前,應(yīng)刪除不必要的列臨時數(shù)據(jù)及時清理

重復(fù)檢查檢查從源中的多個列提取并組合成一列的任何列中是否存在任何重復(fù)值

異常測試設(shè)計異常數(shù)據(jù)溺欧、場景覆蓋測試對象根據(jù)業(yè)務(wù)需求設(shè)計異常數(shù)據(jù)

根據(jù)程序?qū)崿F(xiàn)設(shè)計異常數(shù)據(jù)

增量ETL此測試是通過添加新數(shù)據(jù)來檢查舊數(shù)據(jù)和新數(shù)據(jù)的數(shù)據(jù)完整性喊熟。增量測試驗證插入和更新是否在增量ETL過程中按預(yù)期進(jìn)行處理。

數(shù)據(jù)表現(xiàn)分析評測清洗結(jié)果的數(shù)據(jù)表現(xiàn)姐刁,來評判系統(tǒng)的好壞數(shù)據(jù)趨勢要趨于平穩(wěn)芥牌,波動具備規(guī)律,波動范圍在設(shè)定的閾值之間

加載規(guī)則加載策略的合理性清空重置聂使、覆蓋更新

模塊測試指的是獨立的ETL任務(wù)測試壁拉。這部分的測試思路主要可以分為兩個部分。

1柏靶、面向過程的測試思路

1)數(shù)據(jù)源的測試

指定正確弃理,正確的按照需求實現(xiàn)了源數(shù)據(jù)的抓取。

抓取策略合理屎蜓,通過增量/全量策略來抓取痘昌。驗證插入和更新是否在增量ETL過程中按預(yù)期進(jìn)行處理。

異常測試炬转,通過輸入開發(fā)設(shè)計階段分析控汉、需求評審階段產(chǎn)生的數(shù)據(jù)流,驗證程序的容錯性返吻。

2)轉(zhuǎn)換規(guī)則測試姑子。

數(shù)據(jù)精度處理正確,正確的按照需求實現(xiàn)了轉(zhuǎn)換規(guī)則测僵。

轉(zhuǎn)換規(guī)則正確街佑,通過輸入正向的業(yè)務(wù)數(shù)據(jù)流來驗證規(guī)則的正確性谢翎。

3)目標(biāo)數(shù)據(jù)加載測試。

數(shù)據(jù)加載正確沐旨,正確的按照需求加載處理的結(jié)果到指定數(shù)據(jù)倉庫中森逮。

加載策略合理。使用了正確的加載策略磁携,例如部分指標(biāo)的加載策略應(yīng)該是清空表重置加載數(shù)據(jù)褒侧,部分指標(biāo)則需要覆蓋更新部分即可。

2谊迄、面向結(jié)果的測試思路

1)一致性驗證

部分字段的數(shù)據(jù)類型和長度可能在不同表中不同闷供,但口徑一致/邏輯正確。

口徑一致:在不同的兩個倉庫中同個用戶擁有的資產(chǎn)應(yīng)該一致统诺。

邏輯正確:例如清洗結(jié)果中的周報表與月報表具備邏輯上的關(guān)系歪脏,可以用來加以驗證(比如有些業(yè)務(wù) 周報表相加=月報表)

2)完整性驗證

將整個ETL過程黑盒看待,經(jīng)過這個過程后粮呢,數(shù)據(jù)從條數(shù)婿失、長度、大小上都不應(yīng)缺失啄寡。

比較源和目標(biāo)之間的記錄計數(shù)豪硅。

檢查任何被拒絕的記錄

檢查數(shù)據(jù)不應(yīng)在目標(biāo)表的列中被截斷

檢查邊界值分析

3)重復(fù)檢查

檢查從源中的多個列提取并組合成一列的任何列中是否存在任何重復(fù)值

4)數(shù)據(jù)表現(xiàn)

分析評測清洗結(jié)果的數(shù)據(jù)表現(xiàn),來評判系統(tǒng)的好壞挺物。例如根據(jù)用戶清洗結(jié)果數(shù)據(jù)趨勢來判斷結(jié)果的正確性舟误,舉個比較粗暴的例子:用戶擁有資產(chǎn)在過去的七天都是日均一萬。今日突然為0.則大概率有問題姻乓。

集成測試

階段測試場景測試指標(biāo)詳細(xì)說明

集成測試

腳本運行策略時間差分析

腳本初始化支持

腳本沖突分析

腳本依賴分析

資源分配分析

部分腳本上線需要進(jìn)行初始化支持

部分腳本依賴其他腳本清洗結(jié)果嵌溢。需要再調(diào)度策略上予以滿足

腳本運行穩(wěn)定性觀察長時間調(diào)度運行觀察

仿真數(shù)據(jù)模擬測試

異常容災(zāi)

?持續(xù)性調(diào)度情況觀察,這里可以采用上述的數(shù)據(jù)表現(xiàn)監(jiān)控手段進(jìn)行測試蹋岩。

? ?仿真數(shù)據(jù)模擬赖草,在仿真數(shù)據(jù)環(huán)境進(jìn)行腳本運行情況監(jiān)控。

? ?異常容災(zāi): 臟數(shù)據(jù)處理剪个、數(shù)據(jù)源庫連接失敗重試策略秧骑、數(shù)據(jù)倉庫寫入失敗重試、備份策略

1)腳本運行策略

時間差分析

腳本初始化支持:部分腳本上線需要進(jìn)行初始化支持

腳本沖突分析

腳本依賴分析:部分腳本依賴其他腳本清洗結(jié)果扣囊。需要再調(diào)度策略上予以滿足

資源分配分析

2)腳本運行穩(wěn)定性觀察

? ?持續(xù)性調(diào)度情況觀察乎折,這里可以采用上述的數(shù)據(jù)表現(xiàn)監(jiān)控手段進(jìn)行測試。

? ?仿真數(shù)據(jù)模擬侵歇,在仿真數(shù)據(jù)環(huán)境進(jìn)行腳本運行情況監(jiān)控骂澄。

? ?異常容災(zāi): 臟數(shù)據(jù)處理、數(shù)據(jù)源庫連接失敗重試策略惕虑、數(shù)據(jù)倉庫寫入失敗重試坟冲、備份策略

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末磨镶,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子健提,更是在濱河造成了極大的恐慌琳猫,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡澳叉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門账千,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人癞蚕,你說我怎么就攤上這事蕊爵』愿纾” “怎么了桦山?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長醋旦。 經(jīng)常有香客問我恒水,道長,這世上最難降的妖魔是什么饲齐? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任钉凌,我火速辦了婚禮,結(jié)果婚禮上捂人,老公的妹妹穿的比我還像新娘御雕。我一直安慰自己,他們只是感情好滥搭,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布酸纲。 她就那樣靜靜地躺著,像睡著了一般瑟匆。 火紅的嫁衣襯著肌膚如雪闽坡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天愁溜,我揣著相機與錄音疾嗅,去河邊找鬼。 笑死冕象,一個胖子當(dāng)著我的面吹牛代承,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播渐扮,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼次泽,長吁一口氣:“原來是場噩夢啊……” “哼穿仪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起意荤,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤啊片,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后玖像,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體紫谷,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年捐寥,在試婚紗的時候發(fā)現(xiàn)自己被綠了笤昨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡握恳,死狀恐怖瞒窒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情乡洼,我是刑警寧澤崇裁,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站束昵,受9級特大地震影響拔稳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锹雏,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一巴比、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧礁遵,春花似錦轻绞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至晰赞,卻和暖如春稼病,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背掖鱼。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工然走, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人戏挡。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓芍瑞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親褐墅。 傳聞我的和親對象是個殘疾皇子拆檬,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容