數(shù)據(jù)項目中的測試戰(zhàn)術(shù)與測試工具

隨著科學(xué)的進(jìn)步棺榔、技術(shù)的不斷更新瓶堕,世界已全面進(jìn)入數(shù)字化和智能化時代。2021年3月症歇,國家“十四五”規(guī)劃的正式發(fā)布郎笆,進(jìn)一步催化了各大小企業(yè)爭分奪秒的進(jìn)行數(shù)字化轉(zhuǎn)型谭梗、大數(shù)據(jù)賦能業(yè)務(wù)、數(shù)智化創(chuàng)新等舉措宛蚓,為的就是不久的將來企業(yè)緊跟時代發(fā)展不被科技進(jìn)步所淘汰激捏。
近年來,數(shù)據(jù)倉庫凄吏、數(shù)據(jù)平臺远舅、數(shù)據(jù)中臺的建設(shè)爆炸式增長,相關(guān)的技術(shù)與架構(gòu)也紛紛涌躍與各大社區(qū)或公眾號痕钢,本文從測試視角图柏,總結(jié)分享一些在數(shù)據(jù)項目中積累的戰(zhàn)術(shù)(策略)與武器(工具)。
在分享測試戰(zhàn)術(shù)之前任连,先簡單介紹一下數(shù)據(jù)項目的數(shù)據(jù)分層架構(gòu)蚤吹。

數(shù)據(jù)分層架構(gòu)

數(shù)據(jù)分層架構(gòu)并沒有固定的標(biāo)準(zhǔn),行業(yè)內(nèi)數(shù)據(jù)分層通常是分為三個層:ODS(Operation Data Store) - DW(DataWarehousel) - ADS(Data Warehouse Service)随抠。

數(shù)據(jù)分層案例
  • ODS數(shù)據(jù)運營層:即原始數(shù)據(jù)層裁着,與業(yè)務(wù)系統(tǒng)基本同構(gòu),目的是保留歷史拱她,解耦業(yè)務(wù)數(shù)據(jù)庫二驰,這樣整個數(shù)據(jù)平臺只需要訪問一次業(yè)務(wù)數(shù)據(jù)庫即可。ODS 層有些時候會細(xì)分為兩層秉沼,一個 STG 數(shù)據(jù)緩沖層诸蚕,存原始數(shù)據(jù),一個 ODS氧猬,存簡單清洗的數(shù)據(jù)。
  • DWD數(shù)據(jù)倉庫層:由下到上為 DWD(Data Warehouse Detail) -> DWB(Data Warehouse Base) -> DWS(Data Warehouse Service) 坏瘩。
    • DWD明細(xì)數(shù)據(jù)層盅抚,對數(shù)據(jù)進(jìn)行清洗、代碼統(tǒng)一倔矾、字段統(tǒng)一妄均、格式統(tǒng)一、簡單映射等工作哪自,是為后續(xù)的處理提供統(tǒng)一丰包、標(biāo)準(zhǔn)的數(shù)據(jù)。
    • DWB基礎(chǔ)數(shù)據(jù)層壤巷,存儲的是客觀數(shù)據(jù)邑彪,一般用作中間層,可以認(rèn)為是大量指標(biāo)的數(shù)據(jù)層胧华。
    • DWS服務(wù)數(shù)據(jù)層寄症,基于DWB上的基礎(chǔ)數(shù)據(jù)宙彪,整合匯總成分析某一個主題域的服務(wù)數(shù)據(jù),一般是寬表
  • ADS數(shù)據(jù)服務(wù)層:主要是提供給數(shù)據(jù)產(chǎn)品和數(shù)據(jù)分析使用的數(shù)據(jù)有巧,包括前端報表释漆、分析圖表、KPI篮迎、儀表盤等分析男图,面向最終結(jié)果用戶。

測試戰(zhàn)術(shù)與裝備

戰(zhàn)術(shù)一:依照數(shù)據(jù)分層架構(gòu)甜橱,由底上向逐層驗證逊笆。(復(fù)雜問題簡單化)

無論你是數(shù)倉項目、還是在數(shù)據(jù)平臺類項目上,數(shù)據(jù)的完整鏈路非常長,從最底層的ODS到最上層的ADS脆荷,經(jīng)過了很多步的數(shù)據(jù)轉(zhuǎn)換與邏輯處理程储,如果不進(jìn)行分層驗證,那么以政,端對端的測試復(fù)雜度非常高;而且,發(fā)現(xiàn)問題后偏化,Debug的難度和時間成本也較高。
目前不少數(shù)據(jù)測試團隊栽倒在此環(huán)節(jié)镐侯,還停留在只做端對端測試侦讨,測試痛苦且效率低下。

分層驗證

戰(zhàn)術(shù)二:依照精準(zhǔn)定位+全量捕漏苟翻,精準(zhǔn)造測試數(shù)據(jù)驗證韵卤,生產(chǎn)全量數(shù)據(jù)探查。

在測試環(huán)節(jié)崇猫,面對單步任務(wù)處理邏輯沈条,由于數(shù)據(jù)場景較多,測試難度不小诅炉。所以蜡歹,更需要精準(zhǔn)構(gòu)造每一條測試數(shù)據(jù)來完成場景覆蓋。避免多余場景數(shù)據(jù)造成干擾涕烧、防止數(shù)據(jù)混亂導(dǎo)致場景遺漏月而,數(shù)據(jù)場景清淅、易于精準(zhǔn)定位問題议纯、提高效率父款。
大數(shù)據(jù)時代下,面對真實環(huán)境的數(shù)據(jù)體量大、數(shù)據(jù)多樣铛漓、數(shù)據(jù)質(zhì)量差等現(xiàn)狀溯香,過去的測試環(huán)境構(gòu)建測試數(shù)據(jù)變更更加困難,而且總有意想不到的數(shù)據(jù)情況在生產(chǎn)浓恶,所以一定要盡早上線驗證探查玫坛。

戰(zhàn)術(shù)三:依照數(shù)據(jù)開發(fā)生命周期,每一環(huán)節(jié)進(jìn)行質(zhì)量檢驗包晰。

無論你是瀑布開發(fā)還是敏捷開發(fā)方式湿镀,在整個開發(fā)生命周期展開驗證、形成閉環(huán)伐憾。

  • 瀑布團隊:需求階段 -> 架構(gòu)設(shè)計 -> 開發(fā)階段 -> 測試階段 -> 生產(chǎn)線上勉痴。
    • 需求階段:對需求進(jìn)行評審,從數(shù)據(jù)質(zhì)量的六個維度(完整性树肃、一致性蒸矛、準(zhǔn)確性、唯一性胸嘴、及時性雏掠、有效性)評審需求文檔中是否存在不符合項,從需求的價值角度評審是否合理劣像,從覆蓋場景角度評審是否有遺漏或不符合場景等乡话,從數(shù)據(jù)安全、性能等非功能性方面評審是否有不符合項耳奕。
    • 架構(gòu)設(shè)計:參加架構(gòu)設(shè)計評審會議绑青,對于數(shù)據(jù)分層架構(gòu)評審需要關(guān)注是否數(shù)據(jù)結(jié)構(gòu)清晰、是否方便數(shù)據(jù)血緣追蹤屋群、是否把復(fù)雜問題簡單化(比如闸婴,把復(fù)雜的任務(wù)拆解成多步驟、每一層處理單步芍躏,便于維護(hù)數(shù)據(jù)準(zhǔn)確性掠拳,也易于定位或修復(fù)問題)、是否能屏蔽業(yè)務(wù)的影響(比如纸肉,改一處需求,指標(biāo)維度變更還得重新接入數(shù)據(jù))喊熟。
    • 開發(fā)階段:提前編寫測試用例(構(gòu)建測試數(shù)據(jù)柏肪、數(shù)據(jù)即用例),與開發(fā)人員提前對齊目標(biāo)結(jié)果芥牌。代碼開發(fā)完成后烦味,及時用準(zhǔn)備好的測試數(shù)據(jù)進(jìn)行驗證。
    • 測試階段:更多的是進(jìn)行探索式測試,減少重復(fù)測試(比如谬俄,開發(fā)階段的測試數(shù)據(jù)以及環(huán)境都沒有差異柏靶,無需重復(fù)測試),如QA環(huán)境有脫敏生產(chǎn)數(shù)據(jù)溃论,重點進(jìn)行數(shù)據(jù)探查驗證(參見:《一定要做數(shù)據(jù)探查》)
    • 生產(chǎn)線上:生產(chǎn)環(huán)境下的QA屎蜓,數(shù)據(jù)結(jié)果探查驗證、特別是要持續(xù)關(guān)注監(jiān)控與日志钥勋,及時發(fā)現(xiàn)問題炬转、及時與業(yè)務(wù)側(cè)收集反饋等。
  • 敏捷團隊:敏捷開發(fā)方式下的測試實踐之前分享太多次算灸,這里不再詳細(xì)贅述扼劈。(可參見:《數(shù)據(jù)中臺測試實踐分享》
    數(shù)據(jù)項目測試活動

戰(zhàn)術(shù)四:依照效能提升,提前預(yù)防菲驴、自動化裝備

  • 前面提到的從開發(fā)生命周期出發(fā)荐吵,每個階段進(jìn)行安排相關(guān)就及時驗證,實際上就是為了預(yù)防缺陷遺漏到后面赊瞬。越早發(fā)現(xiàn)問題先煎,修復(fù)成本越低。
  • 除了提前參與森逮、提前驗證榨婆、預(yù)防缺陷,還需要通過測試執(zhí)行效率的提升來加強質(zhì)量保障褒侧。數(shù)據(jù)類項目的測試用例即為測試數(shù)據(jù)良风,那么,測試數(shù)據(jù)構(gòu)造自動化闷供、每一層任務(wù)的測試驗證自動化烟央、數(shù)據(jù)探查自動化,一方面解決了人為執(zhí)行可能出錯的問題歪脏,二來自動化替代人工效率提高疑俭。
  • 工具推薦,對于測試數(shù)據(jù)構(gòu)造工具有:Datafaker婿失、DbSchema钞艇、Online test data generator等;ETL測試工具有:RightData豪硅、QuerySurge等哩照;數(shù)據(jù)質(zhì)量檢查工具:great_expectations、mobyDQ懒浮、DataQuality飘弧、GriFFin、Qualitis等。
工具推薦

贈送利器Easy SQL

在項目實踐過程中次伶,即便應(yīng)用了以上測試工具加持痴昧,團隊依然會遇到各種困擾。

  • 構(gòu)造測試數(shù)據(jù)工具只支持按定義規(guī)則批量生成數(shù)據(jù)冠王,無法做到精準(zhǔn)構(gòu)造每步處理邏輯覆蓋所有測試場景的最小集赶撰;而且定義每個字段規(guī)則時、字段與字段之間以及表與表之間都有復(fù)雜的約束或關(guān)聯(lián)時版确,構(gòu)建數(shù)據(jù)復(fù)雜度依然很高扣囊。
    【期望】期望能在Excel或Json文件中,直接在單元格填上數(shù)據(jù)即用例绒疗,即代表是測試數(shù)據(jù)已準(zhǔn)備侵歇,這樣多好。
  • 測試環(huán)境中構(gòu)造數(shù)據(jù)時吓蘑,數(shù)據(jù)表有上百個Schema惕虑,每次通過構(gòu)造工具創(chuàng)建數(shù)據(jù)時,需要對這上百個字段進(jìn)行構(gòu)造磨镶。
    【期望】只構(gòu)造與任務(wù)處理邏輯相關(guān)的字段數(shù)據(jù)溃蔫、沒參與邏輯處理的字段不用構(gòu)造、減少繁雜提高效率琳猫。
  • 測試環(huán)境的維護(hù)總是需要花大量時間伟叛,不論是由于構(gòu)造數(shù)據(jù)出問題還是處理邏輯有Bug,都會造成測試環(huán)境留下臟數(shù)據(jù)脐嫂,如果不及時處理统刮,會影響測試的正確性,造成不必要的浪費账千。
    【期望】希望能像UT一樣不需要一個真實環(huán)境侥蒙,就能對每一步數(shù)據(jù)處理任務(wù)進(jìn)行自動化測試,開發(fā)人員或測試人員只負(fù)責(zé)MOCK測試數(shù)據(jù)與結(jié)果數(shù)據(jù)(比如:用簡單的Excel填數(shù)據(jù))匀奏,程序能自動比對預(yù)期的結(jié)果和實際運行結(jié)果鞭衩。
  • ...等等
    推薦一款利器:開源工具Easy SQL,Easy SQL 旨在簡化數(shù)據(jù) ETL 開發(fā)過程娃善,幫助數(shù)據(jù)團隊提升研發(fā)效能论衍。它自帶的Test SQL框架就是以上期望的方式,大大提升了測試效率聚磺。 附Easy SQL Git地址饲齐。
Easy SQL Test ETL
Test ETL中測試用例
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市咧最,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖矢沿,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滥搭,死亡現(xiàn)場離奇詭異,居然都是意外死亡捣鲸,警方通過查閱死者的電腦和手機瑟匆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來栽惶,“玉大人愁溜,你說我怎么就攤上這事⊥獬В” “怎么了冕象?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長汁蝶。 經(jīng)常有香客問我渐扮,道長,這世上最難降的妖魔是什么掖棉? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任墓律,我火速辦了婚禮,結(jié)果婚禮上幔亥,老公的妹妹穿的比我還像新娘耻讽。我一直安慰自己,他們只是感情好帕棉,可當(dāng)我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布针肥。 她就那樣靜靜地躺著,像睡著了一般笤昨。 火紅的嫁衣襯著肌膚如雪祖驱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天瞒窒,我揣著相機與錄音捺僻,去河邊找鬼。 笑死崇裁,一個胖子當(dāng)著我的面吹牛匕坯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拔稳,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼葛峻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了巴比?” 一聲冷哼從身側(cè)響起术奖,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤礁遵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后采记,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體佣耐,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年唧龄,在試婚紗的時候發(fā)現(xiàn)自己被綠了兼砖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡既棺,死狀恐怖讽挟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丸冕,我是刑警寧澤耽梅,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站晨仑,受9級特大地震影響褐墅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜洪己,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一妥凳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧答捕,春花似錦逝钥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至沃琅,卻和暖如春哗咆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背益眉。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工晌柬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人郭脂。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓年碘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親展鸡。 傳聞我的和親對象是個殘疾皇子屿衅,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容