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