這篇文章是應(yīng)一位讀者關(guān)于如何測(cè)試數(shù)據(jù)倉(cāng)庫(kù)的問(wèn)題而寫(xiě)。他的問(wèn)題是:“在數(shù)據(jù)倉(cāng)庫(kù)環(huán)境下進(jìn)行測(cè)試時(shí)如何處理需求與質(zhì)量的關(guān)系?”
雖然數(shù)據(jù)倉(cāng)庫(kù)的測(cè)試是一個(gè)驚奇而神秘的過(guò)程,但實(shí)際上它與其它測(cè)試項(xiàng)目并無(wú)多大區(qū)別?;镜南到y(tǒng)分析和測(cè)試過(guò)程在這里仍然有效。我們來(lái)看一下其中的幾個(gè)步驟,并研究如何在數(shù)據(jù)倉(cāng)庫(kù)環(huán)境中應(yīng)用。
分析源文件
與其它項(xiàng)目一樣,測(cè)試數(shù)據(jù)倉(cāng)庫(kù)部署時(shí),通常都會(huì)有一份相關(guān)的說(shuō)明文件。雖然這些文件對(duì)于創(chuàng)建基本的測(cè)試策略非常有用,但經(jīng)常會(huì)缺少一些關(guān)于測(cè)試開(kāi)發(fā)與執(zhí)行的詳細(xì)資料。有時(shí)會(huì)有一些其它文件解釋技術(shù)上的細(xì)節(jié)問(wèn)題,即從源到目標(biāo)的轉(zhuǎn)化(source-to-target mappings)說(shuō)明文件。這些文件詳細(xì)說(shuō)明了數(shù)據(jù)的來(lái)源、如何對(duì)數(shù)據(jù)進(jìn)行操作,以及存儲(chǔ)到哪里。如果能拿到這些文件,關(guān)于系統(tǒng)設(shè)計(jì)的文件在設(shè)計(jì)測(cè)試策略時(shí)也會(huì)變得更加有用。
開(kāi)發(fā)策略和測(cè)試計(jì)劃
分析了各種各樣的源文件后,就要開(kāi)始創(chuàng)建測(cè)試策略。我發(fā)現(xiàn)從生命周期和質(zhì)量的角度來(lái)看,增量測(cè)試是測(cè)試數(shù)據(jù)倉(cāng)庫(kù)的辦法。這從本質(zhì)上意味著開(kāi)發(fā)團(tuán)隊(duì)會(huì)從開(kāi)發(fā)過(guò)程的早期開(kāi)始,將各種小組件交付給測(cè)試團(tuán)隊(duì)。這個(gè)辦法的主要優(yōu)點(diǎn)是避免交付讓人吃驚的“大塊”組件,可以從早期開(kāi)始檢驗(yàn)缺陷,并使調(diào)試變得簡(jiǎn)單。此外,這個(gè)方法還有助于在開(kāi)發(fā)與測(cè)試周期中建立詳細(xì)的過(guò)程。具體到數(shù)據(jù)倉(cāng)庫(kù)測(cè)試,即是對(duì)數(shù)據(jù)獲取分段表,然后是增量表、基本的歷史表格、BI視圖等的測(cè)試。
另一個(gè)制定數(shù)據(jù)倉(cāng)庫(kù)測(cè)試策略的主要問(wèn)題是基于分析(analysis-based)的測(cè)試方式和基于查詢(xún)(analysis-based)的測(cè)試方式的選擇。純基于分析的方法是讓測(cè)試分析師通過(guò)分析目標(biāo)數(shù)據(jù)和相關(guān)標(biāo)準(zhǔn)計(jì)算出預(yù)期結(jié)果?;诓樵?xún)的方法有相同的基本分析步驟,但更進(jìn)一步,用SQL查詢(xún)語(yǔ)言編寫(xiě)預(yù)期結(jié)果。這為將來(lái)建立回歸測(cè)試過(guò)程節(jié)省了很大精力。如果測(cè)試是一次性的,那么用基于分析的方式就足夠了,因?yàn)橥ǔ_@種方式較快一些。反之,如果企業(yè)對(duì)回歸測(cè)試有持續(xù)的需求,那么基于查詢(xún)的方式會(huì)更為合適。
測(cè)試的開(kāi)發(fā)與執(zhí)行
不管在測(cè)試執(zhí)行過(guò)程之前還是之后進(jìn)行測(cè)試的開(kāi)發(fā),要根據(jù)上行需求的穩(wěn)定性和分析過(guò)程決定。如果情況變動(dòng)比較頻繁,那么早期進(jìn)行的測(cè)試開(kāi)發(fā)可能大部分都會(huì)被廢棄。這種場(chǎng)合,實(shí)時(shí)進(jìn)行的整合的測(cè)試開(kāi)發(fā)和執(zhí)行過(guò)程通常會(huì)更有效果。不管怎樣,在設(shè)計(jì)測(cè)試開(kāi)發(fā)和執(zhí)行過(guò)程的框架時(shí),參考一下測(cè)試分類(lèi)總是有用的。比如,一些數(shù)據(jù)倉(cāng)庫(kù)的測(cè)試分類(lèi)可能有:
記錄計(jì)數(shù)(預(yù)期與實(shí)際對(duì)比)
副本記錄
參考數(shù)據(jù)有效性
參照完整性
錯(cuò)誤與異常邏輯
增量過(guò)程與歷史過(guò)程
控制欄值與默認(rèn)值
除這些分類(lèi)外,還可以參考缺陷分類(lèi)學(xué),比如Larry Greenfield的分類(lèi)。
測(cè)試執(zhí)行時(shí),準(zhǔn)確的狀態(tài)報(bào)告過(guò)程是經(jīng)常被忽略的一個(gè)方面。在確定團(tuán)隊(duì)里的其他人明白你的方法的前提下,測(cè)試分類(lèi)和測(cè)試進(jìn)度可以保證他們對(duì)測(cè)試狀態(tài)也有一個(gè)清楚的概念。有了詳細(xì)的規(guī)劃并堅(jiān)持到底,以及良好的溝通,就能建立一個(gè)數(shù)據(jù)倉(cāng)庫(kù)測(cè)試過(guò)程,幫助項(xiàng)目團(tuán)隊(duì)取得滿意的成果。
雖然數(shù)據(jù)倉(cāng)庫(kù)的測(cè)試是一個(gè)驚奇而神秘的過(guò)程,但實(shí)際上它與其它測(cè)試項(xiàng)目并無(wú)多大區(qū)別?;镜南到y(tǒng)分析和測(cè)試過(guò)程在這里仍然有效。我們來(lái)看一下其中的幾個(gè)步驟,并研究如何在數(shù)據(jù)倉(cāng)庫(kù)環(huán)境中應(yīng)用。
分析源文件
與其它項(xiàng)目一樣,測(cè)試數(shù)據(jù)倉(cāng)庫(kù)部署時(shí),通常都會(huì)有一份相關(guān)的說(shuō)明文件。雖然這些文件對(duì)于創(chuàng)建基本的測(cè)試策略非常有用,但經(jīng)常會(huì)缺少一些關(guān)于測(cè)試開(kāi)發(fā)與執(zhí)行的詳細(xì)資料。有時(shí)會(huì)有一些其它文件解釋技術(shù)上的細(xì)節(jié)問(wèn)題,即從源到目標(biāo)的轉(zhuǎn)化(source-to-target mappings)說(shuō)明文件。這些文件詳細(xì)說(shuō)明了數(shù)據(jù)的來(lái)源、如何對(duì)數(shù)據(jù)進(jìn)行操作,以及存儲(chǔ)到哪里。如果能拿到這些文件,關(guān)于系統(tǒng)設(shè)計(jì)的文件在設(shè)計(jì)測(cè)試策略時(shí)也會(huì)變得更加有用。
開(kāi)發(fā)策略和測(cè)試計(jì)劃
分析了各種各樣的源文件后,就要開(kāi)始創(chuàng)建測(cè)試策略。我發(fā)現(xiàn)從生命周期和質(zhì)量的角度來(lái)看,增量測(cè)試是測(cè)試數(shù)據(jù)倉(cāng)庫(kù)的辦法。這從本質(zhì)上意味著開(kāi)發(fā)團(tuán)隊(duì)會(huì)從開(kāi)發(fā)過(guò)程的早期開(kāi)始,將各種小組件交付給測(cè)試團(tuán)隊(duì)。這個(gè)辦法的主要優(yōu)點(diǎn)是避免交付讓人吃驚的“大塊”組件,可以從早期開(kāi)始檢驗(yàn)缺陷,并使調(diào)試變得簡(jiǎn)單。此外,這個(gè)方法還有助于在開(kāi)發(fā)與測(cè)試周期中建立詳細(xì)的過(guò)程。具體到數(shù)據(jù)倉(cāng)庫(kù)測(cè)試,即是對(duì)數(shù)據(jù)獲取分段表,然后是增量表、基本的歷史表格、BI視圖等的測(cè)試。
另一個(gè)制定數(shù)據(jù)倉(cāng)庫(kù)測(cè)試策略的主要問(wèn)題是基于分析(analysis-based)的測(cè)試方式和基于查詢(xún)(analysis-based)的測(cè)試方式的選擇。純基于分析的方法是讓測(cè)試分析師通過(guò)分析目標(biāo)數(shù)據(jù)和相關(guān)標(biāo)準(zhǔn)計(jì)算出預(yù)期結(jié)果?;诓樵?xún)的方法有相同的基本分析步驟,但更進(jìn)一步,用SQL查詢(xún)語(yǔ)言編寫(xiě)預(yù)期結(jié)果。這為將來(lái)建立回歸測(cè)試過(guò)程節(jié)省了很大精力。如果測(cè)試是一次性的,那么用基于分析的方式就足夠了,因?yàn)橥ǔ_@種方式較快一些。反之,如果企業(yè)對(duì)回歸測(cè)試有持續(xù)的需求,那么基于查詢(xún)的方式會(huì)更為合適。
測(cè)試的開(kāi)發(fā)與執(zhí)行
不管在測(cè)試執(zhí)行過(guò)程之前還是之后進(jìn)行測(cè)試的開(kāi)發(fā),要根據(jù)上行需求的穩(wěn)定性和分析過(guò)程決定。如果情況變動(dòng)比較頻繁,那么早期進(jìn)行的測(cè)試開(kāi)發(fā)可能大部分都會(huì)被廢棄。這種場(chǎng)合,實(shí)時(shí)進(jìn)行的整合的測(cè)試開(kāi)發(fā)和執(zhí)行過(guò)程通常會(huì)更有效果。不管怎樣,在設(shè)計(jì)測(cè)試開(kāi)發(fā)和執(zhí)行過(guò)程的框架時(shí),參考一下測(cè)試分類(lèi)總是有用的。比如,一些數(shù)據(jù)倉(cāng)庫(kù)的測(cè)試分類(lèi)可能有:
記錄計(jì)數(shù)(預(yù)期與實(shí)際對(duì)比)
副本記錄
參考數(shù)據(jù)有效性
參照完整性
錯(cuò)誤與異常邏輯
增量過(guò)程與歷史過(guò)程
控制欄值與默認(rèn)值
除這些分類(lèi)外,還可以參考缺陷分類(lèi)學(xué),比如Larry Greenfield的分類(lèi)。
測(cè)試執(zhí)行時(shí),準(zhǔn)確的狀態(tài)報(bào)告過(guò)程是經(jīng)常被忽略的一個(gè)方面。在確定團(tuán)隊(duì)里的其他人明白你的方法的前提下,測(cè)試分類(lèi)和測(cè)試進(jìn)度可以保證他們對(duì)測(cè)試狀態(tài)也有一個(gè)清楚的概念。有了詳細(xì)的規(guī)劃并堅(jiān)持到底,以及良好的溝通,就能建立一個(gè)數(shù)據(jù)倉(cāng)庫(kù)測(cè)試過(guò)程,幫助項(xiàng)目團(tuán)隊(duì)取得滿意的成果。

