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

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


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


0一、目標表每一個字段判斷邏輯驗證sql

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

code diff工具推薦使用:下載IDE後安裝git插件,我常常寫python,因此使用的是Pycharm,再安裝git插件做爲經常使用的code diff工具。微信


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



0二、串列編輯器


(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的長度的數據集合,則爲串列數據】


0三、業務數據邏輯驗證


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

夜審的緣由會致使dt分區裏的數據會收取一部分dt+1的業務數據,若是insert_date>=dt+2有數據存在,則不符合業務邏輯;


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

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


0四、數據總量驗證


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

0五、數據主鍵不重複

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

例如:

select count(1from 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,則說明有數據主鍵重複的數據,須要對應項目的開發排查解決;


0六、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


0七、手工文件解析驗證

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


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



0八、調度任務配置驗證

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

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

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

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


淺談ETL測試(二)


Python大數據正態分佈之箱型圖上下限值計算


Face_recognition人臉識別之考勤統計


AirTest-selenium基於Web實現UI自動化測試


Anemometer將Mysql慢查詢日誌可視化


Python+Telnet命令實現dubbo接口自動化測試


淺談pycrypto加密模塊

本文分享自微信公衆號 - 無量測試之道(gh_858a1aa25a6d)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索