一種測試方法及系統的制作方法
【技術領域】
[0001]本申請涉及通信技術領域,特別涉及一種測試方法。本申請同時還涉及一種被測試系統。
【背景技術】
[0002]隨著人們網上活動的日益多樣化,大型分布式架構系統成為運營商所不可或缺的工具。在大型分布式架構系統中,存在著大量的系統依賴關系,如網站交易系統需要同時依賴會員系統、賬務系統等。通常在進行此類系統的自動化測試時,需要搭建一個完整的測試環境。目前,自動化測試過程通常使用以下方法對服務依賴關系進行簡化處理:
[0003](一 )搭建一個通用的服務,用來模擬被測試系統對外圍系統的依賴關系,一般稱為Mock服務。
[0004](二)針對自動化測試的數據,在Mock服務中添加特定的返回值,用于模擬被測試系統遠程調用依賴服務的結果。
[0005](三)將被測試系統的依賴關系指向Mock服務。
[0006](四)對被測試系統使用特定的測試數據進行自動化或手工測試。
[0007]在實現本申請的過程中,發明人發現以上現有的測試系統存在著如下的缺點:
[0008]1、服務模擬系統與自動化測試用例需要采用一致的數據,需要人工進行維護;
[0009]2、服務模擬系統雖然解決了被測試系統的外部依賴問題,但是又引入了模擬系統本身的依賴;
[0010]3、服務模擬系統需要人工輸入所有數據;
[0011]由此可見,隨著系統依賴復雜度的提高,對某個被測試系統進行測試需要更多的服務器成本與人力成本,因此如何在測試過程中使被測試系統擺脫對其外圍系統的數據依賴,有效地提高被測試系統的測試效率,成為本領域技術人員亟待解決的技術問題。
【發明內容】
[0012]本申請提供了一種測試方法,用以解決現有的測試過程中被測試系統對外圍系統的依賴性,避免了由該依賴性所帶來的不可靠因素。該方法應用于包括被測試系統以及外圍系統的分布式架構中,包括:
[0013]當所述被測試系統當前處于回放模式時,根據所述被測試系統所請求的參數,在已存儲的記錄數據中進行匹配及查找,所述已記錄數據是根據所述被測試系統在錄制模式下與所述外圍系統之間的交互數據生成;
[0014]將與所述參數對應的數據返回至所述被測試系統,以使所述被測試系統進行測試。
[0015]相應地,本申請還提出了一種被測試系統,應用于包括所述被測試系統以及外圍系統的分布式架構中,所述被測試系統包括被測設備以及代理模塊,所述代理模塊包括:
[0016]匹配子模塊,用于當所述被測試系統當前處于回放模式時,根據所述被測試系統所請求的參數,在已存儲的記錄數據中進行匹配及查找,所述已記錄數據是根據所述被測試系統在錄制模式下與所述外圍系統之間的交互數據生成;
[0017]接口子模塊,用于將與所述參數對應的數據返回至所述被測試系統,以使所述被測試系統進行測試。
[0018]由此可見,通過應用本申請的技術方案,根據被測試系統在錄制模式下述外圍系統之間的交互數據生成已記錄數據,當被測試系統當前處于回放模式時,根據該被測試系統所請求的參數在已存儲的記錄數據中進行匹配及查找,將與所述參數對應的數據返回至所述被測試系統,從而實現了模擬被測試系統對外圍系統的數據的調用,簡化測試過程中各系統之間的依賴關系,進一步提高了測試的效率。
【附圖說明】
[0019]圖1為本申請提出的一種測試方法的流程示意圖;
[0020]圖2為本申請具體實施例所提出的一種測試方法的示意圖;
[0021]圖3為本申請提出的一種被測試系統的結構示意圖。
【具體實施方式】
[0022]如【背景技術】所述,由于外圍系統的測試數據獲取原因,現有技術中的被測試系統無法獨立地自發進行測試。本申請通過錄制系統觸發事件與外圍依賴系統調用數據,從而能夠模擬被測試系統對依賴服務的調用,簡化系統之間的依賴關系,并能夠直接生成自動化測試用例,進行自動化回歸測試。
[0023]如圖1所示,本申請實施例提供了一種測試方法,所述方法應用于包括被測試系統以及外圍系統的分布式架構中,該方法包括以下步驟:
[0024]步驟101、當所述被測試系統當前處于回放模式時,根據所述被測試系統所請求的參數,在已存儲的記錄數據中進行匹配及查找,所述已記錄數據是根據所述被測試系統在錄制模式下與所述外圍系統之間的交互數據生成。
[0025]具體的,當所述被測試系統處于錄制模式下時,獲取所述被測試系統發送至所述外圍系統的請求數據,以及所述外圍系統根據所述請求數據向所述被測試系統返回的響應數據;并在獲取到了請求數據和響應數據之后,將所述請求數據以及所述響應數據作為所述被測試系統在錄制模式下與所述外圍系統之間的交互數據,生成所述記錄數據并進行存儲。
[0026]步驟102、將與所述參數對應的數據返回至所述被測試系統,以使所述被測試系統進行測試。
[0027]為了實現被測試系統的自動測試,在將與所述參數對應的數據返回至所述被測試系統之后,該方法還可以獲取并記錄對所述被測試系統在所述錄制模式下進行測試時輸入的原始數據;根據所述原始數據以及所述交互數據生成自動化測試用例。
[0028]這樣,在根據所述原始數據以及所述交互數據生成自動化測試用例之后,本步驟還將所述被測試系統設定處于所述回放模式之下,指示所述被測試系統執行所述自動化測試用例,以使所述被測試系統根據所述自動化測試用例中的原始數據以及交互數據自動進行測試。
[0029]需要指出的是,在以上步驟實施過程中,原始數據應至少包括http請求數據與返回數據、webservice服務調用參數與返回數據,在此基礎上本領域技術人員可以采用更多的其他類型數據作為原始數據,這些都在本申請的保護范圍之內。
[0030]為了進一步闡述本申請的技術思想,現結合如圖2所示的具體結構示意圖,對本申請的技術方案進行說明,本申請在被測試系統中嵌入了一個代理模塊,其功能及流程如下:
[0031]1.代理攔截;
[0032]代理模塊有兩個主要功能:
[0033](I)錄制功能,用來錄制所依賴系統的交互數據,及測試過程中的請求和返回參數坐寸ο
[0034](2)回放功能,用來將錄制的數據直接返回給被測試系統,從而可以模擬依賴服務調用。
[0035]在本裝置中設置了兩個代理模塊:proxyA和proxyB ;
[0036]proxyA:主要用來攔截測試人員對系統進行測試時的原始數據,例如:http請求數據與返回數據,webservice服務調用參數與返回數據
[0037]proxyB:主要用來攔截被測試系統與外圍系統的交互數據,在進行回放的時候proxyB會根據具體請求參數從已經錄制的數據中進行匹配查找,找出最符合的數據直接返回給被測試系統。例如:在錄制模式下,proxyB會錄制webservice服務調用的參數與返回值;在回放模式下,proxyB通過請求參數計算出對應的返回值返回給被測試系統。
[0038]在Java語言中,代理模塊可以使用aspectj等基于AOP的工具實現。但本裝置不局限于特定開發語言。
[0039]2.數據存儲;
[0040]數據存儲模塊主要用于存儲錄制獲得的數據。被測試系統首先需要在正常依賴情況下進行人工或自動化測試,此時將代理設置為錄制模式;代理攔截到的所有數據會以一定格式存儲到文件中。在后面進行回放時,代理能夠從文件中加載數據。
[0041]3.用例生成;
[0042]proxyA在錄制請求數據時會錄制下請求參數與返回內容,將這些數據進行轉換可以生成自動化測試用例。這些測試用例回歸了首次的手工或自動化測試。
[0043]4.自動化回歸;
[0044]將代理模塊設