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