本發(fā)明涉及汽車租賃行業(yè)的營銷自動化和大數(shù)據(jù),具體涉及一種逆向回溯精準測試方法及系統(tǒng)。
背景技術:
1、逆向回溯指的就是解決qa(quality?assurance,測試工程師)到底實際要測哪些內容的問題,避免qa的全量回歸,實現(xiàn)了對代碼變更的的評估,讓qa的回歸更具有針對性,避免全量回歸的資源浪費。
2、目前現(xiàn)有技術中采用可觀測分析平臺及應用管理系統(tǒng)在線上實時通過探針自動收集所需要的指標,進行分布式追蹤。通過這些調用鏈路數(shù)據(jù),在應用提測后,將變更代碼對應接口與調用鏈數(shù)據(jù)進行匹配獲取相應范圍,此方法配套設施成本巨大,在微服務架構下,每一次用戶請求可能會產生大量的調用鏈數(shù)據(jù),調用鏈數(shù)據(jù)通常需要保留較長時間,以便于故障診斷、性能分析等。即使采用數(shù)據(jù)壓縮和聚合策略,長期保留的大量數(shù)據(jù)也會導致存儲成本持續(xù)升高。java項目本身有入侵性,作為一個外部代理程序,可觀測分析平臺的運行可能會對應用程序的業(yè)務邏輯產生影響。如果代理程序的行為不可控或存在漏洞,都可能會給應用程序的安全性和穩(wěn)定性帶來隱患。
技術實現(xiàn)思路
1、本發(fā)明的目的是為了提供一種逆向回溯精準測試方法及系統(tǒng)。本發(fā)明旨在解決現(xiàn)有的逆向回溯測試方法中在微服務架構下,產生大量的調用鏈數(shù)據(jù)、并會對應用程序的業(yè)務邏輯產生影響,使得其存在配套設施成本巨大、給應用程序的安全性和穩(wěn)定性帶來隱患的問題。
2、為達到上述目的,本發(fā)明通過以下技術方案實現(xiàn):
3、一方面,本發(fā)明提供一種逆向回溯精準測試方法,其用于計算機程序的代碼變更測試,所述方法包括:
4、步驟s1:開啟測試任務,根據(jù)所述測試任務,選擇提測開發(fā)分支,根據(jù)預定的持續(xù)集成工具,觸發(fā)測試任務項目的構建;
5、步驟s2:將所述開發(fā)分支的代碼與計算機程序的主分支的代碼進行對比,獲取所述開發(fā)分支和所述主分支的代碼差異;
6、步驟s3:根據(jù)所述代碼差異,獲取所述測試任務影響的接口;
7、步驟s4:根據(jù)所述影響的接口,分別獲取動態(tài)調用鏈和靜態(tài)調用鏈;
8、步驟s5:根據(jù)所述動態(tài)調用鏈和所述靜態(tài)調用鏈,得到對應的上、下游接口鏈路,生成調用報告。
9、優(yōu)選的,所述獲取動態(tài)調用鏈包括:根據(jù)所述影響的接口,獲取計算機程序的線上接口調用鏈。
10、優(yōu)選的,所述動態(tài)調用鏈在所述計算機程序的請求日志庫中獲取。
11、優(yōu)選的,對所述請求日志庫的日志數(shù)據(jù)結構進行設計,以用于構建動態(tài)調用鏈,所述請求日志庫中日志數(shù)據(jù)結構的設計包括:定義一結構化的日志數(shù)據(jù)對象,所述日志數(shù)據(jù)對象中包括預定的信息。
12、優(yōu)選的,所述預定的信息包括:全局唯一的請求標識、當前服務的請求標識、調用鏈上一個節(jié)點的標識、當前服務名稱、當前主機名、被調用的方法名,方法入?yún)?、方法返回值及日志記錄時間戳。
13、優(yōu)選的,所述的獲取靜態(tài)調用鏈包括:采用自動化工具,對所述測試任務的代碼文件進行掃描和分析,獲取所述代碼文件中變更的接口調用。
14、優(yōu)選的,采用自動化工具,對所述測試任務的代碼文件進行掃描和分析,獲取所述代碼文件中變更的接口調用,其具體包括:
15、基于調用接口的調用類庫,掃描所述測試任務項目中的代碼文件;
16、分析所述代碼文件中調用的服務,得到分析結果;
17、根據(jù)所述分析結果,構建靜態(tài)調用鏈;
18、將構建的所述靜態(tài)調用鏈存儲至數(shù)據(jù)庫或文件系統(tǒng)中。
19、優(yōu)選的,所述構建靜態(tài)調用鏈包括:將所述分析結果組裝成一有向圖數(shù)據(jù)結構;
20、所述有向圖數(shù)據(jù)結構上每一節(jié)點表示一個服務,所述有向圖數(shù)據(jù)結構上每一邊表示不同服務之間的調用關系;
21、所述有向圖數(shù)據(jù)結構上每一節(jié)點均包括:服務名稱、接口名稱和方法簽名。
22、優(yōu)選的,采用git工具和抽象語法樹解析器,對所述計算機程序中的代碼變更進行動態(tài)分析,獲取所述測試任務提交后的靜態(tài)調用鏈,將其與所述測試任務提交前的靜態(tài)調用鏈進行對比,以識別所述測試任務的代碼文件對所述靜態(tài)調用鏈的影響。
23、另一方面,本發(fā)明還提供一種逆向回溯精準測試系統(tǒng),其用于實現(xiàn)上述的逆向回溯精準測試方法。
24、與現(xiàn)有技術相比,本發(fā)明具有以下有益效果:
25、本發(fā)明提供的逆向回溯精準測試方法及系統(tǒng),所述測試方法中靜態(tài)代碼分析可以掃描整個變更的代碼,識別本次所有版本受變更影響的接口和下游依賴;動態(tài)調用鏈監(jiān)控則能保證捕獲線上的應用的調用鏈路;兩種處理方式相結合,可以獲得應用的完整影響范圍,確保測試的全面性。大大減少了發(fā)布周期中回歸測試的成本。本發(fā)明全部基于原始應用中應有的基礎設施進行改造適配,大大的降低了相關成本,提高了精準測試在中小型公司落地的可能性。
1.一種逆向回溯精準測試方法,其特征在于,其用于計算機程序的代碼變更測試,所述方法包括:
2.如權利要求1所述的逆向回溯精準測試方法,其特征在于,所述獲取動態(tài)調用鏈包括:根據(jù)所述影響的接口,獲取計算機程序的線上接口調用鏈。
3.如權利要求2所述的逆向回溯精準測試方法,其特征在于,所述動態(tài)調用鏈在所述計算機程序的請求日志庫中獲取。
4.如權利要求3所述的逆向回溯精準測試方法,其特征在于,對所述請求日志庫的日志數(shù)據(jù)結構進行設計,以用于構建動態(tài)調用鏈,所述日志數(shù)據(jù)結構的設計包括:定義一結構化的日志數(shù)據(jù)對象,所述日志數(shù)據(jù)對象中包括預定的信息。
5.如權利要求4所述的逆向回溯精準測試方法,其特征在于,所述預定的信息包括:全局唯一的請求標識、當前服務的請求標識、調用鏈上一個節(jié)點的標識、當前服務名稱、當前主機名、被調用的方法名,方法入?yún)ⅰ⒎椒ǚ祷刂导叭罩居涗洉r間戳。
6.如權利要求5所述的逆向回溯精準測試方法,其特征在于,所述的獲取靜態(tài)調用鏈包括:采用自動化工具,對所述測試任務的代碼文件進行掃描和分析,獲取所述代碼文件中變更的接口調用。
7.如權利要求1所述的逆向回溯精準測試方法,其特征在于,采用自動化工具,對所述測試任務的代碼文件進行掃描和分析,獲取所述代碼文件中變更的接口調用,其具體包括:
8.如權利要求7所述的逆向回溯精準測試方法,其特征在于,所述構建靜態(tài)調用鏈包括:將所述分析結果組裝成一有向圖數(shù)據(jù)結構;
9.如權利要求7所述的逆向回溯精準測試方法,其特征在于,采用git工具和抽象語法樹解析器,對所述計算機程序中的代碼變更進行動態(tài)分析,獲取所述測試任務提交后的靜態(tài)調用鏈,將其與所述測試任務提交前的靜態(tài)調用鏈進行對比,以識別所述測試任務的代碼文件對所述靜態(tài)調用鏈的影響。
10.一種逆向回溯精準測試系統(tǒng),其特征在于,其用于實現(xiàn)權利要求1-9中任一所述的逆向回溯精準測試方法。