本申請涉及計算機
技術領域:
,尤其涉及一種應用系統(tǒng)的測試方法及裝置。
背景技術:
:隨著業(yè)務量的增長,應用系統(tǒng)的容量(如,帶寬、機架、數(shù)據(jù)庫連接數(shù)等)已經(jīng)成為了越來越明顯的瓶頸。因此,需要將原有面向服務的架構(ServiceOrientedArchitecture,SOA)下的各個應用系統(tǒng)進行單元化部署;雖然單元化部署解決了應用系統(tǒng)的容量問題,但是架構更加復雜,同時給測試帶來了新的挑戰(zhàn)。如,在單元化部署中,一個應用系統(tǒng)可以部署在不同的功能單元中,每個功能單元發(fā)布應用系統(tǒng)的不同的服務(也稱為被測接口),當應用系統(tǒng)啟動運行時,不同功能單元間的調用鏈路十分復雜。因此,如何通過自動化測試驗證同一個應用系統(tǒng)在不同功能單元發(fā)布的服務的正確性,以及功能單元間調用情況的正確性,是亟需解決的問題。目前主要有兩種測試方法:1)通過手工的方式對單元化部署的應用系統(tǒng)進行測試,然而這種測試方法會使得測試人員的工作量比較大,且測試成本比較高;2)將單元化部署的應用系統(tǒng)視為非單元化部署的應用系統(tǒng),即通過原有的自動化測試手段在一個功能單元內測試所有的服務,然而在單元化部署的情況下,往往需要對功能單元與服務的對應關系進行測試(即測試某個服務是否成功發(fā)布到與其對應的功能單元中),而該方法不能對上述對應關系進行測試,且無法連續(xù)或者同時對同一類型的多個功能單元執(zhí)行自動化測試,這影響了測試的效率。由上述可知,現(xiàn)有技術中在對SOA架構下的應用系統(tǒng)進行測試時,存在無 法連續(xù)或者同時對同一類型的多個功能單元執(zhí)行自動化測試,從而導致的測試效率低的問題。技術實現(xiàn)要素:本申請實施例提供了一種應用系統(tǒng)的測試方法及裝置,可以解決現(xiàn)有技術中存在的無法連續(xù)或者同時對同一類型的多個功能單元執(zhí)行自動化測試,從而導致的測試效率低的問題。第一方面,提供了一種應用系統(tǒng)的測試方法,該方法包括:接收指令的步驟:接收啟動所述應用系統(tǒng)的指令,所述指令攜帶與所述應用系統(tǒng)對應的功能單元的第一類型信息;啟動功能單元的步驟:啟動與所述第一類型信息對應的第一功能單元,并執(zhí)行與所述第一功能單元對應的測試用例;若所述功能單元的類型為多種,則重復執(zhí)行所述接收指令的步驟以及啟動功能單元的步驟;直至執(zhí)行完成與多種類型的功能單元對應的測試用例;收集對所述功能單元的測試結果并輸出。第二方面,提供了一種應用系統(tǒng)的測試裝置,該裝置包括:接收單元、啟動單元、執(zhí)行單元和收集單元;所述接收單元,用于接收啟動所述應用系統(tǒng)的指令,所述指令攜帶與所述應用系統(tǒng)對應的功能單元的第一類型信息;所述啟動單元,用于啟動與所述第一類型信息對應的第一功能單元,并執(zhí)行與所述第一功能單元對應的測試用例;所述執(zhí)行單元,用于若所述功能單元的類型為多種,則重復執(zhí)行所述接收單元以及所述啟動單元執(zhí)行的步驟;直至執(zhí)行完成與多種類型的功能單元對應的測試用例;所述收集單元,用于收集對所述功能單元的測試結果并輸出。本申請?zhí)峁┑膽孟到y(tǒng)的測試方法及裝置,在對應用系統(tǒng)進行測試時, 每次只對與應用系統(tǒng)對應的一種類型的功能單元進行測試,即只對一種類型的功能單元包含的被測接口進行測試;當有多種類型的功能單元時,重復上述測試的過程。由此,可以提升測試的效率,進而可以節(jié)約計算機資源。附圖說明圖1為基于CRG架構進行單元化部署的應用系統(tǒng)的示意圖;圖2為本申請一種實施例提供的應用系統(tǒng)的測試方法流程圖;圖3為測試裝置示意圖;圖4為Gzone類型功能單元的測試示意圖;圖5為Rzone類型功能單元的測試示意圖;圖6為Czone類型功能單元的測試示意圖;圖7為本申請另一種實施例提供的應用系統(tǒng)的測試裝置示意圖;圖8為應用系統(tǒng)的測試裝置的部署示意圖。具體實施方式為使本申請實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├绢I域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。為便于對本申請實施例的理解,下面將結合附圖以具體實施例做進一步的解釋說明,實施例并不構成對本申請實施例的限定。本申請實施例提供的應用系統(tǒng)的測試方法及裝置,適用于對單元化部署的應用系統(tǒng)進行測試的場景,尤其適用于對基于城市分區(qū)全局(cityregionglobal,CRG)架構進行單元化部署的應用系統(tǒng)進行測試的場景。參見圖1所示的基于CRG架構進行單元化部署的應用系統(tǒng)的示意圖,CRG架構是數(shù)據(jù)中心 單元化的一種實現(xiàn)方式,所謂數(shù)據(jù)中心單元化,是將復雜業(yè)務根據(jù)業(yè)務特性和數(shù)據(jù)特性進行拆分,部署在不同的單元中,單元間相對獨立,可擴展,從而實現(xiàn)業(yè)務的擴容、容災等方面的要求。圖1中,與應用系統(tǒng)(被測應用系統(tǒng))對應的功能單元包括三種類型:全局邏輯機房單元(globalzone,Gzone)類型、分區(qū)邏輯機房單元(regionzone,Rzone)類型、城市邏輯機房單元(cityzone,Czone)類型,其中,Gzone類型的功能單元是在全局只有一組,如,G單元,其部署不可拆分的數(shù)據(jù),Rzone類型的功能單元是自包含的單元,如,R1單元和R2單元,其可以作為獨立的單元對外提供服務,而不依賴其他的功能單元。Czone類型的功能單元是城市級的單元,如,C1單元和C2單元,其向Rzone類型的功能單元和Gzone類型的功能單元提供服務,從而減少城市間的調用。此外,上述Rzone類型和Czone類型的功能單元可以有多個,每個功能單元可以包含多個不同的被測接口,一個被測接口唯一地對應一個功能單元?;贑RG架構進行單元化部署時,單元間的依賴性比較高,且單元間會進行相互調用,而單元間的調用往往存在一定的延時,由此會導致測試的速度下降。而本申請的測試方法采用單元化測試的策略,從而可以實現(xiàn)執(zhí)行邏輯與單元化架構的解耦。圖2為本申請一種實施例提供的應用系統(tǒng)的測試方法流程圖。所述方法的執(zhí)行主體可以為具有處理能力的設備:服務器或者系統(tǒng)或者裝置,例如,可以是測試裝置,參見圖3所示的測試裝置示意圖,該測試裝置包括:命令處理器(CommandProcessor)、邏輯機房單元處理器(ZoneProcessor)、邏輯機房檢查器(ZoneChecker)、聚合器(Aggregator)以及測試基類監(jiān)聽器(TestBaseListenser),其中,命令處理器主要負責處理應用系統(tǒng)的啟動指令,該指令中攜帶本次被測功能單元的信息,并將本次被測功能單元的信息發(fā)送至邏輯機房單元處理器,由邏輯機房單元處理器根據(jù)上述信息啟動相應的功能單元;在啟動功能單元之后,邏輯機房檢查器負責篩選并執(zhí)行與已啟 動功能單元對應的測試用例;聚合器主要負責對所有功能單元的測試結果進行聚合,以向測試人員展示測試結果。如圖2所示,所述方法具體包括:步驟210,接收指令的步驟:接收啟動所述應用系統(tǒng)的指令,所述指令攜帶與所述應用系統(tǒng)對應的功能單元的第一類型信息。此處,啟動所述應用系統(tǒng)的指令可以通過運行自動化測試腳本觸發(fā)。需要說明的是,與應用系統(tǒng)對應的功能單元的類型可以包括以下類型中的一種或者多種:全局邏輯機房單元Gzone類型、城市邏輯機房單元Czone類型以及分區(qū)邏輯機房單元Rzone類型。在一種實現(xiàn)方式中,上述第一類型信息可以為:Gzone類型、Czone類型或者Rzone類型。步驟220,啟動功能單元的步驟:啟動與所述第一類型信息對應的第一功能單元,并執(zhí)行與所述第一功能單元對應的測試用例。舉例來說,在圖1中,假設指令中攜帶的第一類型信息為Rzone類型,則啟動Rzone類型的功能單元:R1單元和R2單元。可選地,在所述執(zhí)行與所述第一類型的功能單元對應的測試用例之前,所述方法還包括:步驟2201,讀取預設的多個測試用例。此處的預設的多個測試用例是由測試人員預先編寫的,其用于模擬真實場景下對功能單元中被測接口的調用,通過將調用結果與預先設置好的期望值的比較,可以判定測試結果是通過還是失敗,從而驗證被測接口調用的正確性。在讀取到上述多個測試用例之后,所述方法還可以包括確定測試用例的類型的步驟,包括:確定所述每個測試用例對應的第一被測接口。根據(jù)所述第一被測接口所屬的功能單元的類型,獲得所述每個測試用例的類型。對預設的多個測試用例,根據(jù)該測試用例的注釋信息,或者,通過預設的分析工具對測試用例分析之后,可以獲得測試用例對應的第一被測接口,其中,第一被測接口可以為與應用系統(tǒng)對應的功能單元中包含的任一被測接口,如,在對圖1中的應用系統(tǒng)測試時,第一被測接口可以為接口1至接口10中的任一被測接口。舉例來說,假設預設的多個測試用例中的第一測試用例對應的第一被測接口為接口1,因為接口1所屬的功能單元為G單元,則可以獲得第一測試用例的類型為Gzone類型,依次類推,可以獲得預設的多個測試用例中每個測試用例的類型。步驟2202,依次對所述多個測試用例中的每個測試用例添加標識信息,所述標識信息用于標識所述每個測試用例的類型。在一種實現(xiàn)方式中,預設的多個測試用例以文件的形式進行保存,則可以通過兩種方式添加標識信息:第一種方式是,直接在與每個測試用例對應的文件的名稱中添加標識信息;第二種方式是,在與每個測試用例對應的文件的正文內容的開始或者結束部分添加標識信息。其中,上述添加的標識信息可以為任一能標識測試用例的類型的信息,如,可以為“Rzone類型”。舉例來說,假設預設的測試用例包括10個,具體為:測試用例1至測試用例10,且該10個測試用例分別與圖1中的接口1至接口10對應,則對每個測試用例添加標識信息之后,可以如表1所示:表1測試用例標識信息測試用例1Gzone類型測試用例2Gzone類型…測試用例10Czone類型回到步驟220中,在啟動與所述第一類型信息對應的第一功能單元之后,執(zhí)行與所述第一功能單元對應的測試用例,其中,執(zhí)行與所述第一功能單元對應的測試用例可以包括:根據(jù)所述標識信息,從所述多個測試用例中讀取類型為所述第一類型信息對應的第一類型的測試用例;執(zhí)行與類型為所述第一類型信息對應的第一類型的測試用例。舉例來說,假設第一類型信息為:Rzone類型,則依次掃描表1中的每個測試用例,讀取標識信息為“Rzone類型”的測試用例,即測試用例3至測試用例6,然后執(zhí)行標識信息為“Rzone類型”的測試用例3至測試用例6。需要說明的是,上述執(zhí)行測試用例3至測試用例6的過程即為對Rzone類型功能單元:R1單元和R2單元進行測試的過程。步驟230,若所述功能單元的類型為多種,則重復執(zhí)行所述接收指令的步驟以及啟動功能單元的步驟;直至執(zhí)行完成與多種類型的功能單元對應的測試用例。舉例來說,假設被測的應用系統(tǒng)為核心系統(tǒng)應用(CIFapp),其分別部署在Gzone類型、Czone類型和Rzone類型的功能單元中,則首先根據(jù)步驟210和步驟220完成對一種類型的功能單元的測試,如,首先完成對Gzone類型的功能單元的測試,之后,因為上述核心系統(tǒng)應用部署在三種類型的功能單元中,所以重復步驟210和步驟220以完成對其余兩種類型的功能單元的測試。其中,對核心系統(tǒng)應用中每種類型的功能單元的測試可參見圖4、圖5和圖6所示。圖4為Gzone類型功能單元的測試示意圖,圖4中,服務接口測試(ServiceTest)單元向被測業(yè)務包發(fā)送查詢請求,該查詢請求中攜帶任一被測接口,被測業(yè)務包在接收到上述查詢請求之后,對上述任一被測接口進行測試,在被測接口測試過程中被測業(yè)務包向寫數(shù)據(jù)庫(WritingDataBase,wDB)中 寫入數(shù)據(jù),測試結束后向服務接口測試單元返回測試結果,服務接口測試單元將返回的結果與預期值進行比較,以判斷測試結果的正確性。圖5為Rzone類型功能單元的測試示意圖,圖6為Czone類型功能單元的測試示意圖,Rzone類型和Czone類型功能單元的測試過程與圖4中Gzone類型功能單元的測試過程類似,在此不作贅述。步驟240,收集對所述功能單元的測試結果并輸出。假設被測的應用系統(tǒng)為圖1中的應用系統(tǒng),則對每個功能單元測試完成后,其測試結果可參見表2所示的內容。表2根據(jù)表2的測試結果,測試人員即可方便對應用系統(tǒng)中存在的BUG進行追蹤。綜上,通過本申請的測試方法,可以實現(xiàn)如下幾個主要功能:1)測試只針對本功能單元內的被測接口(即服務);2)全面驗證調用鏈路在本功能單元的入口和出口,不考慮其他功能單元;3)分功能單元執(zhí)行測試,再將測試、覆蓋率結果聚合形成最終報告。綜上,本申請的應用系統(tǒng)的測試方法,在對應用系統(tǒng)進行測試時,每次只對與應用系統(tǒng)對應的一種類型的功能單元進行測試,即只對一種類型的功能單元包含的被測接口進行測試;當有多種類型的功能單元時,重復上述測試的過程。由此,可以提升測試的效率,進而可以節(jié)約計算機資源。雖然本申請實施例以對基于CRG架構進行單元化部署的應用系統(tǒng)進行測試為例進行說明,但并不限于此,本領域技術人員可以依照本申請的方法,對基于其它部署方案進行單元化部署的應用系統(tǒng)進行測試,其測試方法類似,在此不作贅述。與上述應用系統(tǒng)的測試方法對應地,本申請實施例還提供的一種應用系統(tǒng)的測試裝置,如圖7所示,該裝置包括:接收單元701、啟動單元702、執(zhí)行單元703和收集單元704。接收單元701,用于接收啟動所述應用系統(tǒng)的指令,所述指令攜帶與所述應用系統(tǒng)對應的功能單元的第一類型信息。其中,所述功能單元的類型包括以下類型中的一種或者多種:全局邏輯機房單元Gzone類型、城市邏輯機房單元Czone類型以及分區(qū)邏輯機房單元Rzone類型。啟動單元702,用于啟動與所述第一類型信息對應的第一功能單元,并執(zhí)行與所述第一功能單元對應的測試用例。啟動單元702具體用于:根據(jù)所述標識信息,從所述多個測試用例中讀取類型為所述第一類型信息對應的第一類型的測試用例;執(zhí)行與類型為所述第一類型信息對應的第一類型的測試用例。執(zhí)行單元703,用于若所述功能單元的類型為多種,則重復執(zhí)行接收單元701以及啟動單元702執(zhí)行的步驟;直至執(zhí)行完成與多種類型的功能單元對應的測試用例。收集單元704,用于收集對所述功能單元的測試結果并輸出??蛇x地,所述裝置還包括:讀取單元705和添加單元706;讀取單元705,用于讀取預設的多個測試用例;添加單元706,用于依次對讀取單元705讀取的所述多個測試用例中的每個測試用例添加標識信息,所述標識信息用于標識所述每個測試用例的類型??蛇x地,所述應用系統(tǒng)包括至少一個被測接口,所述至少一個被測接口包含在所述功能單元中;所述裝置還包括:確定單元707和獲取單元708;確定單元707,用于確定所述每個測試用例對應的第一被測接口;獲取單元708,用于根據(jù)確定單元707確定的所述第一被測接口所屬的功能單元的類型,獲得所述每個測試用例的類型。本申請實施例裝置的各功能模塊的功能,可以通過上述方法實施例的各步驟來實現(xiàn),因此,本申請?zhí)峁┑难b置的具體工作過程,在此不復贅述。綜上,本申請?zhí)峁┑膽孟到y(tǒng)的測試裝置,接收單元701接收啟動所述應用系統(tǒng)的指令,所述指令攜帶與所述應用系統(tǒng)對應的功能單元的第一類型信息;啟動單元702啟動與所述第一類型信息對應的第一功能單元,并執(zhí)行與所述第一功能單元對應的測試用例;執(zhí)行單元703若所述功能單元的類型為多種,則重復執(zhí)行接收單元701以及啟動單元702執(zhí)行的步驟;直至執(zhí)行完成與多種類型的功能單元對應的測試用例;收集單元704收集對所述功能單元的測試結果并輸出。由此,可以提升測試的效率,進而可以節(jié)約計算機資源。本申請的應用系統(tǒng)的測試裝置最終可以封裝為一個jar包(也可以稱為插件),在其它被測應用系統(tǒng)中引用該jar包后,在運行自動化測試腳本時,就可以對其它被測應用系統(tǒng)進行測試了,其中,其它被測應用系統(tǒng)可以為基于CRG架構進行單元化部署的系統(tǒng)。參見圖8所示的應用系統(tǒng)的測試裝置的部署示意圖,圖8中,在對其它被測應用系統(tǒng)進行測試時,首先安裝上述封裝的jar包,安裝后的jar包分 別部署在主節(jié)點(Master)、Gzone類型的功能單元、Czone類型的功能單元以及Rzone類型的功能單元,其中,主節(jié)點負責觸發(fā)測試任務,觸發(fā)測試任務之后,可以首先啟動Gzone類型的功能單元,并執(zhí)行與Gzone類型的功能單元對應的測試用例,以對Gzone類型的功能單元進行測試;之后再依次對Czone類型的功能單元以及Rzone類型的功能單元進行測試。當然,在實際應用中,也可以按照其他的順序對Gzone類型的功能單元、Czone類型的功能單元以及Rzone類型的功能單元進行測試,本申請對此不作限定。專業(yè)人員應該還可以進一步意識到,結合本文中所公開的實施例描述的各示例的對象及算法步驟,能夠以電子硬件、計算機軟件或者二者的結合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術方案的特定應用和設計約束條件。專業(yè)技術人員可以對每個特定的應用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應認為超出本申請的范圍。結合本文中所公開的實施例描述的方法或算法的步驟可以用硬件、處理器執(zhí)行的軟件模塊,或者二者的結合來實施。軟件模塊可以置于隨機存儲器(RAM)、內存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或
技術領域:
內所公知的任意其它形式的存儲介質中。以上所述的具體實施方式,對本申請的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本申請的具體實施方式而已,并不用于限定本申請的保護范圍,凡在本申請的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本申請的保護范圍之內。當前第1頁1 2 3