1.一種web service壓力測試方法,其特征在于,包括:
獲取被測web service的配置信息、以及按照預(yù)先設(shè)定的方式執(zhí)行web service服務(wù)調(diào)用的測試代碼;
在預(yù)處理階段,修改并編譯所述測試代碼,得到可執(zhí)行的測試代碼;所述修改是指將所述測試代碼修改為:根據(jù)入口參數(shù)提供的客戶端以及方法對象執(zhí)行web service服務(wù)調(diào)用,其中,所述客戶端封裝了支持web service服務(wù)調(diào)用的協(xié)議;
在測試執(zhí)行階段,每個測試線程使用對應(yīng)于被測web service的客戶端和方法對象作為入口參數(shù),調(diào)用所述可執(zhí)行的測試代碼完成測試任務(wù)。
2.根據(jù)權(quán)利要求1所述的web service壓力測試方法,其特征在于,所述被測web service的配置信息包括:被測服務(wù)名稱、被測方法名稱、以及被測web service的URL信息。
3.根據(jù)權(quán)利要求2所述的web service壓力測試方法,其特征在于,在所述預(yù)處理階段,還執(zhí)行下述操作:
根據(jù)所述被測web service的配置信息,初始化所述對應(yīng)于被測web service的客戶端和方法對象;
相應(yīng)的,所述每個測試線程使用對應(yīng)于被測web service的客戶端和方法對象作為入口參數(shù)是指,每個測試線程使用上述在預(yù)處理階段已初始化的客戶端和方法對象作為入口參數(shù)。
4.根據(jù)權(quán)利要求1-3任一所述的web service壓力測試方法,其特征在于,所述方法以JMeter插件的形式實現(xiàn);
相應(yīng)的,所述被測web service的配置信息以及所述測試代碼是通過JMeter的圖形用戶界面獲取的;
所述預(yù)處理階段是指,JMeter中的前置處理階段。
5.根據(jù)權(quán)利要求4所述的web service壓力測試方法,其特征在于,在所述前置處理階段修改所述測試代碼還包括:
在所述測試代碼的入口參數(shù)中添加測試所需的自定義參數(shù);
用所述自定義參數(shù)替換所述測試代碼中的相應(yīng)參數(shù)化變量;
相應(yīng)的,在測試執(zhí)行階段,每個測試線程在調(diào)用所述可執(zhí)行的測試代碼完 成測試任務(wù)之前,執(zhí)行下述操作:
通過比對從所述圖形用戶界面獲取的測試代碼和由CSV組件進行參數(shù)替換后的測試代碼,獲取參數(shù)化變量被替換后的具體值;
相應(yīng)的,在測試執(zhí)行階段,每個測試線程調(diào)用所述可執(zhí)行的測試代碼完成測試任務(wù)時,所使用的入口參數(shù)還包括:所述參數(shù)化變量被替換后的具體值。
6.根據(jù)權(quán)利要求5所述的web service壓力測試方法,其特征在于,所述根據(jù)入口參數(shù)提供的客戶端以及方法對象完成web service服務(wù)調(diào)用是指,根據(jù)入口參數(shù)提供的客戶端以及方法對象,通過反射方式完成web service服務(wù)調(diào)用。
7.根據(jù)權(quán)利要求5所述的web service壓力測試方法,其特征在于,在前置處理階段修改并編譯所述測試代碼之前,執(zhí)行下述操作:
將所述測試代碼所使用的第三方j(luò)ar包加載到對應(yīng)的類加載器中。
8.根據(jù)權(quán)利要求5所述的web service壓力測試方法,其特征在于,在所述前置處理階段修改所述測試代碼還包括:
修改所述測試代碼的返回語句,使其返回信息包括:執(zhí)行web service服務(wù)調(diào)用的入口參數(shù)信息、以及結(jié)果信息。
9.根據(jù)權(quán)利要求8所述的web service壓力測試方法,其特征在于,在測試執(zhí)行階段,每個測試線程調(diào)用所述可執(zhí)行的測試代碼后,執(zhí)行下述操作:
將所述調(diào)用操作返回的入口參數(shù)信息和結(jié)果信息,分別添加到JMeter結(jié)果樹的request屬性及response屬性中。
10.根據(jù)權(quán)利要求5所述的web service壓力測試方法,其特征在于,在前置處理階段修改并編譯所述測試代碼后,執(zhí)行下述操作:
將編譯后生成的.class文件顯示的加載至對應(yīng)的類加載器中;
根據(jù)顯示加載返回的類,通過反射機制初始化可執(zhí)行對象;
相應(yīng)的,所述在測試執(zhí)行階段,每個測試線程調(diào)用所述可執(zhí)行的測試代碼完成測試任務(wù)是指,每個測試線程調(diào)用所述已初始化的可執(zhí)行對象,完成測試任務(wù)。
11.一種web service壓力測試裝置,其特征在于,包括:
信息與代碼獲取單元,用于獲取被測web service的配置信息、以及按照預(yù) 先設(shè)定的方式執(zhí)行web service服務(wù)調(diào)用的測試代碼;
測試預(yù)處理單元,用于在預(yù)處理階段,修改并編譯所述測試代碼,得到可執(zhí)行的測試代碼;所述修改是指將所述測試代碼修改為:根據(jù)入口參數(shù)提供的客戶端以及方法對象執(zhí)行web service服務(wù)調(diào)用,其中,所述客戶端封裝了支持web service服務(wù)調(diào)用的協(xié)議;
測試執(zhí)行單元,用于在測試執(zhí)行階段,每個測試線程使用對應(yīng)于被測web service的客戶端和方法對象作為入口參數(shù),調(diào)用所述可執(zhí)行的測試代碼完成測試任務(wù)。
12.根據(jù)權(quán)利要求11所述的web service壓力測試裝置,其特征在于,所述信息與代碼獲取單元獲取的被測web service的配置信息包括:被測服務(wù)名稱、被測方法名稱、以及被測web service的URL信息。
13.根據(jù)權(quán)利要求12所述的web service壓力測試裝置,其特征在于,所述測試預(yù)處理單元包括:
代碼修改子單元,用于修改所述測試代碼,所述修改是指將所述測試代碼修改為:根據(jù)入口參數(shù)提供的客戶端以及方法對象執(zhí)行web service服務(wù)調(diào)用;
代碼編譯子單元,用于編譯修改后的測試代碼,得到可執(zhí)行的測試代碼;
所述測試預(yù)處理單元還包括:
客戶端初始化子單元,用于根據(jù)所述被測web service的配置信息,初始化所述對應(yīng)于被測web service的客戶端和方法對象;
相應(yīng)的,所述測試執(zhí)行單元具體用于,每個測試線程使用所述客戶端初始化子單元初始化的客戶端和方法對象作為入口參數(shù),調(diào)用所述可執(zhí)行的測試代碼完成測試任務(wù)。
14.根據(jù)權(quán)利要求11-13任一所述的web service壓力測試裝置,其特征在于,所述裝置以JMeter插件的形式實現(xiàn);
相應(yīng)的,所述信息與代碼獲取單元具體用于,通過JMeter的圖形用戶界面獲取所述被測web service的配置信息以及所述測試代碼。
15.根據(jù)權(quán)利要求14所述的web service壓力測試裝置,其特征在于,所述代碼修改子單元除了包括:
服務(wù)調(diào)用修改子單元,用于將所述測試代碼修改為:根據(jù)入口參數(shù)提供的 客戶端以及方法對象執(zhí)行web service服務(wù)調(diào)用;
所述代碼修改子單元還包括:
自定義參數(shù)修改子單元,用于在所述測試代碼的入口參數(shù)中添加測試所需的自定義參數(shù);
參數(shù)化變量替換子單元,用于用所述自定義參數(shù)替換所述測試代碼中的相應(yīng)參數(shù)化變量;
相應(yīng)的,所述測試執(zhí)行單元除了包括:
服務(wù)調(diào)用子單元,用于每個測試線程使用對應(yīng)于被測web service的客戶端和方法對象作為入口參數(shù),調(diào)用所述可執(zhí)行的測試代碼完成測試任務(wù);
所述測試執(zhí)行單元還包括:
參數(shù)值獲取子單元,用于在觸發(fā)所述服務(wù)調(diào)用子單元之前,每個測試線程通過比對從所述圖形用戶界面獲取的測試代碼和由CSV組件進行參數(shù)替換后的測試代碼,獲取參數(shù)化變量被替換后的具體值;
相應(yīng)的,所述測試執(zhí)行單元所使用的入口參數(shù)還包括,所述參數(shù)值獲取子單元獲取的參數(shù)化變量被替換后的具體值。
16.根據(jù)權(quán)利要求15所述的web service壓力測試裝置,其特征在于,所述測試執(zhí)行單元是通過反射方式完成web service服務(wù)調(diào)用的。
17.根據(jù)權(quán)利要求15所述的web service壓力測試裝置,其特征在于,所述測試預(yù)處理單元還包括:
jar包加載子單元,用于在觸發(fā)所述代碼修改子單元之前,將所述測試代碼所使用的第三方j(luò)ar包加載到對應(yīng)的類加載器中。
18.根據(jù)權(quán)利要求15所述的web service壓力測試裝置,其特征在于,所述代碼修改子單元還包括:
返回語句修改子單元,用于修改所述測試代碼的返回語句,使其返回信息包括:執(zhí)行web service服務(wù)調(diào)用的入口參數(shù)信息、以及結(jié)果信息。
19.根據(jù)權(quán)利要求18所述的web service壓力測試裝置,其特征在于,所述測試執(zhí)行單元還包括:
返回信息處理子單元,用于將所述調(diào)用操作返回的入口參數(shù)信息和結(jié)果信息,分別添加到JMeter結(jié)果樹的request屬性及response屬性中。
20.根據(jù)權(quán)利要求15所述的web service壓力測試裝置,其特征在于,所述測試預(yù)處理單元還包括:
類加載子單元,用于將所述代碼編譯子單元生成的.class文件顯示的加載至對應(yīng)的類加載器中;
可執(zhí)行對象初始化子單元,用于根據(jù)所述類加載子單元執(zhí)行加載操作返回的類,通過反射機制初始化可執(zhí)行對象;
相應(yīng)的,所述測試執(zhí)行單元具體用于,每個測試線程調(diào)用所述已初始化的可執(zhí)行對象,完成測試任務(wù)。