1. 程式人生 > >大資料測試實踐小結

大資料測試實踐小結

針對我們產品線的某些模型產品的需求,開始展開大資料測試,對大資料測試仍然屬於摸索和嘗試的階段,大家感興趣的歡迎拍磚。   一、 模型產生的過程   ·  資訊收集:需明確專案目標和業務需求,根據確定的資料分析物件,確定分析物件所需要的特徵資訊,以及特徵資訊的計算方法;這個過程業務方會做很多的準備工作,會拉資料去證明哪些特徵資訊與我們的資料分析物件是有關聯的;   ·  資料準備: 從資料倉庫中獲取資料構造用於模型分析的資料集,包括選擇資料、格式化資料、資料清理、資料整合等過程,是整個資料探勘過程中最耗時的環節,甚至佔據整個模型專案一半以上的工作量。而資料是整個資料探勘的根基,資料的質量直接決定模型分析的結果的準確性;   ·
  建立模型:選擇合適的建模技術和演算法,將最終得到的資料集是作為模型的輸入進行訓練,同時對它們的引數進行校準以達到最優值。   ·  模型評估: 通過模型的訓練會最終得到一個分析結果,需要對它們進行驗證和評價,證明其合理性和準確性。一般對模型進行評估的方法有:業務上抽樣資料驗證、計算模型的準確率、資訊分佈、 K-S 值、 Gini 值等;   二、 資料測試的範圍和難點   針對模型產生的這一過程,可以確定我們的測試範圍和重點是資料準備這個環節,就如上所述,資料是整個過程最重要和最關鍵的一個環節,需要確保資料的質量。   測試物件:開發人員開發資料的 HiveSql 指令碼及指令碼產出的資料集合;   我們產品的資料特點:   1. 大部分欄位有比較複雜的計算邏輯;   2. 無需求說明文件,加大了理解欄位的難度;   3. 無設計文件,即無執行計劃,表關係、計算邏輯、源表只能通過分析程式碼獲得;程式碼在劃分模組、編寫風格上,不同開發有不同特點;   三、 資料測試技術
 & 方法
  公司有一些 BU 在做資料的測試,目前大家一起籌備在做大資料測試的共建。   ·   相關的技術 :   1.      規則掃描技術:對資料集合的欄位列配置一些校驗規則,自動進行掃描;   2.      靜態程式碼掃描:目前有列順序掃描、程式碼規範掃描等;   3.      單元測試:資料準確、單元指令碼的執行。提供單測平臺,驅動開發去做 hivesql 的單元測試,測試人員主要是 review 開發的單測指令碼校驗規則是否齊全和正確;   4.      資料對比:資料集合的對比;   等等 。。。。。。應用到我們模型資料測試中的技術有規則掃描、列對比、資料對比等技術,比較適用,發現的資料類 bug 比較多;   ·   關於資料測試方面的沉澱和方法比較零散,沒有形成體系;且各個 BU 因為業務的差異性,測試方法也存在不同。針對我們產品的資料特點,我整理了一些過程中用到的 測試方法 :
  1.      結果資料比對方法,主要做資料量的比對、資料取值是否和源資料倉庫中的資料一致;   2.      抽樣資料驗證:此方法主要用於校驗有比較複雜計算邏輯的欄位資料是否正確;計算邏輯比較複雜,編寫自動化指令碼做大批量資料的比對代價會比較大,需要產生很多中間表,因此,做抽樣資料驗證,大大提高了效率,也易於發現 bug ;   3.      程式碼靜態分析和 code review ,會發現一些業務上和篩選條件上的錯誤;   4.      造測試資料,驗證計算邏輯;   5.      資料列順序對比;   ·   校驗的場景:   1.      資料量;   2.      記錄是否唯一;   3.      資料區間和分佈( min 、 max 、 avg 等);   4.      資料中 null 值的替換及格式化特徵;   5.      資料邊界;   6.      資料是否一致、存在丟失;   7.      列順序是否正確;   8.      資料的精度和格式化資訊;   四、 測試工具   過程中,運用的測試工具有:   1.      Hivetest   既可做 sql 與 sql 的比對,也能做 sql 與值的比對測試,平臺包括資料準確、同步、指令碼的模版、執行等;   2.      規則掃描工具:主要是對欄位列配置規則進行掃描;   3.      表關係生成工具;   還有一些工具,例如 Slowly 平臺、一淘的單元測試平臺、 BI 的 checklist 資料對比工具、單元測試平臺,沒有進行適用, Slowly 目前只支援支付寶的叢集,一淘的目前還未做許可權開放,當然想用的話,仍然可以聯絡靈石做處理; BI 的單測平臺目前只支援雲梯 2 ,而我們卻在雲梯 1 ......   總體感覺,在大資料測試這塊,大資料對比、規則掃描、程式碼靜態掃描、表關係生成、執行計劃自動生成、單測平臺會有比較大的應用前景,大資料的比對是難點。   五、 常見 bug 分類   嘗試做了 2 個模型的資料測試,發現的 bug 不多,大體上集中在:   1.      記錄不唯一;   2.      Null 值替換問題;   3.      過濾條件不正確;   4.      資料不一致和丟失;   5.      列順序錯誤;