大数据下的质量体系建设
一、背景
??????大數(shù)據(jù)、人工智能是當(dāng)前也是未來(lái)幾年IT部門(mén)的重點(diǎn)建設(shè)方向,新的技術(shù)可以為業(yè)務(wù)突破盈利瓶頸,帶來(lái)新的增長(zhǎng)點(diǎn),同時(shí)我們也發(fā)現(xiàn)數(shù)據(jù)中臺(tái)也頻頻在最近的企業(yè)財(cái)報(bào)予以體現(xiàn),相關(guān)的技術(shù)崗位需求也是供不應(yīng)求,與之形成對(duì)比的是,我們發(fā)現(xiàn)在招聘網(wǎng)站上很少有專(zhuān)職的數(shù)據(jù)測(cè)試崗位。
??????我們相信技術(shù)始終是為業(yè)務(wù)創(chuàng)造價(jià)值的,大數(shù)據(jù)也要輸出他的產(chǎn)品(數(shù)據(jù)),產(chǎn)品必須要有質(zhì)量的管控才可信,測(cè)試人員可以借助這個(gè)契機(jī)進(jìn)行賽道的轉(zhuǎn)換,在數(shù)據(jù)測(cè)試中形成自己的一套方法論參與到這個(gè)新技術(shù)引領(lǐng)的浪潮中。
二、數(shù)據(jù)開(kāi)發(fā)在做什么
2.1 數(shù)據(jù)開(kāi)發(fā)過(guò)程
我們可以通過(guò)上面這個(gè)圖先來(lái)簡(jiǎn)單的去理解數(shù)據(jù)開(kāi)發(fā)主要做什么
根據(jù)需求找業(yè)務(wù)開(kāi)發(fā)獲取源數(shù)據(jù);
通過(guò)相關(guān)的工具把源數(shù)據(jù)同步到數(shù)據(jù)平臺(tái)的表中;
按照模型進(jìn)行數(shù)據(jù)的清洗;
將清洗結(jié)果寫(xiě)入到結(jié)果數(shù)據(jù)表中。
2.2 數(shù)據(jù)開(kāi)發(fā)與應(yīng)用開(kāi)發(fā)的區(qū)別
數(shù)據(jù)量大,這是他的首要特征,量大一個(gè)是消耗資源多,一個(gè)是性能問(wèn)題,能否按時(shí)完成作業(yè)
算法、模型運(yùn)用較多,涉及到比如用戶(hù)標(biāo)簽,營(yíng)銷(xiāo)預(yù)測(cè),風(fēng)控等需求開(kāi)發(fā),往往就是需要一些算法和模型的使用
最終產(chǎn)出是數(shù)據(jù),這個(gè)與應(yīng)用開(kāi)發(fā)交付的是代碼不一樣,應(yīng)用開(kāi)發(fā)的代碼上線后,正常就是正常,但是數(shù)據(jù)開(kāi)發(fā)的代碼上線后,還需要把數(shù)據(jù)跑出來(lái)才算交付
開(kāi)發(fā)語(yǔ)言偏重于SQL、python、java,數(shù)據(jù)開(kāi)發(fā)使用最多的就是sql了,另外就是python和java會(huì)做一些數(shù)據(jù)轉(zhuǎn)換處理的函數(shù)開(kāi)發(fā),這塊對(duì)測(cè)試人員來(lái)說(shuō)相對(duì)比較好接入
業(yè)務(wù)能力強(qiáng)且廣,數(shù)據(jù)開(kāi)發(fā)會(huì)涉及到公司的各個(gè)業(yè)務(wù)應(yīng)用的數(shù)據(jù),所以對(duì)業(yè)務(wù)的熟悉是開(kāi)發(fā)的前提
三、測(cè)試需要關(guān)注什么
3.1 數(shù)據(jù)測(cè)試的出發(fā)點(diǎn)
在了解數(shù)據(jù)開(kāi)發(fā)的過(guò)程和相關(guān)技術(shù)運(yùn)用后,我們發(fā)現(xiàn)測(cè)試人員要接入數(shù)據(jù)開(kāi)發(fā)測(cè)試流程,需要做好如下幾點(diǎn)準(zhǔn)備
數(shù)據(jù)的持續(xù)關(guān)注,也就是要關(guān)注數(shù)據(jù)的完整流向,從哪里獲取,各種條件下的清洗規(guī)則,數(shù)據(jù)最終又流向了哪里,這個(gè)在4.1部分中會(huì)有相應(yīng)的解決方案,就是元數(shù)據(jù)管理和模型設(shè)計(jì)文檔
業(yè)務(wù)的熟悉,在業(yè)務(wù)應(yīng)用的測(cè)試中,往往是每個(gè)測(cè)試人員負(fù)責(zé)幾塊業(yè)務(wù)內(nèi)容,但是在數(shù)據(jù)測(cè)試中,測(cè)試人員需要對(duì)公司某個(gè)領(lǐng)域所包含的的業(yè)務(wù)需求了解透徹,比如做用戶(hù)畫(huà)像的開(kāi)發(fā),會(huì)涉及到賬戶(hù)體系、訂單模塊
SQL、python、java能夠使用,在數(shù)據(jù)測(cè)試過(guò)程中,由于不像應(yīng)用開(kāi)發(fā)通過(guò)界面操作進(jìn)行測(cè)試,往往是通過(guò)構(gòu)造輸入數(shù)據(jù),執(zhí)行相關(guān)的sql和函數(shù),確認(rèn)輸出數(shù)據(jù),所以有相關(guān)語(yǔ)言的基礎(chǔ)會(huì)更方便我們的測(cè)試進(jìn)行
3.2 數(shù)據(jù)測(cè)試關(guān)注什么
準(zhǔn)確性
完整性,就是數(shù)據(jù)通過(guò)每一次流轉(zhuǎn)后,首先我們要看數(shù)據(jù)是否如預(yù)期的完整,不多不少
準(zhǔn)確性,數(shù)據(jù)經(jīng)過(guò)采集或者清洗流轉(zhuǎn)后,是符合業(yè)務(wù)需求的;或者通過(guò)算法模型做預(yù)測(cè),數(shù)據(jù)是符合一般性規(guī)律的,比如28定律、正太分布等
及時(shí)性
數(shù)據(jù)能夠在預(yù)期的時(shí)間完成清洗產(chǎn)出性能
資源使用,主要關(guān)注對(duì)資源的消耗
數(shù)據(jù)接口性能,提供的API性能是否滿(mǎn)足需求
四、數(shù)據(jù)開(kāi)發(fā)測(cè)試流程
4.1 文檔規(guī)范很重要
我們?cè)谧鰳I(yè)務(wù)測(cè)試的時(shí)候,需要需求文檔、設(shè)計(jì)文檔,同樣在做數(shù)據(jù)測(cè)試時(shí),也需要有文檔上的規(guī)范性要求
產(chǎn)品需求文檔
模型設(shè)計(jì)文檔,ETL的規(guī)則要有清晰的說(shuō)明,這樣測(cè)試才能更好的進(jìn)入設(shè)計(jì)測(cè)試用例
調(diào)度設(shè)計(jì)文檔,每個(gè)節(jié)點(diǎn)的調(diào)度周期、運(yùn)行順序、上下游依賴(lài)、是否定時(shí)執(zhí)行,運(yùn)行預(yù)期時(shí)間都需要說(shuō)明,方便去理解上下游關(guān)系和線上監(jiān)控配置
發(fā)布文檔,告知是否需要重跑數(shù)據(jù),重跑哪個(gè)時(shí)間段的數(shù)據(jù),測(cè)試在執(zhí)行生產(chǎn)發(fā)布的時(shí)候需要依據(jù)該文檔進(jìn)行相關(guān)操作
公司級(jí)的數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)約,單獨(dú)提這個(gè)文檔,是因?yàn)閿?shù)據(jù)開(kāi)發(fā)的數(shù)據(jù)來(lái)源都是從業(yè)務(wù)系統(tǒng)采集過(guò)來(lái),業(yè)務(wù)應(yīng)用數(shù)據(jù)庫(kù)設(shè)計(jì)、變更這些對(duì)數(shù)據(jù)開(kāi)發(fā)來(lái)說(shuō)都是有一定的影響的,所以我們需要一份規(guī)約,來(lái)統(tǒng)一數(shù)據(jù)庫(kù)的設(shè)計(jì),庫(kù)表變更的同步流程等
業(yè)務(wù)變更的同步,當(dāng)業(yè)務(wù)端需求變化可能會(huì)導(dǎo)致取數(shù)的邏輯發(fā)生變化,也是需要同步到數(shù)據(jù)端做相應(yīng)的評(píng)估
ETL文檔,數(shù)據(jù)的清洗規(guī)則需要有相應(yīng)的文檔輸出,測(cè)試可以根據(jù)該文檔了解開(kāi)發(fā)的模型設(shè)計(jì),并輔助進(jìn)行相應(yīng)的測(cè)試用例設(shè)計(jì)
調(diào)度設(shè)計(jì)文檔,作業(yè)的設(shè)置也是交付的一部分,需要有相應(yīng)的調(diào)度設(shè)計(jì)文檔來(lái)讓我們知道生產(chǎn)的作業(yè)設(shè)置情況
發(fā)布操作文檔,在發(fā)布代碼到生產(chǎn)的時(shí)候需要該文檔的支撐
CPU的使用量,比如當(dāng)前的算力是100cu,使用了80cu我們就觸發(fā)報(bào)警
內(nèi)存的使用量,數(shù)據(jù)存儲(chǔ)是特別耗資源的一個(gè)事情,對(duì)內(nèi)存也要最好提前量的監(jiān)控
等待作業(yè)數(shù),當(dāng)前時(shí)間點(diǎn)存在多少個(gè)作業(yè)在等待資源
流量監(jiān)控,對(duì)于數(shù)據(jù)的上傳下載,需要設(shè)置流量帶寬的監(jiān)控
作業(yè)的狀態(tài)進(jìn)行監(jiān)控
運(yùn)行狀態(tài)錯(cuò)誤,作業(yè)執(zhí)行失敗了
運(yùn)行的效率,在預(yù)期的時(shí)間長(zhǎng)度(30分鐘)未執(zhí)行完成
運(yùn)行的及時(shí)性,這份作業(yè)需要在1:00必須執(zhí)行完成,結(jié)果超過(guò)1:00狀態(tài)還不是成功作業(yè)日志進(jìn)行監(jiān)控
對(duì)每一個(gè)節(jié)點(diǎn),當(dāng)運(yùn)行完成后,我們寫(xiě)入一條日志數(shù)據(jù)存儲(chǔ),然后通過(guò)一個(gè)作業(yè)去輪詢(xún)這個(gè)日志表的數(shù)據(jù),如果某個(gè)時(shí)間點(diǎn)數(shù)據(jù)沒(méi)有生成,觸發(fā)報(bào)警監(jiān)控等級(jí)
根據(jù)數(shù)據(jù)的重要性,可以將監(jiān)控設(shè)置為強(qiáng)、弱兩種類(lèi)型,如果是強(qiáng)監(jiān)控性質(zhì)的,一旦觸發(fā),作業(yè)立即停止運(yùn)行,防止異常數(shù)據(jù)寫(xiě)入下游節(jié)點(diǎn);如果是弱類(lèi)型的,作業(yè)繼續(xù)執(zhí)行,數(shù)據(jù)繼續(xù)寫(xiě)入,獲取報(bào)警信息后人來(lái)確定是否進(jìn)行干預(yù)。監(jiān)控維度
表中數(shù)據(jù)條數(shù),表中數(shù)據(jù)不能少于某個(gè)值,或者在某個(gè)范圍
表中數(shù)據(jù)的周期波動(dòng)率,在某個(gè)時(shí)間周期,比如3天,數(shù)據(jù)行數(shù)的波動(dòng)范圍
字段數(shù)據(jù),針對(duì)單個(gè)字段的監(jiān)控,是否為空,是否唯一等數(shù)據(jù)資產(chǎn)評(píng)級(jí)
是不是所有的表、字段、作業(yè)都需要做監(jiān)控呢?哪些作業(yè)需要優(yōu)先執(zhí)行呢?我們需要有科學(xué)的判斷–對(duì)數(shù)據(jù)資產(chǎn)進(jìn)行評(píng)級(jí),特別重要的定義為A級(jí),所有跟A級(jí)依賴(lài)的也采取同等級(jí)定義;不是很重要的定義為B級(jí)等等調(diào)度平臺(tái)根據(jù)級(jí)別進(jìn)行作業(yè)執(zhí)行優(yōu)先級(jí)設(shè)置
根據(jù)上面的數(shù)據(jù)資產(chǎn)評(píng)級(jí),我們?cè)谠O(shè)置作業(yè)執(zhí)行的順序時(shí),除去上下游的依賴(lài)關(guān)系,當(dāng)兩個(gè)作業(yè)在同一時(shí)間點(diǎn)誰(shuí)先執(zhí)行,就有了清晰的定義報(bào)警方式根據(jù)級(jí)別進(jìn)行渠道定義
報(bào)警的觸發(fā)方式,可以是語(yǔ)音電話(huà)、短信、郵件、釘釘消息等,不同的渠道成本是不一樣的,我們也可以根據(jù)數(shù)據(jù)資產(chǎn)的評(píng)級(jí)來(lái)進(jìn)行選擇,比如特別重要的預(yù)警通過(guò)語(yǔ)音電話(huà)直接觸發(fā),相對(duì)重要的平時(shí)工作時(shí)間通過(guò)釘釘,非工作時(shí)間通過(guò)短信觸發(fā)等。數(shù)據(jù)生命周期管理
數(shù)據(jù)存儲(chǔ)因?yàn)閿?shù)據(jù)量級(jí)的關(guān)系,特別消耗存儲(chǔ)空間,我們需要對(duì)數(shù)據(jù)的生命周期有相應(yīng)的管理策略,什么時(shí)候相關(guān)表的數(shù)據(jù)可以銷(xiāo)毀,避免僵尸數(shù)據(jù)長(zhǎng)期占用資源的情況
4.2 開(kāi)發(fā)和生產(chǎn)環(huán)境的獨(dú)立
開(kāi)發(fā)人員在需求開(kāi)發(fā)的過(guò)程中,也需要通過(guò)反復(fù)的調(diào)試來(lái)完成代碼的開(kāi)發(fā),為了不影響生產(chǎn)環(huán)境的正常使用,我們也需要像業(yè)務(wù)應(yīng)用開(kāi)發(fā)那樣,有多套獨(dú)立的環(huán)境來(lái)進(jìn)行正常的開(kāi)發(fā)和生產(chǎn)。
由于數(shù)據(jù)環(huán)境的相對(duì)復(fù)雜性和硬件資源的需求比較大,在數(shù)據(jù)部門(mén)組建初期,可以先只設(shè)立開(kāi)發(fā)和生產(chǎn)兩套獨(dú)立的環(huán)境。
多套環(huán)境相應(yīng)的就有權(quán)限的控制,不同角色崗操作的環(huán)境、數(shù)據(jù)權(quán)限都要有相應(yīng)的管控
4.3 數(shù)據(jù)開(kāi)發(fā)測(cè)試流程
1 完整流程
2數(shù)據(jù)開(kāi)發(fā)流程
關(guān)鍵產(chǎn)出文檔:
3 測(cè)試階段
產(chǎn)出物:測(cè)試用例、缺陷
4 發(fā)布階段
產(chǎn)出物:上線郵件
5 線上缺陷修復(fù)流程
數(shù)據(jù)開(kāi)發(fā)與業(yè)務(wù)開(kāi)發(fā)有一點(diǎn)不一樣的地方在于,數(shù)據(jù)開(kāi)發(fā)交付的是數(shù)據(jù),所以如果生產(chǎn)一旦出現(xiàn)異常,回滾代碼是解決不了問(wèn)題的,需要將數(shù)據(jù)同步進(jìn)行修復(fù)
五、全流程的數(shù)據(jù)質(zhì)量監(jiān)控預(yù)警體系
我們通過(guò)開(kāi)發(fā)測(cè)試流程保證了代碼的可靠性,也通過(guò)本地環(huán)境的數(shù)據(jù)構(gòu)造完成相關(guān)測(cè)試點(diǎn)執(zhí)行,代碼發(fā)布到生產(chǎn)之后,由于生產(chǎn)環(huán)境的數(shù)據(jù)與本地在量級(jí)和各種覆蓋度上還是存在差異,就像我們對(duì)應(yīng)用程序在生產(chǎn)建立監(jiān)控預(yù)警來(lái)保證生產(chǎn)的穩(wěn)定性一樣,也需要建立一套完備的大數(shù)據(jù)監(jiān)控體系來(lái)保證我們數(shù)據(jù)的及時(shí)性和準(zhǔn)確性。
5.1 計(jì)算資源的監(jiān)控
無(wú)論在做數(shù)據(jù)采集還是數(shù)據(jù)清洗,都是一件十分消耗計(jì)算資源的事情,當(dāng)前生產(chǎn)的資源配置是否能夠滿(mǎn)足我們的業(yè)務(wù)場(chǎng)景,當(dāng)資源出現(xiàn)瓶頸趨勢(shì)能否提前通知相關(guān)人員,這個(gè)就需要我們進(jìn)行計(jì)算資源的監(jiān)控,我們可以從如下維度進(jìn)行監(jiān)控
5.2 作業(yè)運(yùn)行監(jiān)控
我們的數(shù)據(jù)代碼發(fā)布到生產(chǎn)后,會(huì)由調(diào)度平臺(tái)按照節(jié)點(diǎn)運(yùn)行的時(shí)間點(diǎn)設(shè)置成一個(gè)個(gè)的調(diào)度作業(yè),作業(yè)是否及時(shí)、成功的運(yùn)行,關(guān)系到數(shù)據(jù)的及時(shí)性和準(zhǔn)確性
5.3 表、字段維度的數(shù)據(jù)監(jiān)控
在做數(shù)據(jù)采集或者數(shù)據(jù)清洗,存在大量表的數(shù)據(jù)讀寫(xiě),過(guò)程中需要對(duì)數(shù)據(jù)的完整性、一致性和準(zhǔn)確性進(jìn)行監(jiān)控,數(shù)據(jù)是否正常寫(xiě)入了,是否存在血緣關(guān)系表的數(shù)據(jù)的不一致,是否清洗過(guò)后出現(xiàn)數(shù)據(jù)異常等等都需要及時(shí)知道并進(jìn)行干預(yù),避免錯(cuò)誤數(shù)據(jù)暴露給用戶(hù)。我們可以通過(guò)在作業(yè)運(yùn)行中加入表、字段的監(jiān)控來(lái)實(shí)現(xiàn)
5.4 質(zhì)量、效率與成本的平衡
因?yàn)閿?shù)據(jù)量大,數(shù)據(jù)清洗對(duì)算力的要求高,高的算力能夠幫我們規(guī)避或者延遲一些問(wèn)題的暴露,比如作業(yè)等待。無(wú)限制的去擴(kuò)容帶來(lái)的是成本的無(wú)限增長(zhǎng),我們需要在質(zhì)量、效率和成本中去尋找平衡。
六、后記
任何技術(shù)通過(guò)小馬快跑發(fā)展到一定階段后,最終還是落地到是否能穩(wěn)定的為業(yè)務(wù)提供服務(wù),我們要做的就是抓住這個(gè)機(jī)遇和挑戰(zhàn),不斷的在實(shí)踐中豐富和完善整個(gè)質(zhì)量體系的建立,流程、規(guī)范、執(zhí)行、監(jiān)控是我們?cè)跇I(yè)務(wù)開(kāi)發(fā)中采取的策略,同樣適用于我們的數(shù)據(jù)開(kāi)發(fā),只不過(guò)是使用的工具不一樣罷了。
你們也有數(shù)據(jù)測(cè)試實(shí)踐嗎,歡迎一起來(lái)探討~
總結(jié)
以上是生活随笔為你收集整理的大数据下的质量体系建设的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 跟我一起学.NetCore之Option
- 下一篇: 跟我一起学.NetCore之日志(Log