大資料測試實踐小結
阿新 • • 發佈:2019-01-05
針對我們產品線的某些模型產品的需求,開始展開大資料測試,對大資料測試仍然屬於摸索和嘗試的階段,大家感興趣的歡迎拍磚。
一、 模型產生的過程
· 資訊收集:需明確專案目標和業務需求,根據確定的資料分析物件,確定分析物件所需要的特徵資訊,以及特徵資訊的計算方法;這個過程業務方會做很多的準備工作,會拉資料去證明哪些特徵資訊與我們的資料分析物件是有關聯的;
· 資料準備: 從資料倉庫中獲取資料構造用於模型分析的資料集,包括選擇資料、格式化資料、資料清理、資料整合等過程,是整個資料探勘過程中最耗時的環節,甚至佔據整個模型專案一半以上的工作量。而資料是整個資料探勘的根基,資料的質量直接決定模型分析的結果的準確性;
· 建立模型:選擇合適的建模技術和演算法,將最終得到的資料集是作為模型的輸入進行訓練,同時對它們的引數進行校準以達到最優值。
· 模型評估: 通過模型的訓練會最終得到一個分析結果,需要對它們進行驗證和評價,證明其合理性和準確性。一般對模型進行評估的方法有:業務上抽樣資料驗證、計算模型的準確率、資訊分佈、 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. 列順序錯誤;