張 琪
(上海市軟件評(píng)測(cè)中心有限公司(軟件測(cè)試部),上?!?00233)
大數(shù)據(jù)處理是指不能通過傳統(tǒng)計(jì)算技術(shù)處理的海量數(shù)據(jù)集合的數(shù)據(jù)創(chuàng)建、存儲(chǔ)、檢索和分析等操作,具有大批量、多樣性、復(fù)雜性、實(shí)時(shí)性、交互性等特性。在大數(shù)據(jù)背景下,隨著互聯(lián)網(wǎng)、政府、企業(yè)、個(gè)人用戶需求量的增加,基于大數(shù)據(jù)技術(shù)的應(yīng)用系統(tǒng)越來越多,對(duì)軟件測(cè)試工作提出了很大的挑戰(zhàn)。只有轉(zhuǎn)變傳統(tǒng)的測(cè)試思維,合理利用多種技術(shù)和框架、各種自動(dòng)化工具的融合,并不斷開拓創(chuàng)新測(cè)試方法和技術(shù),優(yōu)化改進(jìn)測(cè)試策略和流程,才能夠獲得更好的發(fā)展。
Google于 2004年提出的大數(shù)據(jù)處理框架Map-Reduce已得到了廣泛的應(yīng)用,用戶在設(shè)計(jì)分布式應(yīng)用程序時(shí)只需要實(shí)現(xiàn) map()和 reduce()兩個(gè)函數(shù),不需關(guān)注數(shù)據(jù)分片、任務(wù)調(diào)度、機(jī)器間通信、機(jī)器容錯(cuò)等方面是如何實(shí)現(xiàn)的,雖然簡(jiǎn)化了數(shù)據(jù)密集型應(yīng)用的數(shù)據(jù)處理過程,但是用戶功能不如框架本身功能豐富,也給測(cè)試工作帶來了難度。并且該框架采用分布式特性,無法知道任務(wù)被動(dòng)態(tài)分配到集群中的哪個(gè)節(jié)點(diǎn)執(zhí)行;無法預(yù)知map或reduce任務(wù)在哪個(gè)節(jié)點(diǎn)執(zhí)行;無法在錯(cuò)誤發(fā)生前設(shè)置斷點(diǎn)等,而傳統(tǒng)軟件測(cè)試是基于軟件規(guī)格說明書等文檔進(jìn)行測(cè)試,有預(yù)先確定的流程圖、數(shù)據(jù)關(guān)系、數(shù)據(jù)的輸入/輸出,大數(shù)據(jù)處理框架的分布式特性給傳統(tǒng)軟件測(cè)試帶來了難度[1]。
傳統(tǒng)數(shù)據(jù)一般采用結(jié)構(gòu)化數(shù)據(jù),存儲(chǔ)在關(guān)系型數(shù)據(jù)庫(kù)表中或結(jié)構(gòu)化文件中,軟件測(cè)試時(shí)可以用來驗(yàn)證軟件輸入和輸出的正確性。大數(shù)據(jù)處理的數(shù)據(jù)包含結(jié)構(gòu)化、半結(jié)構(gòu)化、非結(jié)構(gòu)化三種。半結(jié)構(gòu)化數(shù)據(jù)沒有預(yù)定義格式,需要根據(jù)數(shù)據(jù)模式推導(dǎo)出其基本機(jī)構(gòu)。非結(jié)構(gòu)數(shù)據(jù)沒有任何格式,存儲(chǔ)在文件或Web頁(yè)面中,需要抽取、轉(zhuǎn)化成結(jié)構(gòu)化數(shù)據(jù),由于數(shù)據(jù)的異?;驍?shù)據(jù)格式轉(zhuǎn)換錯(cuò)誤導(dǎo)致的問題,使軟件測(cè)試對(duì)數(shù)據(jù)輸入和輸出正確性的驗(yàn)證變得非常困難。
大數(shù)據(jù)是對(duì)所有數(shù)據(jù)集進(jìn)行分析處理,而不是隨機(jī)樣本,找到其中最有價(jià)值的數(shù)據(jù)。這就對(duì)測(cè)試設(shè)計(jì)時(shí)的評(píng)價(jià)模型提出了更高的要求,能否構(gòu)造與原始數(shù)據(jù)集等價(jià)的數(shù)據(jù)集?是否所有數(shù)據(jù)覆蓋了所有可能性?都是需要考慮的問題[2]。
傳統(tǒng)的B/S或C/S性能測(cè)試一般通過客戶端測(cè)試負(fù)載器模擬向服務(wù)器發(fā)送請(qǐng)求來實(shí)現(xiàn)對(duì)服務(wù)器的壓力測(cè)試。在大數(shù)據(jù)背景下,數(shù)據(jù)處理平臺(tái)一般架構(gòu)在可動(dòng)態(tài)擴(kuò)展的PaaS平臺(tái),傳統(tǒng)的局域網(wǎng)環(huán)境下開展壓力測(cè)試模式,已無法滿足需求,難以實(shí)現(xiàn)負(fù)載器數(shù)量的擴(kuò)展,也無法采取有效的控制措施[3]。在大數(shù)據(jù)時(shí)代背景下,云計(jì)算系統(tǒng)分布范圍較廣,測(cè)試客戶端需要設(shè)置分布式特征,在大量用戶數(shù)據(jù)的驅(qū)動(dòng)下,控制設(shè)備的監(jiān)控壓力也在不斷增加,受到負(fù)載器數(shù)據(jù)及狀態(tài)的影響,很大程度上會(huì)對(duì)軟件性能測(cè)試造成影響。并且由于大數(shù)據(jù)應(yīng)用所涉及的技術(shù)、環(huán)境的復(fù)雜性,對(duì)于問題的診斷調(diào)優(yōu)也存在難度。
Map-Reduce對(duì)來自不同數(shù)據(jù)源的數(shù)據(jù)進(jìn)行處理過程中可能會(huì)出現(xiàn)編碼問題,如在單一節(jié)點(diǎn)上運(yùn)行正確,在多個(gè)節(jié)點(diǎn)上運(yùn)行不正確的問題,包括不正確的聚合、節(jié)點(diǎn)配置、輸出格式等??刹捎靡韵路绞竭M(jìn)行驗(yàn)證:a.驗(yàn)證梳理數(shù)據(jù)處理過程是否完成并輸出文件;b.在單個(gè)節(jié)點(diǎn)上驗(yàn)證大數(shù)據(jù)的業(yè)務(wù)邏輯后,在多節(jié)點(diǎn)上進(jìn)行相同驗(yàn)證;c.驗(yàn)證Map-Reduce處理過程的Key/Value對(duì)是否正確生產(chǎn);d.在reduce過程結(jié)束后驗(yàn)證數(shù)據(jù)的聚集合并是否正確;e.通過源文件驗(yàn)證輸出數(shù)據(jù)來保證數(shù)據(jù)處理正確完成;f.驗(yàn)證輸出數(shù)據(jù)文件格式是否符合大數(shù)據(jù)業(yè)務(wù)要求[4]。
測(cè)試是為了保證數(shù)據(jù)的正確性、業(yè)務(wù)邏輯的正確性。首先,需要進(jìn)行需求的調(diào)研,必須要清楚整個(gè)業(yè)務(wù)處理流程,每個(gè)數(shù)據(jù)的流轉(zhuǎn),每個(gè)步驟的輸入和輸出,才能判斷最后的輸出結(jié)果是否正確。然后,結(jié)合不同業(yè)務(wù)場(chǎng)景設(shè)計(jì)測(cè)試用例,不僅限于數(shù)據(jù)的邊界要求、屬性要求等,更多需要考慮數(shù)據(jù)的樣本及大小,樣本集的分布特征。需要考慮:數(shù)據(jù)量;數(shù)據(jù)唯一性;數(shù)據(jù)完整性;數(shù)據(jù)一致性;數(shù)據(jù)邊界;數(shù)據(jù)精度和格式化;數(shù)據(jù)區(qū)間和分布;數(shù)據(jù)空值替換及格式化特征等,可結(jié)合自動(dòng)化測(cè)試工具或手工編寫測(cè)試腳本等方式,導(dǎo)入測(cè)試數(shù)據(jù),提高測(cè)試數(shù)據(jù)覆蓋率和測(cè)試效率[5]。
目前業(yè)界暫無通用、標(biāo)準(zhǔn)的大數(shù)據(jù)性能測(cè)試工具,要自行開發(fā)或整合多種相關(guān)測(cè)試工具才可能實(shí)現(xiàn)性能測(cè)試及問題診斷。首先搭建測(cè)試環(huán)境,需要考慮:是否有足夠的存儲(chǔ)設(shè)備來存儲(chǔ)和處理大數(shù)據(jù);有足夠的CPU、內(nèi)存資源保障高性能處理;有集群處理分布式節(jié)點(diǎn)和數(shù)據(jù)等[6]。接著準(zhǔn)備測(cè)試數(shù)據(jù)、設(shè)計(jì)測(cè)試場(chǎng)景、編寫測(cè)試腳本,需要考慮:各業(yè)務(wù)的占比;各節(jié)點(diǎn)測(cè)試數(shù)據(jù)量的準(zhǔn)備;并發(fā)線程/用戶量的需求;超時(shí)時(shí)間/參數(shù)/消息隊(duì)列長(zhǎng)度設(shè)置;選用測(cè)試工具或測(cè)試腳本開發(fā)等。最后執(zhí)行性能測(cè)試,可通過 Hadoop性能監(jiān)控器來監(jiān)測(cè)平均響應(yīng)時(shí)間、吞吐量、資源占用率等運(yùn)行狀態(tài)性能指標(biāo)和瓶頸問題[7]。
在大數(shù)據(jù)背景下,云計(jì)算、虛擬化技術(shù)得到了較好的應(yīng)用。結(jié)合相關(guān)資料,大數(shù)據(jù)背景下軟件測(cè)試展望主要如下:
(1)完善與改進(jìn)測(cè)試技術(shù),在大數(shù)據(jù)背景下,測(cè)試技術(shù)只有朝著多元化方向發(fā)展,才能夠?qū)崿F(xiàn)突破。將已知測(cè)試技術(shù)、測(cè)試方法相互結(jié)合,并進(jìn)行綜合利用。針對(duì)數(shù)據(jù)儲(chǔ)存模糊認(rèn)知,導(dǎo)致影響測(cè)試精準(zhǔn)性的情況,其解決措施為:在應(yīng)用數(shù)據(jù)庫(kù)前,必須要反復(fù)測(cè)試數(shù)據(jù)庫(kù),降低數(shù)據(jù)錯(cuò)誤率帶來的影響,全面提升數(shù)據(jù)的準(zhǔn)確性、一致性、完整性,為后期的測(cè)試奠定基礎(chǔ)。除了功能測(cè)試,還要兼顧性能效率、容錯(cuò)性、可用性、擴(kuò)展性、穩(wěn)定性、兼容性、數(shù)據(jù)一致性等方面的測(cè)試[9]。
(2)加入智能化技術(shù),提升數(shù)據(jù)處理質(zhì)量,在實(shí)際應(yīng)用時(shí),其設(shè)計(jì)工作不僅需要對(duì)輸入的數(shù)據(jù)進(jìn)行界定,分析數(shù)據(jù)的屬性,還需要依據(jù)數(shù)據(jù)的樣本、數(shù)據(jù)采集情況、數(shù)據(jù)分布規(guī)模等選擇正確的評(píng)價(jià)方式。在數(shù)據(jù)輸入時(shí),需要確保數(shù)據(jù)屬性的規(guī)范性,綜合分析、考慮數(shù)據(jù)輸入的大小、輸出樣式,在大數(shù)據(jù)背景下,應(yīng)用智能化技術(shù)能夠消除輸入、輸出數(shù)據(jù)之間的差異性,逐步規(guī)范操作,全面提升軟件測(cè)試質(zhì)量[10]。
(3)基于大數(shù)據(jù)背景下,在各類數(shù)據(jù)處理中云計(jì)算、虛擬化的應(yīng)用十分有必要,為了更好的滿足大數(shù)據(jù)時(shí)代的性能測(cè)試需求,就必須要構(gòu)建客戶端與服務(wù)器端需求相匹配的自動(dòng)化運(yùn)行環(huán)境,發(fā)揮負(fù)載器的作用,研究并發(fā)環(huán)境,強(qiáng)化監(jiān)控,逐步探索全新的測(cè)試手段。
綜上所述,當(dāng)前的時(shí)代屬于大數(shù)據(jù)時(shí)代,軟件測(cè)試面臨著很多的挑戰(zhàn),為了更好應(yīng)對(duì)大數(shù)據(jù)環(huán)境下對(duì)軟件測(cè)試帶來的問題,提出了一些解決措施,并對(duì)未來的軟件測(cè)試發(fā)展提出展望,需要從以下幾方面改善:(1)測(cè)試技術(shù)需朝著多元化方向發(fā)展,多元化的測(cè)試技術(shù)能夠有效避免“殺蟲劑效應(yīng)”,在已知測(cè)試技術(shù)基礎(chǔ)上,探索出全新的測(cè)試技術(shù)。(2)大數(shù)據(jù)的智能化處理,需更多去考慮輸入數(shù)據(jù)樣本的大小、特性、輸出評(píng)判方法等。(3)構(gòu)建自動(dòng)化云測(cè)試環(huán)境,更好的滿足大戶數(shù)據(jù)背景下性能測(cè)試需求,強(qiáng)化客戶端的處理能力,提升與服務(wù)端需求之間的匹配度,進(jìn)而探索、創(chuàng)新更多的測(cè)試方法。(4)采用大數(shù)據(jù)的思維方式,通過全面的測(cè)試來提高大數(shù)據(jù)應(yīng)用軟件的質(zhì)量、容錯(cuò)性、可擴(kuò)展性、穩(wěn)定性、安全性。