劉珊艷,胡 秀,嚴(yán) 武
(1 荊楚理工學(xué)院計(jì)算機(jī)工程學(xué)院,湖北 荊門 448000; 2 荊門市優(yōu)思信息服務(wù)有限公司,湖北 荊門 448000)
大數(shù)據(jù)時(shí)代的到來,使得數(shù)據(jù)成為了重要的經(jīng)濟(jì)資產(chǎn)[1]。大數(shù)據(jù)時(shí)代,也顛覆了以往對(duì)數(shù)據(jù)的慣性思考方式,要保證數(shù)據(jù)執(zhí)行,軟件質(zhì)量、測(cè)試質(zhì)量、數(shù)據(jù)使用場(chǎng)景等,都需要重新變換一個(gè)新的角度,對(duì)軟件進(jìn)行更全方位的思考。
軟件測(cè)試是為了發(fā)現(xiàn)軟件缺陷而運(yùn)行測(cè)試的過程。對(duì)于常規(guī)的系統(tǒng)測(cè)試,測(cè)試人員根據(jù)需求規(guī)格說明的描述,判斷系統(tǒng)的輸出結(jié)果與需求描述的預(yù)期結(jié)果是否一致:若一致,系統(tǒng)的準(zhǔn)確性就得到了保證;若不一致,系統(tǒng)就是有缺陷的。這個(gè)看似必然的測(cè)試準(zhǔn)則在大數(shù)據(jù)系統(tǒng)測(cè)試中已經(jīng)不成立了。大數(shù)據(jù)系統(tǒng)軟件測(cè)試,在很多場(chǎng)景下系統(tǒng)預(yù)期的輸出結(jié)果是無法直接確定的。
大數(shù)據(jù)時(shí)代對(duì)軟件測(cè)試要求提升到了一個(gè)新高度。大數(shù)據(jù)系統(tǒng)架構(gòu)設(shè)計(jì)的復(fù)雜性使得系統(tǒng)測(cè)試也非常復(fù)雜,軟件測(cè)試的各個(gè)方面都會(huì)受到大數(shù)據(jù)的影響[2],這使得大數(shù)據(jù)測(cè)試非常有挑戰(zhàn)性。
當(dāng)前軟件測(cè)試?yán)碚摯蟛糠质?0多年前提出的基礎(chǔ)測(cè)試?yán)碚?。這些理論仍然可以設(shè)計(jì)出很完善的測(cè)試案例,前提是軟件功能明確,且在需求規(guī)格說明中作了準(zhǔn)確的描述。
在大數(shù)據(jù)場(chǎng)景下無論是趨勢(shì)分析還是圖論計(jì)算都變得極其困難。因此預(yù)期輸出結(jié)果O′無法確定,在這種情況下,確定測(cè)試用例I是否能夠通過也同樣變得極其困難[3]。
大數(shù)據(jù)應(yīng)用的鮮明特征之一就是數(shù)據(jù)的多樣性,既有結(jié)構(gòu)化的關(guān)系數(shù)據(jù)、圖數(shù)據(jù)、軌跡數(shù)據(jù),也有非結(jié)構(gòu)化的文本數(shù)據(jù)、圖片數(shù)據(jù),甚至是視頻數(shù)據(jù)等。大數(shù)據(jù)軟件的一個(gè)基本要求就是能夠支持結(jié)構(gòu)化、 半結(jié)構(gòu)化、非結(jié)構(gòu)化等多種數(shù)據(jù)類型的組織、存儲(chǔ)和管理,形成以量質(zhì)相融合的知識(shí)管理為中心、并以此提供面向知識(shí)服務(wù)的快速應(yīng)用開發(fā)接口[4]。故大數(shù)據(jù)應(yīng)用程序的測(cè)試,除了要驗(yàn)證其功能、性能,還要驗(yàn)證數(shù)據(jù)處理。即數(shù)據(jù)能否正確地加載至系統(tǒng),加載后的數(shù)據(jù)與源數(shù)據(jù)是否一致,數(shù)據(jù)映射、清洗過程是否正常,以及經(jīng)過大數(shù)據(jù)處理框架后數(shù)據(jù)的準(zhǔn)確性和完整性。
大數(shù)據(jù)系統(tǒng)的應(yīng)用,目的是為了得到數(shù)據(jù)和數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系。數(shù)據(jù)關(guān)聯(lián)顛覆了以往對(duì)數(shù)據(jù)的慣性思考方式。保證數(shù)據(jù)質(zhì)量、軟件質(zhì)量、數(shù)據(jù)利用率等,都需要站在更高的高度以全新的角度進(jìn)行全方位的思考。這種思考方式稱為大數(shù)據(jù)思維,從數(shù)據(jù)的應(yīng)用場(chǎng)景切入,思考如何挖掘數(shù)據(jù)本身的價(jià)值,并將其轉(zhuǎn)變?yōu)槭袌?chǎng)價(jià)值。所以大數(shù)據(jù)軟件的思維方式和傳統(tǒng)軟件將完全不同。即需要全部數(shù)據(jù)樣本而不是抽樣、關(guān)注效率而不是精確度、關(guān)注相關(guān)性而不是因果關(guān)系[5]。大數(shù)據(jù)測(cè)試除了關(guān)注系統(tǒng)功能和性能外,還要關(guān)注數(shù)據(jù)本身的價(jià)值。面對(duì)海量數(shù)據(jù),思考如何應(yīng)用這些數(shù)據(jù),如何有效提升數(shù)據(jù)的價(jià)值是測(cè)試的關(guān)鍵所在。
根據(jù)數(shù)據(jù)從數(shù)據(jù)源向商務(wù)決策報(bào)表轉(zhuǎn)化的過程,總結(jié)整理大數(shù)據(jù)的處理流程如圖1所示。
圖1 大數(shù)據(jù)處理流程
首先,進(jìn)行數(shù)據(jù)采集、導(dǎo)入。這一步將根據(jù)具體的應(yīng)用背景和業(yè)務(wù)需求,將各種數(shù)據(jù)源如網(wǎng)絡(luò)日志、物聯(lián)網(wǎng)、互聯(lián)網(wǎng)文本和文件等存儲(chǔ)到多個(gè)數(shù)據(jù)庫中,在這一階段可以使用Flume工具、爬蟲工具和Sqoop工具。其次,進(jìn)行數(shù)據(jù)清洗分析。數(shù)據(jù)加載到Hdfs后,MapReduce開始對(duì)原始數(shù)據(jù)進(jìn)行清洗和統(tǒng)計(jì)分析。把一堆雜亂無章的數(shù)據(jù)按照某種特例歸納起來,然后處理得到想要的結(jié)果。Hive可以應(yīng)用到數(shù)據(jù)分析的場(chǎng)景中來,它是一種ETL(Extract-Transform-Load抽取、轉(zhuǎn)換和加載)工具,數(shù)據(jù)經(jīng)過ETL產(chǎn)生中間表或產(chǎn)生最終的報(bào)表。第三,使用數(shù)據(jù)挖掘技術(shù)。對(duì)于前面階段處理后的數(shù)據(jù)進(jìn)行數(shù)據(jù)挖掘,使用不同的算法對(duì)數(shù)據(jù)進(jìn)行計(jì)算,從而滿足更進(jìn)一步數(shù)據(jù)分析需求。數(shù)據(jù)挖掘作為一個(gè)術(shù)語,用于以下六類活動(dòng):分類、估算、預(yù)測(cè)、關(guān)聯(lián)規(guī)則、聚類、描述[6],主要使用的技術(shù)是機(jī)器學(xué)習(xí)以及能夠從復(fù)雜數(shù)據(jù)中獲取有價(jià)值的知識(shí)的深度學(xué)習(xí)等[7]。最后,就是數(shù)據(jù)展示。當(dāng)數(shù)據(jù)統(tǒng)計(jì)分析結(jié)束后,產(chǎn)生的數(shù)據(jù)可以轉(zhuǎn)移到數(shù)據(jù)倉庫或有特定應(yīng)用的數(shù)據(jù)集市中,也可以使用Sqoop將產(chǎn)生的數(shù)據(jù)導(dǎo)出到傳統(tǒng)的數(shù)據(jù)庫如Mysql中。Hadoop中任務(wù)的調(diào)度與協(xié)調(diào)由任務(wù)調(diào)度框架Oozie來完成。對(duì)于導(dǎo)出的數(shù)據(jù)可以使用BI(Business Intelligence商業(yè)智能)工具產(chǎn)生報(bào)表供用戶作出準(zhǔn)確的決策。
大數(shù)據(jù)應(yīng)用程序測(cè)試更多的是驗(yàn)證其數(shù)據(jù)處理過程,而不僅僅是測(cè)試軟件產(chǎn)品的單個(gè)特性。對(duì)于大數(shù)據(jù)測(cè)試工程師而言,如何高效正確的驗(yàn)證經(jīng)過大數(shù)據(jù)工具/框架成功處理過的至少百萬兆字節(jié)的數(shù)據(jù)的準(zhǔn)確性將會(huì)是一個(gè)巨大的挑戰(zhàn)。大數(shù)據(jù)處理的三個(gè)特性[8]是大批量、實(shí)時(shí)性、可交互。
除此之外,在測(cè)試應(yīng)用程序之前,有必要檢查數(shù)據(jù)的質(zhì)量,并將其視為數(shù)據(jù)庫測(cè)試的一部分。它包括檢查各種特征,如一致性、準(zhǔn)確性、重復(fù)性、數(shù)據(jù)完整性等。
大數(shù)據(jù)多源異構(gòu)、規(guī)模巨大、快速多變等特性使得傳統(tǒng)的計(jì)算不能有效支持大數(shù)據(jù)的處理、分析和計(jì)算[9]。同樣,在進(jìn)行大數(shù)據(jù)的測(cè)試時(shí),由于數(shù)據(jù)規(guī)模大,內(nèi)在關(guān)聯(lián)關(guān)系密切而復(fù)雜,價(jià)值密度分布極不均衡,這些特征都要求大數(shù)據(jù)測(cè)試與傳統(tǒng)的數(shù)據(jù)庫測(cè)試技術(shù)全然不同。表1給出了傳統(tǒng)數(shù)據(jù)庫測(cè)測(cè)試與大數(shù)據(jù)測(cè)試的不同之處。
表1 傳統(tǒng)數(shù)據(jù)庫測(cè)試VS大數(shù)據(jù)測(cè)試
為了支持?jǐn)?shù)據(jù)的讀寫刪,測(cè)試需要對(duì)提供給用戶的所有的基本功能(接口)進(jìn)行測(cè)試,保證基本功能的正確。由于大數(shù)據(jù)系統(tǒng)往往由服務(wù)器集群組成,目前可達(dá)到成千上萬個(gè)核的集群。測(cè)試需要在上百臺(tái)甚至上千臺(tái)Blade機(jī)器進(jìn)行,以期覆蓋幾十種操作系統(tǒng)。硬件支持,性能、壓力、可用性、安全性、瀏覽器、數(shù)據(jù)庫等都是大數(shù)據(jù)測(cè)試的要點(diǎn)[10]。
大數(shù)據(jù)測(cè)試不同于常規(guī)的應(yīng)用測(cè)試,為了應(yīng)對(duì)數(shù)據(jù)爆炸性增長(zhǎng),應(yīng)該具備以下一些基礎(chǔ)環(huán)境:1)擁有足夠的存儲(chǔ)設(shè)備來存儲(chǔ)和處理大數(shù)據(jù);2)擁有集群來做分布式節(jié)點(diǎn)和數(shù)據(jù)處理;3)至少擁有足夠的CPU、內(nèi)存來確保有高性能的處理基礎(chǔ)。
大數(shù)據(jù)應(yīng)用的測(cè)試過程見圖2,不同結(jié)構(gòu)的數(shù)據(jù)首先被采集加載至Hadoop系統(tǒng)中,再通過ETL技術(shù)將業(yè)務(wù)系統(tǒng)的數(shù)據(jù)抽取、清洗轉(zhuǎn)換之后加載到數(shù)據(jù)倉庫,為BI商業(yè)智能的決策提供分析依據(jù)。
圖2 大數(shù)據(jù)測(cè)試流程
大數(shù)據(jù)測(cè)試大體可以分為三大步驟。
第一步,數(shù)據(jù)預(yù)處理驗(yàn)證。在進(jìn)行大數(shù)據(jù)測(cè)試時(shí),首先要在Hadoop前驗(yàn)證數(shù)據(jù)的準(zhǔn)確性。數(shù)據(jù)來源可能是關(guān)系數(shù)據(jù)庫、日志系統(tǒng)、社交網(wǎng)絡(luò)等,應(yīng)該確保正確的數(shù)據(jù)加載到系統(tǒng)中。要驗(yàn)證加載的數(shù)據(jù)和源數(shù)據(jù)是一致的。要驗(yàn)證數(shù)據(jù)被正確的提取和加載至HDFS中,且被分割、復(fù)制到不同的數(shù)據(jù)節(jié)點(diǎn)中。
第二步,MapReduce數(shù)據(jù)輸出驗(yàn)證。當(dāng)數(shù)據(jù)加載進(jìn)行HDFS后,MapReduce開始對(duì)來自不同數(shù)據(jù)源的數(shù)據(jù)進(jìn)行處理。在本階段,主要驗(yàn)證每一個(gè)處理節(jié)點(diǎn)的業(yè)務(wù)邏輯是否正確。Map過程和 Reduce過程工作正常。驗(yàn)證數(shù)據(jù)聚合、合并是否正確。驗(yàn)證MapReduce處理過程的key/value對(duì)已正確生成。驗(yàn)證經(jīng)過MapReduce后數(shù)據(jù)的準(zhǔn)確性。
第三步,輸出結(jié)果驗(yàn)證。當(dāng)MapReduce過程結(jié)束后,產(chǎn)生的數(shù)據(jù)輸出文件將被按需移至數(shù)據(jù)倉庫或其它的事務(wù)型系統(tǒng)中。在此過程中,可能會(huì)由于不正確地應(yīng)用轉(zhuǎn)換規(guī)則,從HDFS中提取的數(shù)據(jù)不完全而帶來問題,這階段主要驗(yàn)證:驗(yàn)證數(shù)據(jù)轉(zhuǎn)換規(guī)則是否正確應(yīng)用;驗(yàn)證目標(biāo)系統(tǒng)數(shù)據(jù)加載是否成功;驗(yàn)證數(shù)據(jù)的完整性;通過比較目標(biāo)數(shù)據(jù)和HDFS文件數(shù)據(jù)來驗(yàn)證是否有數(shù)據(jù)損壞。
ETL即數(shù)據(jù)抽取、轉(zhuǎn)換、裝載的過程。ETL能夠轉(zhuǎn)換不同結(jié)構(gòu)、類型的數(shù)據(jù)集為統(tǒng)一的結(jié)構(gòu),以便后續(xù)使用BI工具生成有意義的分析和報(bào)表。ETL測(cè)試的目的是確保在業(yè)務(wù)轉(zhuǎn)換之后從源加載到目標(biāo)的數(shù)據(jù)是準(zhǔn)確的。它還包括在源和目標(biāo)之間使用的各種中間階段驗(yàn)證數(shù)據(jù)。與其他測(cè)試過程相似,ETL也經(jīng)歷了不同的階段。ETL過程和ETL測(cè)試過程的不同階段如圖3所示。ETL測(cè)試要完成的任務(wù)分別是:確定數(shù)據(jù)源和需求,數(shù)據(jù)獲取,實(shí)現(xiàn)業(yè)務(wù)邏輯和維度建模,建立和填充數(shù)據(jù),生成報(bào)告。
圖3 ETL過程圖和ETL測(cè)試過程
隨著業(yè)務(wù)的發(fā)展擴(kuò)張,產(chǎn)生的數(shù)據(jù)越來越多,這些數(shù)據(jù)的收集方式、原始數(shù)據(jù)格式、數(shù)據(jù)量、存儲(chǔ)要求、使用場(chǎng)景等方面有很大的差異。為了確保從源數(shù)據(jù)到目標(biāo)數(shù)據(jù)經(jīng)過不同階段業(yè)務(wù)轉(zhuǎn)換完成后是準(zhǔn)確的,ETL測(cè)試由此展開[11]。ETL測(cè)試的主要內(nèi)容如下。
1)生產(chǎn)確認(rèn)測(cè)試。該類型的ETL測(cè)試是在數(shù)據(jù)遷移至生產(chǎn)系統(tǒng)時(shí)進(jìn)行的。為了提高商業(yè)決策的準(zhǔn)確性,生產(chǎn)系統(tǒng)中的數(shù)據(jù)必須以正確的順序進(jìn)行排列。
2)源數(shù)據(jù)到目標(biāo)數(shù)據(jù)測(cè)試。該類型的測(cè)試主要驗(yàn)證所轉(zhuǎn)換的數(shù)據(jù)值是否是預(yù)期的數(shù)據(jù)值。
3)升級(jí)測(cè)試。該類型的ETL測(cè)試可以自動(dòng)生成,能節(jié)省大量的測(cè)試開發(fā)時(shí)間。主要檢查舊應(yīng)用或存儲(chǔ)庫中提取的數(shù)據(jù)是否與新應(yīng)用或新存儲(chǔ)庫中的數(shù)據(jù)完全相同。
4)元數(shù)據(jù)測(cè)試。元數(shù)據(jù)測(cè)試包括數(shù)據(jù)類型檢查、數(shù)據(jù)長(zhǎng)度檢查和索引/約束檢查。
5)數(shù)據(jù)完整性測(cè)試。為了驗(yàn)證所有預(yù)期的數(shù)據(jù)都從源加載到目標(biāo)中,需要進(jìn)行數(shù)據(jù)完整性測(cè)試。在數(shù)據(jù)完整性測(cè)試過程中,還可以進(jìn)行一些簡(jiǎn)單的轉(zhuǎn)換或無轉(zhuǎn)換的源與目標(biāo)之間的計(jì)數(shù)、聚合和實(shí)際數(shù)據(jù)比較和驗(yàn)證的測(cè)試。
6)數(shù)據(jù)準(zhǔn)確性測(cè)試。確保數(shù)據(jù)按預(yù)期準(zhǔn)確加載和準(zhǔn)確轉(zhuǎn)換是數(shù)據(jù)準(zhǔn)確性測(cè)試的目標(biāo)。
7)數(shù)據(jù)轉(zhuǎn)換測(cè)試。數(shù)據(jù)轉(zhuǎn)換測(cè)試是一個(gè)復(fù)雜的過程,并不是簡(jiǎn)單的寫一個(gè)源SQL查詢并將輸出與目標(biāo)數(shù)據(jù)進(jìn)行比較來實(shí)現(xiàn)的??赡苄枰獮槊恳恍羞\(yùn)行多個(gè)SQL查詢來驗(yàn)證轉(zhuǎn)換規(guī)則。
8)數(shù)據(jù)質(zhì)量測(cè)試。數(shù)據(jù)質(zhì)量測(cè)試包含語法測(cè)試和參照測(cè)試。為了避免在業(yè)務(wù)過程中由于日期或唯一編號(hào)(例如訂單號(hào))引起的錯(cuò)誤,需要進(jìn)行數(shù)據(jù)質(zhì)量測(cè)試。語法測(cè)試:根據(jù)無效字符、字符模式、不正確大小寫等報(bào)告臟數(shù)據(jù)。參照測(cè)試:基于數(shù)據(jù)模型檢查數(shù)據(jù),例如客戶ID。數(shù)據(jù)質(zhì)量測(cè)試包含:數(shù)字檢查、日期檢查、精度檢查、數(shù)據(jù)檢查、空值校驗(yàn)等。
9)增量ETL測(cè)試。增量測(cè)試驗(yàn)證插入操作和更新操作在增量ETL過程中是否按照預(yù)期被處理,并檢查添加新數(shù)據(jù)時(shí)新舊數(shù)據(jù)的數(shù)據(jù)完整性。
10)GUI/導(dǎo)航測(cè)試。該類型測(cè)試主要檢查大數(shù)據(jù)報(bào)告的GUI/導(dǎo)航方面是否正常。
ETL測(cè)試過程是測(cè)試數(shù)據(jù)倉庫中一個(gè)至關(guān)重要的階段,幾乎也是最復(fù)雜的階段,因?yàn)樗苯佑绊憯?shù)據(jù)的質(zhì)量。每次ETL過程的失效都會(huì)導(dǎo)致在數(shù)據(jù)倉庫中加載不正確的數(shù)據(jù),從而導(dǎo)致提供錯(cuò)誤的數(shù)據(jù)以供商務(wù)決策,最終導(dǎo)致不準(zhǔn)確決策。ETL測(cè)試的一般方法是使用SQL腳本或手工測(cè)試數(shù)據(jù)。這些ETL測(cè)試方法非常耗時(shí),容易出錯(cuò),并且很少提供完整的測(cè)試覆蓋率。為了在生產(chǎn)和開發(fā)環(huán)境中加速、提高ETL測(cè)試的覆蓋率、降低成本、提高缺陷檢測(cè)率,自動(dòng)化測(cè)試已經(jīng)被證明是提高數(shù)據(jù)倉庫系統(tǒng)質(zhì)量的有效手段。但ETL自動(dòng)化測(cè)試還面臨一些挑戰(zhàn)和限制[12]:
1)人們普遍認(rèn)為并不是所有的數(shù)據(jù)倉庫測(cè)試都可以自動(dòng)化,只是一些關(guān)鍵的和重復(fù)的測(cè)試可以使用自動(dòng)化工具來實(shí)現(xiàn)。
2)數(shù)據(jù)倉庫由許多表和記錄組成,增加了測(cè)試的復(fù)雜性。
3)數(shù)據(jù)倉庫中的數(shù)據(jù)來自多個(gè)源系統(tǒng),在測(cè)試過程中,必須檢查來自源系統(tǒng)和加載在數(shù)據(jù)倉庫中的數(shù)據(jù)之間的數(shù)據(jù)。
4)自動(dòng)化測(cè)試不能完全取代手工測(cè)試。仍然需要手工測(cè)試來處理自動(dòng)化可能無法捕獲所有內(nèi)容的復(fù)雜情況。
5)業(yè)務(wù)對(duì)象報(bào)告測(cè)試仍然是自動(dòng)化測(cè)試的一個(gè)挑戰(zhàn)。
6)自動(dòng)化工具的成本較高導(dǎo)致人們依賴于手工測(cè)試。
圖4給出了自動(dòng)化測(cè)試的框架。建議的框架包括:三個(gè)存儲(chǔ)庫、映射文檔、兩個(gè)流程和結(jié)果報(bào)告。這三個(gè)存儲(chǔ)庫分別是:存儲(chǔ)數(shù)據(jù)倉庫元數(shù)據(jù)的元數(shù)據(jù)存儲(chǔ)庫、用于存儲(chǔ)映射文檔和元數(shù)據(jù)存儲(chǔ)庫所需信息的數(shù)據(jù)庫模式存儲(chǔ)庫、存儲(chǔ)質(zhì)量參數(shù)定義及其相關(guān)測(cè)試用例的測(cè)試程序存儲(chǔ)庫。將使用兩個(gè)流程根據(jù)前面存儲(chǔ)庫中存儲(chǔ)的數(shù)據(jù)生成和執(zhí)行測(cè)試用例,最后生成關(guān)于通過的測(cè)試用例的結(jié)果報(bào)告。
圖4 ETL自動(dòng)化進(jìn)程測(cè)試框架
ETL自動(dòng)化測(cè)試的優(yōu)勢(shì)有[13]:1)減少花費(fèi)在測(cè)試階段的時(shí)間;2)測(cè)試的可重用性;3)節(jié)省人力;4)利用工具生成測(cè)試報(bào)告并記錄測(cè)試結(jié)果;5)每更改數(shù)據(jù)或業(yè)務(wù)規(guī)則后減少回歸測(cè)試工作。
在本節(jié)中,使用員工信息數(shù)據(jù)庫來檢測(cè)ETL過程執(zhí)行后,源數(shù)據(jù)到目標(biāo)數(shù)據(jù)轉(zhuǎn)換的準(zhǔn)確性。員工信息表的數(shù)據(jù)由另一個(gè)數(shù)據(jù)庫中的多表填充,圖5顯示用于填充員工維度表的源數(shù)據(jù)庫。源數(shù)據(jù)庫包括Person(人員)表、Employee(員工)表、EmployDepartmentHistory(員工部門歷史)表、SalesPerson(銷售人員)表、Department(部門)表。ETL過程將對(duì)DW(Data Warehouse數(shù)據(jù)倉庫)中員工信息表進(jìn)行數(shù)據(jù)填充,從源數(shù)據(jù)庫中抽取特定的列,抽取出的數(shù)據(jù)將與DW中表的數(shù)據(jù)進(jìn)行比較,只有確定是新記錄才能添加,其他記錄被拋棄不使用。
圖5 源數(shù)據(jù)庫的聯(lián)系
測(cè)試用例的產(chǎn)生和執(zhí)行是使用圖4所示的框架。第一步,定義引用涉及的數(shù)據(jù)庫:源數(shù)據(jù)庫、暫存數(shù)據(jù)庫和DW。第二步,涉及ETL邏輯映射文檔和元數(shù)據(jù)存儲(chǔ)庫。邏輯映射文檔包含從源數(shù)據(jù)庫提供的每個(gè)字段到目標(biāo)的過程。它包含以下字段:目標(biāo)表名、目標(biāo)表類型列名、SCD(Slowly changing Dimension漸變維度)類型 、源數(shù)據(jù)庫、源表名、源列名和轉(zhuǎn)換。最后,建立到元數(shù)據(jù)存儲(chǔ)庫的連接,目前市場(chǎng)上有許多工具可以在DW階段實(shí)現(xiàn)元數(shù)據(jù)的交換,如:MDS和MIMS。
從邏輯映射文檔和DW元數(shù)據(jù)中提取所需數(shù)據(jù)后,這些數(shù)據(jù)將被加載到數(shù)據(jù)庫模型中。對(duì)于數(shù)據(jù)模型中的質(zhì)量參數(shù),都分配了一些例行程序,通過研究影響每一個(gè)質(zhì)量參數(shù)的所有質(zhì)量問題,找到檢測(cè)出質(zhì)量問題的測(cè)試程序,手動(dòng)的為每一個(gè)質(zhì)量參數(shù)分配測(cè)試程序,指定的測(cè)試程序?qū)⒃诿恳粋€(gè)維度表/實(shí)際表上執(zhí)行。在這一步驟中測(cè)試用例中抽取出的每一個(gè)字段將被賦予來自數(shù)據(jù)庫模型中的值(表名、列名等)。用于執(zhí)行的算法如下:
開始
對(duì)每一個(gè)邏輯數(shù)據(jù)映射文檔中的維度表/實(shí)際表執(zhí)行以下操作:
開始
對(duì)于每一個(gè)測(cè)試程序庫中的質(zhì)量參數(shù)
開始
獲取相應(yīng)的測(cè)試用例;
對(duì)于每一個(gè)測(cè)試用例
將測(cè)試用例的字段映射為數(shù)據(jù)庫模型中的對(duì)應(yīng)值;
執(zhí)行測(cè)試用例。
如果測(cè)試失敗,重定向測(cè)試用例并提交測(cè)試詳細(xì)信息;
否則 顯示結(jié)果;
結(jié)束 如果;
結(jié)束// 結(jié)束每個(gè)測(cè)試用例
結(jié)束// 結(jié)束每個(gè)質(zhì)量參數(shù)
結(jié)束// 結(jié)束每個(gè)表
結(jié)束
在對(duì)所選條目執(zhí)行測(cè)試之后,成功的測(cè)試用例將直接通過到下一步,失敗的測(cè)試用例可以使用各種策略來處理在需求分析階段確定的ETL錯(cuò)誤。例如:自動(dòng)清除錯(cuò)誤數(shù)據(jù)、拋出錯(cuò)誤數(shù)據(jù)及常用處理方式----錯(cuò)誤數(shù)據(jù)交給數(shù)據(jù)庫管理員。
通過對(duì)裝載在維度表中的真實(shí)數(shù)據(jù)及代表無效ETL過程存在的各種錯(cuò)誤類型的模擬數(shù)據(jù)這兩個(gè)不同的數(shù)據(jù)庫進(jìn)行測(cè)試,得到測(cè)試結(jié)果見表2。結(jié)果顯示植入錯(cuò)誤后,所有的測(cè)試用例都沒有通過測(cè)試。
表2 生成的測(cè)試用例及測(cè)試結(jié)果
分析測(cè)試結(jié)果,就可以通過比較檢測(cè)出的故障與植入錯(cuò)誤數(shù)來評(píng)估系統(tǒng)的有效性了。系統(tǒng)生成的所有報(bào)告表明,所有植入的錯(cuò)誤均被檢測(cè)到了,驗(yàn)證了該方法在ETL階段檢測(cè)數(shù)據(jù)質(zhì)量的有效性。通過在不同的數(shù)據(jù)集上進(jìn)行測(cè)試(從10000到50000記錄)證明了該方法在檢測(cè)不同數(shù)據(jù)集上錯(cuò)誤的有效性。
為了保證大數(shù)據(jù)系統(tǒng)的質(zhì)量,需要對(duì)大數(shù)據(jù)應(yīng)用程序進(jìn)行全面測(cè)試。大數(shù)據(jù)應(yīng)用程序的測(cè)試重點(diǎn)之一就是要驗(yàn)證數(shù)據(jù)處理,驗(yàn)證加載前數(shù)據(jù)的準(zhǔn)確性,驗(yàn)證處理過程數(shù)據(jù),驗(yàn)證輸出結(jié)果數(shù)據(jù)。ETL測(cè)試的目的就是確保在業(yè)務(wù)轉(zhuǎn)換之后從源加載到目標(biāo)的數(shù)據(jù)是準(zhǔn)確的,它還包括在源和目標(biāo)之間使用的各種中間階段驗(yàn)證數(shù)據(jù),以便后續(xù)使用BI工具生成有意義的分析表報(bào)。
未來大數(shù)據(jù)系統(tǒng)將面臨許多重要挑戰(zhàn),這些挑戰(zhàn)源于數(shù)據(jù)的本質(zhì):龐大、多樣和不斷發(fā)展,組織捕獲和處理這些數(shù)據(jù)的能力受到了限制。當(dāng)前的技術(shù)、架構(gòu)、管理和測(cè)試方法都需要進(jìn)一步發(fā)展來面對(duì)數(shù)據(jù)的洪流,或者處理機(jī)構(gòu)需要改變思維、計(jì)劃、管理、處理和報(bào)告數(shù)據(jù)的方式,以真正發(fā)揮大數(shù)據(jù)的潛力。以下是研究人員和測(cè)試人員在未來幾年必須面對(duì)的一些挑戰(zhàn)。
1)實(shí)時(shí)性:大數(shù)據(jù)生成速度很快,很多數(shù)據(jù)是在線的,并且需要實(shí)時(shí)處理。大數(shù)據(jù)的實(shí)時(shí)分析是電子商務(wù)提供在線服務(wù)的關(guān)鍵。且所產(chǎn)生的數(shù)據(jù)中還存在大量的噪聲對(duì)象、不完整對(duì)象、不準(zhǔn)確對(duì)象、不精確對(duì)象和冗余對(duì)象[14],大數(shù)據(jù)的規(guī)模在飛速增長(zhǎng),到2020年將達(dá)到35 ZB。如何判斷是否從大數(shù)據(jù)中發(fā)現(xiàn)并提取有價(jià)值的信息,實(shí)現(xiàn)快速響應(yīng)和實(shí)時(shí)決策,是大數(shù)據(jù)測(cè)試研究的重點(diǎn)。
2)隱私安全:大數(shù)據(jù)技術(shù)的發(fā)展也極大威脅著個(gè)人隱私,政府機(jī)構(gòu)在利用數(shù)據(jù)分析作出決策的同時(shí)還要致力于保護(hù)本國(guó)公民的隱私權(quán),澳大利亞政府通過了《2012年隱私修正案(加強(qiáng)隱私保護(hù))法案》,加強(qiáng)了對(duì)個(gè)人信息的保護(hù),并為個(gè)人信息的使用設(shè)定了更清晰的界限。歐洲法院(Europen Court of Justice)制定“被遺忘權(quán)”,規(guī)定歐洲公民有權(quán)要求搜索引擎刪除被認(rèn)為不準(zhǔn)確、不相關(guān)或過度開發(fā)條目[15]。美國(guó)、英國(guó)都相繼成立數(shù)據(jù)保護(hù)的立法,我國(guó)于近幾年頒布《網(wǎng)絡(luò)安全法》、《個(gè)人信息保護(hù)法》等法律法規(guī)[16]。政府機(jī)構(gòu)在收集或管理公民數(shù)據(jù)時(shí),受到一系列立法控制,必須遵守一系列行為和法規(guī)。這些立法工具旨在維持公眾對(duì)政府作為有效和安全的公民信息存儲(chǔ)庫和管理者的信心。政府機(jī)構(gòu)使用大數(shù)據(jù)不會(huì)改變這一點(diǎn),相反,它可能會(huì)在管理信息安全風(fēng)險(xiǎn)方面增加一層額外的復(fù)雜性。大數(shù)據(jù)源、機(jī)構(gòu)內(nèi)部和跨機(jī)構(gòu)的傳輸系統(tǒng),以及這些數(shù)據(jù)的端點(diǎn),都將成為本地和國(guó)際黑客感興趣的目標(biāo),需要得到保護(hù)。研究開發(fā)的大數(shù)據(jù)系統(tǒng)應(yīng)該具有相當(dāng)高的安全性能,以達(dá)到保護(hù)公民隱私權(quán)的目的。
3)隱藏的大數(shù)據(jù):大量有用的數(shù)據(jù)正在丟失,因?yàn)樾聰?shù)據(jù)大部分是基于無標(biāo)記文件和非結(jié)構(gòu)化數(shù)據(jù)的。國(guó)際數(shù)據(jù)公司(IDC) 大數(shù)據(jù)研究表明,大數(shù)據(jù)技術(shù)趨于成熟,但數(shù)據(jù)壁壘仍然存在,數(shù)據(jù)價(jià)值沒有充分發(fā)揮出來。
4)當(dāng)前可以為大數(shù)據(jù)系統(tǒng)測(cè)試的規(guī)模,在很大程度上取決于CPU集群和GPU等高性能計(jì)算架構(gòu)的增長(zhǎng)。不幸的是,計(jì)算性能的提高遠(yuǎn)遠(yuǎn)落后于大數(shù)據(jù)的增長(zhǎng)速度。大數(shù)據(jù)的最大問題之一就是基礎(chǔ)設(shè)施的高成本,即使有了云計(jì)算技術(shù),硬件設(shè)備也是非常昂貴的[17]。
迎接大數(shù)據(jù)帶來的挑戰(zhàn)將是困難的,數(shù)據(jù)量已經(jīng)非常巨大,而且每天都在增加。越來越多的設(shè)備連入互聯(lián)網(wǎng),導(dǎo)致數(shù)據(jù)產(chǎn)生和增長(zhǎng)速度正在加快,且生成的數(shù)據(jù)種類也在不斷增加,大數(shù)據(jù)采集、分析、處理、測(cè)試的需求正在所有的科學(xué)和工程領(lǐng)域興起。借助大數(shù)據(jù)技術(shù),有望提供相關(guān)性更大、更準(zhǔn)確的社會(huì)感知反饋,更好地實(shí)時(shí)了解社會(huì),也進(jìn)一步鼓勵(lì)公眾參與到社會(huì)和經(jīng)濟(jì)活動(dòng)的數(shù)據(jù)制作圈來。