ETL(大數據)測試實戰篇(二)

今天繼續和大家一同分享在項目實踐中針對大數據測試方面的一些有效流程和方法,希望與君共勉~

今日分享的文章內容,主題是:通用case的常用測試方法

 

01、目標表每個字段判斷邏輯驗證

(1)、code diff代碼邏輯---這個過程的參與者是開發與QA,由開發主講代碼邏輯,QA提出疑議並與之討論,在diff前需要QA先行查看即將提測的代碼,以便在code diff時提出問題;

code diff工具推薦使用:下載IDE後安裝git插件,我經常寫python,所以使用的是Pycharm,再安裝git插件作爲常用的code diff工具。

(2)、目標表中依據需求設置case場景覆蓋需求點進行每條case的執行和驗證;

 

02、串列

(1)、正則regexp表達式,使用方法爲:

select column_name from table_name where column_name regexp '[a-zA-Z]';

【含義爲:查詢目標字段值包含英文字母,不區分大小寫的所有字段集合】

(2)、length()函數,使用方法爲:

select column_name from table_name where length(column_name)>10;

【含義爲:查詢目標字段長度大於10的所有字段集合,如時間字段一般保留至年月日,所以正常長度應該是10,如果查出大於或小於10的長度的數據集合,則爲串列數據】

 

03、業務數據邏輯驗證

(1)、操作類時間:需要依據具體的業務需求進行分析,例如:預訂類的明細表中的insert_date必須是小於等於update_date或cancelled_date,

夜審的原因會導致dt分區裏的數據會收取一部分dt+1的業務數據,如果insert_date>=dt+2有數據存在,則不符合業務邏輯;

(2)、基於pm需求:case when的判斷邏輯(包含:正常數據邏輯與異常數據邏輯);表之間join的方式及使用的where條件和on條件;

(3)、全量數據驗證,使用的複雜查詢sql需要寫tmp臨時表,可解決重複查詢時資源浪費的問題;

 

04、數據總量驗證

(1)、依賴的源表中爲主表的join的數據總和與目標表同等條件下的數據總量進行數據總量的對比;

05、數據主鍵不重複

(1)、依據表設計說明,在目標表中使用group by column_name

例如:

select count(1) from dws.dws_test_stat_daily_df where dt='2020-03-29'group by column_test001,resv_date having(count(1))>1; 

group by後的字段:column_test001和resv_date是表dws_test_stat_daily_df的主鍵

如果上述條件查詢出的結果大於0,則說明有數據主鍵重複的數據,需要對應項目的開發排查解決;

 

06、task計劃

(1)、與開發code diff關於配置task計劃的代碼【包含:依賴的表分區不對齊,斷更等異常處理】;

(2)、beta環境執行etl程序時,直接使用task計劃裏的腳本執行初始化和增量,查看執行結果;

(3)、task.yaml文件中所依賴的分區表是否全部列舉至file欄,如以下task.yaml文件所示:​​​​​​​

task_name: tmp_test_room_fac_dftransform: - step: declare.shell   var: exc   file: $TASK_HOME/scripts/common/run_test.sh "dws.test_table_001 dws.test_table_002"         tem.tmp_test_room_fac_df sql/tmp_test_room_fac_df.sql 1

 

07、手工文件解析驗證

(1)、code diff時查看目標手工文件的列數與行數是否與PM給的手工文件表保持一致(注意問題:特殊字符與列分隔符不能重複);

 

(2)、目標結果手工文件表與PM給的手工文件表再次diff差異,一般是沒有差異說明手工文件入庫正確(注意問題:串列,特殊字符,文件總條數);

 

08、調度任務配置驗證

調度任務一般使用較多的是:時間依賴事件依賴

時間依賴是指:配置定時任務,在某段時間內執行,或某個時間點執行;

事件依賴是指:目標表任務的執行需要依賴一些前置條件,如源表數據與中間表數據ready後,才能執行目標表的任務;

一般調度任務只對增量數據做配置,因爲初始化的數據正常情況下只需要在上線時手動執行一次,如果後期項目無頻繁迭代,可不用配置初始化的調度任務,而增量數據需要每天都執行,所以需要配置調度任務每天去自動執行,正常情況下不需要人工干預,爲便於儘早發現調度任務執行問題,會在線上配置完調度後,再對應的配置上監控,假如調度任務持續執行失敗,就需要人工干預解決。下圖爲事件依賴的調度配置頁面詳細信息:

備註:我的個人公衆號已正式開通,致力於測試技術的分享,包含:大數據測試、功能測試,測試開發,API接口自動化、測試運維、UI自動化測試等,微信搜索公衆號:“無量測試之道”,或掃描下方二維碼:

添加關注,一起共同成長吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章