本申請涉及計算機、軟件測試,具體而言,本申請涉及一種軟件測試方法、裝置、電子設(shè)備及計算機存儲介質(zhì)。
背景技術(shù):
1、軟件測試是確保軟件產(chǎn)品符合預(yù)期質(zhì)量標(biāo)準(zhǔn)的過程。它涉及到驗證軟件的功能、性能、安全性、可用性和其他方面是否符合設(shè)計要求和用戶需求。
2、協(xié)程(goroutine)泄露是指在go程序中,創(chuàng)建的協(xié)程沒有被正確終止,導(dǎo)致協(xié)程一直占用系統(tǒng)資源的情況,會導(dǎo)致資源耗盡,甚至系統(tǒng)崩潰的問題出現(xiàn)。軟件測試中,測試程序運行時是否會產(chǎn)生協(xié)程泄露稱為協(xié)程泄露測試。協(xié)程泄露測試是軟件測試中十分重要的部分?,F(xiàn)有技術(shù)在進(jìn)行協(xié)程泄露測試時,檢測效果差,不能有效的檢測出程序的協(xié)程泄露隱患。
技術(shù)實現(xiàn)思路
1、本申請實施例提供了一種軟件測試方法、裝置、電子設(shè)備、計算機可讀存儲介質(zhì)及計算機程序產(chǎn)品,可以解決現(xiàn)有技術(shù)在軟件測試時協(xié)程泄露測試的效果差的問題。所述技術(shù)方案如下:
2、根據(jù)本申請實施例的第一方面,提供了一種軟件測試方法,該方法包括:
3、獲取目標(biāo)程序,所述目標(biāo)程序中包括待測試程序和所述待測試程序的錯誤注入函數(shù),所述錯誤注入函數(shù)用于在所述待測試程序進(jìn)行負(fù)載測試時觸發(fā)至少一種異常;所述待測試程序中包括用于處理所述錯誤注入函數(shù)觸發(fā)的異常的程序代碼;
4、通過所述目標(biāo)程序執(zhí)行測試任務(wù),以對所述待測試程序進(jìn)行負(fù)載測試;
5、在所述目標(biāo)程序執(zhí)行測試任務(wù)完成后,獲取所述目標(biāo)程序已啟動的協(xié)程的第一數(shù)量;
6、根據(jù)所述第一數(shù)量和第二數(shù)量,判斷所述待測試程序的協(xié)程泄露測試是否成功,所述第二數(shù)量是在所述目標(biāo)程序執(zhí)行測試任務(wù)前獲取的目標(biāo)程序已啟動的協(xié)程的數(shù)量。
7、根據(jù)本申請實施例的第二方面,提供了一種軟件測試裝置,該裝置包括:
8、目標(biāo)程序獲取模塊,用于所述目標(biāo)程序中包括待測試程序和所述待測試程序的錯誤注入函數(shù),所述錯誤注入函數(shù)用于在所述待測試程序進(jìn)行負(fù)載測試時觸發(fā)至少一種異常;所述待測試程序中包括用于處理所述錯誤注入函數(shù)觸發(fā)的異常的程序代碼;
9、數(shù)量獲取模塊,用于通過所述目標(biāo)程序執(zhí)行測試任務(wù),以對所述待測試程序進(jìn)行負(fù)載測試;在所述目標(biāo)程序執(zhí)行測試任務(wù)完成后,獲取所述目標(biāo)程序已啟動的協(xié)程的第二數(shù)量;
10、判斷模塊,用于根據(jù)第一數(shù)量和第二數(shù)量,判斷所述待測試程序的協(xié)程泄露測試是否成功,所述第二數(shù)量是在所述目標(biāo)程序執(zhí)行測試任務(wù)前獲取的目標(biāo)程序已啟動的協(xié)程的數(shù)量。
11、根據(jù)本申請實施例的第三方面,提供了一種電子設(shè)備,該電子設(shè)備包括存儲器、處理器及存儲在存儲器上的計算機程序,處理器執(zhí)行程序時實現(xiàn)如第一方面所提供的方法的步驟。
12、根據(jù)本申請實施例的第四方面,提供了一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)如第一方面所提供的方法的步驟。
13、根據(jù)本申請實施例的第五方面,提供了一種計算機程序產(chǎn)品,該計算機程序產(chǎn)品包括計算機指令,該計算機指令存儲在計算機可讀存儲介質(zhì)中,當(dāng)計算機設(shè)備的處理器從計算機可讀存儲介質(zhì)讀取該計算機指令,處理器執(zhí)行該計算機指令,使得該計算機設(shè)備執(zhí)行實現(xiàn)如第一方面所提供的方法的步驟。
14、本申請實施例提供的技術(shù)方案帶來的有益效果是:本申請實施例中的目標(biāo)程序包括待測試程序和待測試程序的錯誤注入函數(shù),由于一個運行良好的軟件或程序,即使在高負(fù)載過程中產(chǎn)生大量異常,該軟件或程序?qū)?yīng)的協(xié)程數(shù)量在執(zhí)行負(fù)載測試前后基本保持不變,因此通過使用目標(biāo)程序執(zhí)行測試任務(wù),用于模擬待測試程序在負(fù)載測試過程中處理大量異常的場景。通過獲取目標(biāo)程序執(zhí)行測試任務(wù)前目標(biāo)程序已啟動的協(xié)程的第二數(shù)量,與目標(biāo)程序執(zhí)行測試任務(wù)后目標(biāo)程序已啟動的協(xié)程的第一數(shù)量,獲得執(zhí)行測試任務(wù)前后目標(biāo)程序已啟動的協(xié)程的數(shù)量的差異大小,從而判斷出待測試程序在負(fù)載測試時是否出現(xiàn)了協(xié)程泄露的問題,若待測試程序在負(fù)載測試時出現(xiàn)了協(xié)程泄露的問題,則待測試程序的協(xié)程泄露測試失敗,若待測試程序在負(fù)載測試時沒有出現(xiàn)協(xié)程泄露問題,則待測試程序的協(xié)程泄露測試成功。本申請實施例,實現(xiàn)了待測試程序在高負(fù)載處理任務(wù)過程中出現(xiàn)大量異常的場景下的協(xié)程泄露測試,使得檢測成功的待測試程序在實際應(yīng)用時,即使需要處理大量異常也不會產(chǎn)生協(xié)程泄露的問題。
1.一種軟件測試方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取所述目標(biāo)程序已啟動的協(xié)程的第一數(shù)量,包括:
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述目標(biāo)程序中還包括性能分析工具,所述性能分析工具用于監(jiān)聽所述目標(biāo)程序的堆棧信息;
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述堆棧信息還包括已啟動的協(xié)程的協(xié)程標(biāo)識;
5.根據(jù)權(quán)利要求1至4任一項所述的方法,其特征在于,所述根據(jù)所述第一數(shù)量和第二數(shù)量,判斷所述待測試程序的協(xié)程泄露測試是否成功,包括:
6.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述獲取目標(biāo)程序,包括:
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,任一錯誤注入函數(shù)包括異常標(biāo)識和第一指令,所述第一指令用于指示觸發(fā)所述異常標(biāo)識對應(yīng)的異常;
8.一種軟件測試裝置,其特征在于,包括:
9.一種電子設(shè)備,包括存儲器、處理器及存儲在存儲器上的計算機程序,其特征在于,所述處理器執(zhí)行所述計算機程序以實現(xiàn)權(quán)利要求1-7任一項所述方法的步驟。
10.一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,其特征在于,所述計算機程序被處理器執(zhí)行時實現(xiàn)權(quán)利要求1-7任一項所述方法的步驟。
11.一種計算機程序產(chǎn)品,包括計算機程序,其特征在于,所述計算機程序被處理器執(zhí)行時實現(xiàn)權(quán)利要求1-7任一項所述方法的步驟。