大數(shù)據(jù)項(xiàng)目中的QA需要迎接新的挑戰(zhàn)

大數(shù)據(jù)項(xiàng)目與傳統(tǒng)交付項(xiàng)目的不同之處在于其關(guān)注的重點(diǎn)為數(shù)據(jù)、算法而不再是用戶操作邏輯、頁面展示等,整個(gè)項(xiàng)目將圍繞數(shù)據(jù)質(zhì)量和算法結(jié)果耗費(fèi)大量精力。

根據(jù)IDC全球半年度大數(shù)據(jù)和分析支出指南的最新預(yù)測(cè),到2022年全球大數(shù)據(jù)和業(yè)務(wù)分析解決方案的收入將達(dá)到2600億美元。在大數(shù)據(jù)和業(yè)務(wù)分析解決方案上投資增長最快的行業(yè)包括銀行(復(fù)合年增長率13.3%)、醫(yī)療、保險(xiǎn)、證券和投資服務(wù)、電信,每個(gè)行業(yè)復(fù)合年增長率都是12.8%。由此可見,大數(shù)據(jù)類項(xiàng)目在未來的地位將會(huì)越發(fā)重要,而作為QA,在大數(shù)據(jù)項(xiàng)目急速擴(kuò)張的大背景下,也將迎來新的機(jī)遇和挑戰(zhàn)。

一、大數(shù)據(jù)項(xiàng)目的數(shù)據(jù)特點(diǎn)

大數(shù)據(jù)項(xiàng)目與傳統(tǒng)交付項(xiàng)目的不同之處在于其關(guān)注的重點(diǎn)為數(shù)據(jù)、算法而不再是用戶操作邏輯、頁面展示等,整個(gè)項(xiàng)目將圍繞數(shù)據(jù)質(zhì)量和算法結(jié)果耗費(fèi)大量精力。

項(xiàng)目涉及到大量各種格式的數(shù)據(jù),如圖像、平面文件、音頻等,其結(jié)構(gòu)和格式不盡相同。與傳統(tǒng)的交付類項(xiàng)目相比,大數(shù)據(jù)項(xiàng)目的數(shù)據(jù)量可能會(huì)大得多。其數(shù)據(jù)特點(diǎn)是3 V – Volume,Velocity and Variety:

數(shù)量:收集的數(shù)據(jù)量很大,來自不同的來源來自不同的來源,如傳感器,上傳文件,商業(yè)交易等。

速度:數(shù)據(jù)以高速創(chuàng)建,必須快速處理。 如RFID標(biāo)簽,智能電表等儀器可以以前所未有的速度自動(dòng)生成數(shù)據(jù)。

多樣性:數(shù)據(jù)有各種格式。它可以是音頻,視頻,數(shù)字,文本,電子郵件,衛(wèi)星圖像,大氣傳感器等。

大數(shù)據(jù)項(xiàng)目中的測(cè)試通常與數(shù)據(jù)測(cè)試、算法測(cè)試、功能測(cè)試以及性能測(cè)試有關(guān)。明確大數(shù)據(jù)項(xiàng)目中測(cè)試關(guān)鍵點(diǎn)將有助于項(xiàng)目的成功交付。

二、數(shù)據(jù)質(zhì)量至關(guān)重要

大數(shù)據(jù)項(xiàng)目中數(shù)據(jù)流轉(zhuǎn)是至關(guān)重要的一部分,從不同的數(shù)據(jù)源系統(tǒng)流入至運(yùn)算操作系統(tǒng)再流出至數(shù)據(jù)展示系統(tǒng)的過程中都要保障數(shù)據(jù)質(zhì)量。

數(shù)據(jù)質(zhì)量包括數(shù)據(jù)的完整性、準(zhǔn)確性、一致性、及時(shí)性。

完整性:指數(shù)據(jù)記錄是否完整,是否存在缺失的情況。數(shù)據(jù)缺失包括整條記錄的缺失、某條記錄中字段信息的缺失。數(shù)據(jù)是否完整直接影響到數(shù)據(jù)統(tǒng)計(jì)結(jié)果,是數(shù)據(jù)質(zhì)量的基礎(chǔ)。

準(zhǔn)確性:指數(shù)據(jù)記錄的信息和數(shù)據(jù)是否準(zhǔn)確,是否存在異?;蛘咤e(cuò)誤信息。

一致性:一般體現(xiàn)在跨度很大的數(shù)據(jù)倉庫體系中,當(dāng)體系中存在很多業(yè)務(wù)數(shù)據(jù)倉庫分支時(shí),對(duì)于同一份數(shù)據(jù)需要保持一致。比如用戶ID,從在業(yè)務(wù)庫加工到數(shù)據(jù)倉庫,再到各個(gè)消費(fèi)節(jié)點(diǎn),必須都是同一種類型,長度也需要保持一致。

及時(shí)性:對(duì)于一些實(shí)時(shí)系統(tǒng),甚至一些業(yè)務(wù)系統(tǒng)可以及時(shí)的收集數(shù)據(jù)、展示數(shù)據(jù),給業(yè)務(wù)決策提供快速的支持和反饋,例如銷售日?qǐng)?bào)。 除了上述四點(diǎn)之外,通常還會(huì)根據(jù)項(xiàng)目的實(shí)際情況進(jìn)行其他處理以保障數(shù)據(jù)質(zhì)量,例如數(shù)據(jù)去重、無效數(shù)據(jù)過濾等。

數(shù)據(jù)在數(shù)據(jù)系統(tǒng)中的流轉(zhuǎn)

在多數(shù)數(shù)據(jù)系統(tǒng)中數(shù)據(jù)以下圖的模式進(jìn)行流轉(zhuǎn),關(guān)注數(shù)據(jù)流轉(zhuǎn)過程中數(shù)據(jù)的質(zhì)量也是QA所面臨的一項(xiàng)重要挑戰(zhàn):

1.數(shù)據(jù)從數(shù)據(jù)源流入到我們所構(gòu)建的大數(shù)據(jù)系統(tǒng)

數(shù)據(jù)從不同的數(shù)據(jù)源流入大數(shù)據(jù)系統(tǒng),一般數(shù)據(jù)源包括:其他數(shù)據(jù)系統(tǒng)、CSV或EXCEL等文件、傳感器、掃描儀、日志等等。在從數(shù)據(jù)源流入大數(shù)據(jù)系統(tǒng)前需進(jìn)行數(shù)據(jù)清理,以確保得到正確的、需要的數(shù)據(jù)。在數(shù)據(jù)量極大的情況下,可能會(huì)引入Hadoop(或類似的框架)。無論引入何種框架,都需數(shù)據(jù)從數(shù)據(jù)源中以高質(zhì)量的形式導(dǎo)入至我們所構(gòu)建的大數(shù)據(jù)系統(tǒng)中。為驗(yàn)證此步的數(shù)據(jù)流轉(zhuǎn),需要掌握SQL、Hadoop命令等,這就對(duì)QA提出了新的要求。

除此之外,在大數(shù)據(jù)項(xiàng)目的測(cè)試中,由于數(shù)據(jù)量非常龐大,若非特意進(jìn)行性能測(cè)試,通常只需選取有代表性的少量測(cè)試數(shù)據(jù)集進(jìn)行測(cè)試,以避免每次測(cè)試流程都耗費(fèi)過多時(shí)間。所謂有代表性,即這些數(shù)據(jù)能覆蓋全部的主要計(jì)算邏輯和大部分的邊界場(chǎng)景。

2.在大數(shù)據(jù)系統(tǒng)中進(jìn)行運(yùn)算

數(shù)據(jù)進(jìn)入系統(tǒng)后,會(huì)對(duì)數(shù)據(jù)進(jìn)一步處理,在處理數(shù)據(jù)中可能會(huì)用到Hive,Python等。作為QA還需掌握以上技能,以便開發(fā)腳本來提取和處理數(shù)據(jù)來進(jìn)行測(cè)試。

大數(shù)據(jù)系統(tǒng)中對(duì)數(shù)據(jù)的處理會(huì)包括邏輯處理和算法挖掘兩種。前者更偏向于業(yè)務(wù)處理,后者更偏向于數(shù)據(jù)挖掘或機(jī)器學(xué)習(xí)的算法。例如,假設(shè)某系統(tǒng)是對(duì)未來三天的天氣進(jìn)行預(yù)測(cè),其用于進(jìn)行模型訓(xùn)練的數(shù)據(jù)包括天氣、溫度、日期、城市等,在開發(fā)系統(tǒng)時(shí),開發(fā)人員首先將全部數(shù)據(jù)按照城市進(jìn)行分組,然后將不同城市的數(shù)據(jù)輸入到機(jī)器學(xué)習(xí)算法中進(jìn)行預(yù)測(cè)。在該系統(tǒng)中“按城市進(jìn)行分組”即為邏輯處理,“用機(jī)器學(xué)習(xí)算法進(jìn)行預(yù)測(cè)”即為算法挖掘。這是一個(gè)簡化的例子,通常應(yīng)用程序會(huì)更加復(fù)雜,在該系統(tǒng)中對(duì)于邏輯處理部分可按照傳統(tǒng)測(cè)試方法進(jìn)行測(cè)試,對(duì)于算法挖掘部分則需重點(diǎn)關(guān)注輸入至算法的數(shù)據(jù)的正確性以及輸出結(jié)果的各項(xiàng)指標(biāo)表現(xiàn)。

然后將處理后的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)倉庫中。在將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)倉庫中之后,可再次對(duì)其進(jìn)行驗(yàn)證,以確保它與經(jīng)過數(shù)據(jù)系統(tǒng)運(yùn)算后生成的數(shù)據(jù)一致。

3.數(shù)據(jù)結(jié)果展示

通常最后一步會(huì)將數(shù)據(jù)暴露給業(yè)務(wù)人員或下游使用者,通過可視化或者數(shù)據(jù)接口的形式進(jìn)行輸出,以便產(chǎn)生業(yè)務(wù)價(jià)值??赡軙?huì)使用商業(yè)智能工具,或者由業(yè)務(wù)人員使用R、Python等語言進(jìn)行數(shù)據(jù)分析,因此有必要對(duì)該輸出結(jié)果進(jìn)行驗(yàn)證。若通過Web頁面將數(shù)據(jù)以可視化圖表的形式展露給客戶,就需要對(duì)Web頁面進(jìn)行測(cè)試,若通過Report的形式報(bào)告給客戶,就必須對(duì)生成的Report進(jìn)行測(cè)試。此步除了驗(yàn)證數(shù)據(jù)的準(zhǔn)確性、完整性外,可能還需要驗(yàn)證數(shù)據(jù)的及時(shí)性。比如直播墻需要對(duì)數(shù)據(jù)統(tǒng)計(jì)結(jié)果進(jìn)行實(shí)時(shí)展示,業(yè)務(wù)報(bào)表可能需要當(dāng)天或當(dāng)周進(jìn)行展示,需滿足系統(tǒng)有不同的時(shí)限要求。

以實(shí)際項(xiàng)目為例進(jìn)行簡單介紹

根據(jù)項(xiàng)目的不同,以上的架構(gòu)可能會(huì)有細(xì)節(jié)上的不同,下面以實(shí)際項(xiàng)目為例進(jìn)行簡單的介紹。

例如,在某智慧物流項(xiàng)目中,需對(duì)物流訂單進(jìn)行路徑規(guī)劃,將全部的物流訂單(包括接貨訂單和送貨訂單)分配給各個(gè)貨車司機(jī),根據(jù)訂單的接貨地址和送貨地址以及訂單的時(shí)間要求對(duì)每個(gè)貨車司機(jī)的訂單進(jìn)行路徑規(guī)劃。優(yōu)化的目標(biāo)是在限制時(shí)間內(nèi)從發(fā)貨人手中收取全部貨物并將貨物全部送收貨人手里,且盡可能使路徑總和最小化。其系統(tǒng)結(jié)構(gòu)按照數(shù)據(jù)流轉(zhuǎn)可以大致按以下方式劃分:

根據(jù)數(shù)據(jù)在系統(tǒng)中的流轉(zhuǎn)從左至右來看,測(cè)試注意點(diǎn)包括以下幾方面:

上傳文件校驗(yàn),確保不會(huì)有異常數(shù)據(jù)流入后續(xù)的存儲(chǔ)及運(yùn)算系統(tǒng)中。

數(shù)據(jù)從數(shù)據(jù)源流入數(shù)據(jù)庫時(shí)的完整性、準(zhǔn)確性,確保其從CSV或Excel文件中讀取的數(shù)據(jù)以正確的格式完整的進(jìn)入到了數(shù)據(jù)系統(tǒng)的存儲(chǔ)空間。

數(shù)據(jù)庫中數(shù)據(jù)按照業(yè)務(wù)邏輯進(jìn)行處理后被正確的輸入到算法中。

算法邏輯。

用戶可見的數(shù)據(jù)信息是準(zhǔn)確有序的按照算法運(yùn)算結(jié)果呈現(xiàn)給終端用戶的。

異常情況處理,如數(shù)據(jù)傳輸過程中突然中斷、輸入給算法的數(shù)據(jù)過大或過小等情況。

總而言之,數(shù)據(jù)在系統(tǒng)的各個(gè)部分進(jìn)行流轉(zhuǎn),需根據(jù)系統(tǒng)的架構(gòu)、業(yè)務(wù)的邏輯等,從準(zhǔn)確性、完整性、一致性、及時(shí)性幾個(gè)方面保障數(shù)據(jù)的質(zhì)量。

三、驗(yàn)證算法的結(jié)果

對(duì)于算法結(jié)果的驗(yàn)證是數(shù)據(jù)類項(xiàng)目中遇到另一個(gè)挑戰(zhàn),在這里我按照以往的項(xiàng)目經(jīng)驗(yàn)總結(jié)了“三、二、一”:三個(gè)已踐行,二個(gè)待實(shí)現(xiàn),一個(gè)貫穿始終。

三個(gè)已踐行

1.確保每步邏輯正確

在敏捷實(shí)踐中對(duì)于需求的拆分和追蹤是以Story的形式進(jìn)行的,數(shù)據(jù)項(xiàng)目中尤其要確認(rèn)好每一個(gè)Story的輸入數(shù)據(jù)樣式、輸出數(shù)據(jù)樣式來確保在開發(fā)過程中各個(gè)Story之間可以順利銜接,再輔以Kick Off和Desk Check等敏捷實(shí)踐,確保Dev、BA、QA對(duì)于需求的理解一致。

算法部分一般是調(diào)用外部的包直接實(shí)現(xiàn)的,一般假設(shè)這部分的實(shí)現(xiàn)邏輯沒有問題,故重點(diǎn)需關(guān)注輸入至算法的數(shù)據(jù)。

2.向用戶或者業(yè)務(wù)人員展示結(jié)果

若在進(jìn)行探索研究階段就已經(jīng)輸出完整的數(shù)據(jù)處理邏輯和算法處理過程,且其結(jié)果得到驗(yàn)證,項(xiàng)目內(nèi)容主要是對(duì)該研究結(jié)果進(jìn)行工程實(shí)現(xiàn),則需保障工程實(shí)現(xiàn)過程中的質(zhì)量。該情況下,保障質(zhì)量的方法是把工程實(shí)現(xiàn)系統(tǒng)和在探索研究階段輸出的結(jié)果進(jìn)行對(duì)比,這也是在幫助客戶進(jìn)行工程實(shí)現(xiàn)時(shí)較為常用的一種方法。

算法有固定的輸出結(jié)果,比如數(shù)據(jù)分析類項(xiàng)目中需要統(tǒng)計(jì)某類訂單的數(shù)量,可以采用構(gòu)建測(cè)試數(shù)據(jù)和預(yù)期輸出數(shù)據(jù),判斷系統(tǒng)輸出結(jié)果是否與預(yù)期相同的方法。

沒有研究階段的輸出結(jié)果,也沒有固定的輸出,比如智慧物流系統(tǒng)里路徑規(guī)劃,我們采取的方案是將結(jié)果展示給貨司機(jī),讓他們?nèi)?shí)際按照路線送貨,由真正的用戶來判斷是否是其想要的結(jié)果。類似于這種結(jié)果無法由開發(fā)團(tuán)隊(duì)直接判斷的,需盡早且持續(xù)的將結(jié)果展示給用戶或相關(guān)業(yè)務(wù)人員,請(qǐng)其對(duì)算法結(jié)果進(jìn)行反饋。

3.不同數(shù)據(jù)集多次驗(yàn)證

設(shè)計(jì)不同的數(shù)據(jù)集進(jìn)行驗(yàn)證,驗(yàn)證算法在不同數(shù)據(jù)下的表現(xiàn),探究算法的邊界。比如上文中提到的智慧物流項(xiàng)目可能適用于上海的場(chǎng)景,不一定適用于北京的場(chǎng)景,因?yàn)樵撍惴ㄓ糜谟?xùn)練的歷史數(shù)據(jù)多為上海地區(qū)數(shù)據(jù)。

兩個(gè)待實(shí)現(xiàn)

1.以最終目標(biāo)為依據(jù)

比如智慧物流,最終的目標(biāo)是降低成本、提高收入。所以算法本身的指標(biāo),比如靈敏度,召回率都不是最終的計(jì)算,甚至路程都不是最終的目標(biāo)??梢栽O(shè)定一個(gè)f(x)=總收入-總成本,目標(biāo)為總成本最低。再比如滴滴的推薦算法,加了一個(gè)滴滴司機(jī)提供的反饋信息,這個(gè)信息只包括一條“你會(huì)不會(huì)把這個(gè)app推薦給朋友”。該推薦算法的目標(biāo)為提高司機(jī)的滿意度以推廣軟件,即為司機(jī)將算法推薦給朋友的數(shù)量。

2.線上迭代驗(yàn)證

模型的驗(yàn)證指標(biāo),比如召回率,靈敏度等,作為一個(gè)指標(biāo)放到線上去做驗(yàn)證。對(duì)于上線的模型選取部分測(cè)試數(shù)據(jù)對(duì)其進(jìn)行迭代驗(yàn)證,在不滿足指標(biāo)的情況下發(fā)出告警。該情況可能是由于隨著時(shí)間的推移,用于訓(xùn)練的歷史數(shù)據(jù)已經(jīng)不再適應(yīng)新的情形導(dǎo)致,需要算法工程師重新對(duì)其進(jìn)行評(píng)估。

一個(gè)貫穿始終的注意點(diǎn)

真實(shí)數(shù)據(jù)對(duì)于系統(tǒng)的驗(yàn)證非常重要,人為構(gòu)造的數(shù)據(jù)無論是在分布形態(tài)還是異常場(chǎng)景覆蓋上都比不上真實(shí)的生產(chǎn)數(shù)據(jù)。測(cè)試數(shù)據(jù)分布不同于真實(shí)數(shù)據(jù)時(shí),可能會(huì)導(dǎo)致算法在測(cè)試階段表現(xiàn)良好,而在進(jìn)入到生產(chǎn)系統(tǒng)后表現(xiàn)欠佳。在測(cè)試數(shù)據(jù)構(gòu)造困難的情況下,由于測(cè)試數(shù)據(jù)對(duì)異常場(chǎng)景的覆蓋不足,在進(jìn)入生產(chǎn)系統(tǒng)引入真實(shí)數(shù)據(jù)后,甚至有可能會(huì)導(dǎo)致算法實(shí)效或系統(tǒng)崩潰等嚴(yán)重后果。

而實(shí)際項(xiàng)目中,獲取可用于測(cè)試的真實(shí)數(shù)據(jù),往往也是一大挑戰(zhàn)。通常在將真實(shí)數(shù)據(jù)引入測(cè)試環(huán)節(jié)前還需進(jìn)行至關(guān)重要的一步:數(shù)據(jù)脫敏。由于真實(shí)數(shù)據(jù)中包含了大量的機(jī)密信息,故在將真實(shí)數(shù)據(jù)用于測(cè)試前通常會(huì)將如身份證號(hào)、電話、價(jià)錢等敏感信息進(jìn)行脫敏處理。

THEEND

最新評(píng)論(評(píng)論僅代表用戶觀點(diǎn))

更多
暫無評(píng)論