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