本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,具體而言,涉及一種測試方法及裝置。
背景技術(shù):
目前,對于市面上的手機游戲和個人計算機(PC)游戲而言,大部分客戶端是通過Python語言進行編寫的。Rpyc是一個Python的庫,用于實現(xiàn)遠程過程調(diào)用協(xié)議(Remote Procedure Call Protocol,簡稱為RPC)和分布式計算的工具。
在測試游戲過程中,利用rpyc調(diào)用客戶端接口進行測試已經(jīng)逐步測試人員所推崇的測試方案,使用此種測試方式不僅可以便于獲取游戲運行時所需要使用的數(shù)據(jù)、接口和對象,而且還可以執(zhí)行代碼級的白盒測試與游戲自動化測試。
相關(guān)技術(shù)中所提供的測試方案通??梢苑譃橐韵聝煞N:
圖1是根據(jù)相關(guān)技術(shù)的調(diào)用客戶端接口進行測試過程的示意圖,如圖1所示,首先由客戶端創(chuàng)建rpyc server,監(jiān)聽指定端口,再由測試工具與客戶端上的rpyc server建立連接,通過該連接調(diào)用客戶端的接口完成測試。
圖2是根據(jù)相關(guān)技術(shù)的調(diào)用服務(wù)端接口進行測試過程的示意圖,如圖2所示,首先由服務(wù)端創(chuàng)建rpyc server,監(jiān)聽指定端口,再由測試工具與服務(wù)端上的rpyc server建立連接,通過該連接調(diào)用服務(wù)端的接口完成測試。
然而,上述基于rpyc的測試方案存在以下缺陷:
(1)上述測試方案只能連接客戶端或者連接服務(wù)端,而無法通過客戶端與服務(wù)端之間相互調(diào)用、相互協(xié)作來完成測試工作。
(2)上述測試方案只能針對一個客戶端或者一個服務(wù)端建立連接并執(zhí)行相關(guān)操作,而無法同時對多個客戶端進行相關(guān)操作。
針對上述的問題,目前尚未提出有效的解決方案。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種測試方法及裝置,以至少解決相關(guān)技術(shù)中所提供的測試方式僅能針對單獨的第一被測單元或單獨的第二被測單元進行測試,而無法實現(xiàn)第一被測單元與第二被測單元相互協(xié)作完成測試的技術(shù)問題。
根據(jù)本發(fā)明實施例的一個方面,提供了一種測試方法,包括:
測試單元分別對第一被測單元以及與第一被測單元關(guān)聯(lián)的第二被測單元執(zhí)行測試環(huán)境初始化操作;測試單元向第一被測單元發(fā)送第一待執(zhí)行測試信息,并接收第一被測單元返回的第一測試結(jié)果;測試單元經(jīng)由第一被測單元向第二被測單元發(fā)送第二待執(zhí)行測試信息,并經(jīng)由第一被測單元接收第二被測單元返回的第二測試結(jié)果。
可選地,第一被測單元為客戶端,第二被測單元為服務(wù)器端,客戶端為N個,服務(wù)器端為M個,其中,N和M均為大于或等于1的整數(shù),一個客戶端與對應(yīng)的一個服務(wù)器端相關(guān)聯(lián),或者,多個客戶端與對應(yīng)的一個服務(wù)器端相關(guān)聯(lián),測試單元經(jīng)由多個客戶端中的部分或全部客戶端向?qū)?yīng)的服務(wù)器端發(fā)送第二待執(zhí)行測試信息,并經(jīng)由部分或全部客戶端接收對應(yīng)的服務(wù)器端返回的第二測試結(jié)果。
可選地,第一被測單元為服務(wù)器端,第二被測單元為客戶端,服務(wù)器端為N個,客戶端為M個,其中,N和M均為大于或等于1的整數(shù),一個服務(wù)器端與對應(yīng)的一個或多個的客戶端相關(guān)聯(lián)。
可選地,測試單元對第一被測單元執(zhí)行測試環(huán)境初始化操作包括:在第一被測單元創(chuàng)建并開啟支持遠程過程調(diào)用協(xié)議的第一服務(wù)之后,測試單元創(chuàng)建支持遠程過程調(diào)用協(xié)議的第二服務(wù),并通過對指定端口進行監(jiān)聽查找到第一被測單元;測試單元向第一被測單元發(fā)送第一測試環(huán)境初始化信息,其中,第一測試環(huán)境初始化信息用于指示第一被測單元創(chuàng)建支持遠程過程調(diào)用協(xié)議的網(wǎng)絡(luò)連接以及創(chuàng)建第一功能函數(shù),第一功能函數(shù)用于接收來自于第二被測單元的數(shù)據(jù)并對接收到的數(shù)據(jù)進行轉(zhuǎn)發(fā)。
可選地,測試單元對第二被測單元執(zhí)行測試環(huán)境初始化操作包括:第二被測單元創(chuàng)建第二功能函數(shù),其中,第二功能函數(shù)是供第一被測單元調(diào)用的,以使第一被測單元向第二被測單元發(fā)送可供第二被測單元執(zhí)行的數(shù)據(jù);測試單元向第一被測單元發(fā)送第二測試環(huán)境初始化信息并觸發(fā)第一被測單元調(diào)用第二功能函數(shù)將第二測試環(huán)境初始化信息發(fā)送至第二被測單元,其中,第二測試環(huán)境初始化信息用于指示第二被測單元創(chuàng)建第三功能函數(shù),第三功能函數(shù)用于接收第一被測單元發(fā)送的可供第二被測單元執(zhí)行的數(shù)據(jù)以及將執(zhí)行結(jié)果返回至第一被測單元。
可選地,測試單元經(jīng)由第一被測單元向第二被測單元發(fā)送第二待執(zhí)行測試信息包括:測試單元通過網(wǎng)絡(luò)連接向第一被測單元發(fā)送第二待執(zhí)行測試信息,其中,第二待執(zhí)行測試信息包括:待執(zhí)行的測試代碼段和數(shù)據(jù)標(biāo)識,數(shù)據(jù)標(biāo)識用于確定待執(zhí)行的測試代碼段對應(yīng)的測試結(jié)果的返回順序;測試單元觸發(fā)第一被測單元調(diào)用第三功能函數(shù)將第二待執(zhí)行測試信息發(fā)送至第二被測單元。
可選地,測試單元經(jīng)由第一被測單元接收第二被測單元返回的第二測試結(jié)果包括:測試單元通過網(wǎng)絡(luò)連接接收第一被測單元返回的第二測試結(jié)果,其中,第二測試結(jié)果是在第二被測單元將第二待執(zhí)行測試信息執(zhí)行完畢后,通過調(diào)用第三功能函數(shù)將該第二測試結(jié)果返回至第一被測單元,再由第一被測單元調(diào)用第一功能函數(shù)進行轉(zhuǎn)發(fā)后得到的。
可選地,上述方法應(yīng)用于游戲測試,第一被測單元是游戲客戶端,第二被測單元是游戲服務(wù)器,測試單元與第一被測單元在同一個終端上。
根據(jù)本發(fā)明實施例的另一方面,還提供了一種測試裝置,包括:
初始化模塊,用于分別對第一被測單元以及與第一被測單元關(guān)聯(lián)的第二被測單元執(zhí)行測試環(huán)境初始化操作;測試模塊,用于向第一被測單元發(fā)送第一待執(zhí)行測試信息,并接收第一被測單元返回的第一測試結(jié)果;測試模塊,還用于經(jīng)由第一被測單元向第二被測單元發(fā)送第二待執(zhí)行測試信息,并經(jīng)由第一被測單元接收第二被測單元返回的第二測試結(jié)果。
可選地,第一被測單元為客戶端,第二被測單元為服務(wù)器端,客戶端為N個,服務(wù)器端為M個,其中,N和M均為大于或等于1的整數(shù),一個客戶端與對應(yīng)的一個服務(wù)器端相關(guān)聯(lián),或者,多個客戶端與對應(yīng)的一個服務(wù)器端相關(guān)聯(lián),測試單元經(jīng)由多個客戶端中的部分或全部客戶端向?qū)?yīng)的服務(wù)器端發(fā)送第二待執(zhí)行測試信息,并經(jīng)由部分或全部客戶端接收對應(yīng)的服務(wù)器端返回的第二測試結(jié)果。
可選地,第一被測單元為服務(wù)器端,第二被測單元為客戶端,服務(wù)器端為N個,客戶端為M個,其中,N和M均為大于或等于1的整數(shù),一個服務(wù)器端與對應(yīng)的一個或多個的客戶端相關(guān)聯(lián)。
可選地,初始化模塊包括:第一處理單元,用于在所述第一被測單元創(chuàng)建并開啟支持遠程過程調(diào)用協(xié)議的第一服務(wù)之后,所述測試單元創(chuàng)建支持遠程過程調(diào)用協(xié)議的第二服務(wù),并通過對指定端口進行監(jiān)聽查找到所述第一被測單元;第一發(fā)送單元,用于向第一被測單元發(fā)送第一測試環(huán)境初始化信息,其中,第一測試環(huán)境初始化信息用于指示第一被測單元創(chuàng)建支持遠程過程調(diào)用協(xié)議的網(wǎng)絡(luò)連接以及創(chuàng)建第一功能函數(shù),第一功能函數(shù)用于接收來自于第二被測單元的數(shù)據(jù)并對接收到的數(shù)據(jù)進行轉(zhuǎn)發(fā)。
可選地,初始化模塊包括:第二處理單元,用于在第二被測單元創(chuàng)建第二功能函數(shù)之后,向第一被測單元發(fā)送第二測試環(huán)境初始化信息并觸發(fā)第一被測單元調(diào)用第二功能函數(shù)將第二測試環(huán)境初始化信息發(fā)送至第二被測單元,其中,第二功能函數(shù)是供第一被測單元調(diào)用的,以使第一被測單元向第二被測單元發(fā)送可供第二被測單元執(zhí)行的數(shù)據(jù),第二測試環(huán)境初始化信息用于指示第二被測單元創(chuàng)建第三功能函數(shù),第三功能函數(shù)用于接收第一被測單元發(fā)送的可供第二被測單元執(zhí)行的數(shù)據(jù)以及將執(zhí)行結(jié)果返回至第一被測單元。
可選地,測試模塊包括:第二發(fā)送單元,用于通過網(wǎng)絡(luò)連接向第一被測單元發(fā)送第二待執(zhí)行測試信息,其中,第二待執(zhí)行測試信息包括:待執(zhí)行的測試代碼段和數(shù)據(jù)標(biāo)識,數(shù)據(jù)標(biāo)識用于確定待執(zhí)行的測試代碼段對應(yīng)的測試結(jié)果的返回順序;觸發(fā)單元,用于觸發(fā)第一被測單元調(diào)用第三功能函數(shù)將第二待執(zhí)行測試信息發(fā)送至第二被測單元。
可選地,測試模塊包括:接收單元,用于通過網(wǎng)絡(luò)連接接收第一被測單元返回的第二測試結(jié)果,其中,第二測試結(jié)果是在第二被測單元將第二待執(zhí)行測試信息執(zhí)行完畢后,通過調(diào)用第三功能函數(shù)將該第二測試結(jié)果返回至第一被測單元,再由第一被測單元調(diào)用第一功能函數(shù)進行轉(zhuǎn)發(fā)后得到的。
可選地,上述裝置應(yīng)用于游戲測試,第一被測單元是游戲客戶端,第二被測單元是游戲服務(wù)器,測試單元與第一被測單元在同一個終端上。
在本發(fā)明實施例中,采用測試單元分別對第一被測單元以及與第一被測單元關(guān)聯(lián)的第二被測單元執(zhí)行測試環(huán)境初始化操作的方式,通過向第一被測單元發(fā)送第一待執(zhí)行測試信息,并接收第一被測單元返回的第一測試結(jié)果;以及經(jīng)由第一被測單元向第二被測單元發(fā)送第二待執(zhí)行測試信息,并經(jīng)由第一被測單元接收第二被測單元返回的第二測試結(jié)果,達到了第一被測單元與第二被測單元通過協(xié)同工作來完成應(yīng)用測試的目的,從而實現(xiàn)了提高測試效率、擴大測試范圍的技術(shù)效果,進而解決了相關(guān)技術(shù)中所提供的測試方式僅能針對單獨的第一被測單元或單獨的第二被測單元進行測試,而無法實現(xiàn)第一被測單元與第二被測單元相互協(xié)作完成測試的技術(shù)問題。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
圖1是根據(jù)相關(guān)技術(shù)的調(diào)用客戶端接口進行測試過程的示意圖;
圖2是根據(jù)相關(guān)技術(shù)的調(diào)用服務(wù)端接口進行測試過程的示意圖;
圖3是根據(jù)本發(fā)明實施例的測試方法的流程圖;
圖4是根據(jù)本發(fā)明優(yōu)選實施例的測試工具、客戶端以及服務(wù)端三者之間協(xié)同工作的數(shù)據(jù)交互示意圖;
圖5是根據(jù)本發(fā)明優(yōu)選實施例的測試工具、客戶端以及服務(wù)端三者之間協(xié)同工作過程的流程圖;
圖6是根據(jù)本發(fā)明優(yōu)選實施例的采用測試工具進行客戶端測試與服務(wù)器端測試過程的流程圖;
圖7是根據(jù)本發(fā)明實施例的測試裝置的結(jié)構(gòu)框圖。
具體實施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當(dāng)屬于本發(fā)明保護的范圍。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
根據(jù)本發(fā)明實施例,提供了一種測試方法的實施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機可執(zhí)行指令的計算機系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
圖3是根據(jù)本發(fā)明實施例的測試方法的流程圖,如圖3所示,該方法包括如下步驟:
步驟S32,測試單元分別對第一被測單元以及與第一被測單元關(guān)聯(lián)的第二被測單元執(zhí)行測試環(huán)境初始化操作;
步驟S34,測試單元向第一被測單元發(fā)送第一待執(zhí)行測試信息,并接收第一被測單元返回的第一測試結(jié)果;
步驟S36,測試單元經(jīng)由第一被測單元向第二被測單元發(fā)送第二待執(zhí)行測試信息,并經(jīng)由第一被測單元接收第二被測單元返回的第二測試結(jié)果。
通過上述步驟,可以采用測試單元分別對第一被測單元以及與第一被測單元關(guān)聯(lián)的第二被測單元執(zhí)行測試環(huán)境初始化操作的方式,通過向第一被測單元發(fā)送第一待執(zhí)行測試信息,并接收第一被測單元返回的第一測試結(jié)果;以及經(jīng)由第一被測單元向第二被測單元發(fā)送第二待執(zhí)行測試信息,并經(jīng)由第一被測單元接收第二被測單元返回的第二測試結(jié)果,達到了第一被測單元與第二被測單元通過協(xié)同工作來完成應(yīng)用測試的目的,從而實現(xiàn)了提高測試效率、擴大測試范圍的技術(shù)效果,進而解決了相關(guān)技術(shù)中所提供的測試方式僅能針對單獨的第一被測單元或單獨的第二被測單元進行測試,而無法實現(xiàn)第一被測單元與第二被測單元相互協(xié)作完成測試的技術(shù)問題。
需要說明的是,上述方法可以由個人計算機(PC)上配置的測試工具來完成。上述第一被測單元可以為一個或多個,且每個第一被測單元分別對應(yīng)一個第二被測單元。上述第一被測單元與測試工具可以位于同一臺物理機上,也可以分別位于不同的物理機上。同樣地,如果存在多個第二被測單元,則這些第二被測單元可以位于同一臺物理機上,也可以分別位于不同的物理機上。下文中將以第一被測單元為游戲客戶端為例以及第二被測單元為游戲服務(wù)端為例,對本發(fā)明實施例所提供的技術(shù)方案做進一步詳細地闡述,但其并不構(gòu)成對本發(fā)明的不當(dāng)限制。
在優(yōu)選實施過程中,上述第一被測單元可以為客戶端,上述第二被測單元可以為服務(wù)器端,與相關(guān)技術(shù)中所提供的測試工具僅能與單獨的客戶端相連接的網(wǎng)絡(luò)拓撲結(jié)構(gòu)不同,在該優(yōu)選實施例中,測試單元(即上述測試工具)可以先與N個客戶端連接,其中,N為大于或等于1的整數(shù),這N個客戶端既可以位于同一臺物理機上,也可以分別位于不同的物理機上;另外,測試工具與N個客戶端既可以位于同一臺物理機上,可以分別位于不同的物理機上。然后,N個客戶端還可以進一步與M個服務(wù)器端相連接,其中,M為大于或等于1的整數(shù)。具體地,既可以采用一個客戶端與一個服務(wù)器端存在一一映射的對應(yīng)關(guān)系,也可以采用多個客戶端與一個服務(wù)器端存在多對一的映射關(guān)系。由此,測試單元可以利用上述網(wǎng)絡(luò)拓撲結(jié)構(gòu)經(jīng)由多個客戶端中的部分或全部客戶端向?qū)?yīng)的服務(wù)器端發(fā)送待執(zhí)行測試信息,并經(jīng)由部分或全部客戶端接收對應(yīng)的服務(wù)器端返回的測試結(jié)果。
在優(yōu)選實施過程中,上述第一被測單元可以為服務(wù)器端,上述第二被測單元可以為客戶端,與相關(guān)技術(shù)中所提供的測試工具僅能與單獨的服務(wù)器端相連接的網(wǎng)絡(luò)拓撲結(jié)構(gòu)不同,在該優(yōu)選實施例中,測試單元(即上述測試工具)可以先與N個服務(wù)器端連接,其中,N為大于或等于1的整數(shù),這N個服務(wù)器端既可以位于同一臺物理機上,也可以分別位于不同的物理機上;另外,測試工具與N個服務(wù)器端既可以位于同一臺物理機上,可以分別位于不同的物理機上。然后,N個服務(wù)器端還可以進一步與M個客戶端相連接,其中,M為大于或等于1的整數(shù)。具體地,既可以采用一個服務(wù)器端與一個客戶端存在一一映射的對應(yīng)關(guān)系,也可以采用一個服務(wù)器端與多個客戶端存在一對多的映射關(guān)系。由此,測試單元可以利用上述網(wǎng)絡(luò)拓撲結(jié)構(gòu)經(jīng)由多個服務(wù)器端中的部分或全部服務(wù)器端向?qū)?yīng)的客戶端發(fā)送待執(zhí)行測試信息,并經(jīng)由部分或全部服務(wù)器端接收對應(yīng)的客戶端返回的測試結(jié)果。
可選地,在步驟S32中,測試單元對第一被測單元執(zhí)行測試環(huán)境初始化操作可以包括以下執(zhí)行步驟:
步驟S321,在第一被測單元創(chuàng)建并開啟支持遠程過程調(diào)用協(xié)議的第一服務(wù)之后,測試單元創(chuàng)建支持遠程過程調(diào)用協(xié)議的第二服務(wù),并通過對指定端口進行監(jiān)聽查找到第一被測單元;
步驟S322,測試單元向第一被測單元發(fā)送第一測試環(huán)境初始化信息,其中,第一測試環(huán)境初始化信息用于指示第一被測單元創(chuàng)建支持遠程過程調(diào)用協(xié)議的網(wǎng)絡(luò)連接以及創(chuàng)建第一功能函數(shù),第一功能函數(shù)用于接收來自于第二被測單元的數(shù)據(jù)并對接收到的數(shù)據(jù)進行轉(zhuǎn)發(fā)。
游戲客戶端在啟動過程中,會創(chuàng)建一個rpyc server(相當(dāng)于上述第二服務(wù)進程)來監(jiān)聽指定端口(默認(rèn)為18812,如果存在多個客戶端同時運行,則向后尋找可以使用的端口,例如:18813、18814)。
在PC上運行測試工具,該測試工具在啟動過程中會建立rpyc server(相當(dāng)于上述第一服務(wù)進程)來監(jiān)聽指定端口(默認(rèn)為28812,其與游戲客戶端所監(jiān)聽的端口號不同)。測試工具自動獲取當(dāng)前PC上所有已經(jīng)開啟rpyc server的游戲客戶端并與這些游戲客戶端建立連接。如果是手機、平板等移動設(shè)備,則可以通過提供設(shè)備標(biāo)識的方式來建立測試工具與移動設(shè)備上游戲客戶端之間的連接。
測試工具向游戲客戶端發(fā)送游戲客戶端測試環(huán)境初始化代碼(相當(dāng)于上述第一測試環(huán)境初始化信息)。游戲客戶端在執(zhí)行游戲客戶端測試環(huán)境初始化代碼后,可以創(chuàng)建游戲客戶端與測試工具之間的rpyc連接(相當(dāng)于上述網(wǎng)絡(luò)連接),并且還可以在游戲客戶端創(chuàng)建特定功能函數(shù)(相當(dāng)于上述第一功能函數(shù)),用于接收來自于游戲服務(wù)器的數(shù)據(jù),并將該數(shù)據(jù)通過已經(jīng)建立的rpyc連接發(fā)送至測試工具對應(yīng)的接收函數(shù),從而實現(xiàn)服務(wù)端數(shù)據(jù)通過客戶端中轉(zhuǎn)傳輸?shù)綔y試工具的功能。
可選地,在步驟S32中,測試單元對第二被測單元執(zhí)行測試環(huán)境初始化操作可以包括以下執(zhí)行步驟:
步驟S323,第二被測單元創(chuàng)建第二功能函數(shù),其中,第二功能函數(shù)是供第一被測單元調(diào)用的,以使第一被測單元向第二被測單元發(fā)送可供第二被測單元執(zhí)行的數(shù)據(jù);
步驟S324,測試單元向第一被測單元發(fā)送第二測試環(huán)境初始化信息并觸發(fā)第一被測單元調(diào)用第二功能函數(shù)將第二測試環(huán)境初始化信息發(fā)送至第二被測單元,其中,第二測試環(huán)境初始化信息用于指示第二被測單元創(chuàng)建第三功能函數(shù),第三功能函數(shù)用于接收第一被測單元發(fā)送的可供第二被測單元執(zhí)行的數(shù)據(jù)以及將執(zhí)行結(jié)果返回至第一被測單元。
游戲客戶端可以通過常規(guī)的游戲登錄方式連接服務(wù)端(例如:游戲服務(wù)器)。游戲服務(wù)器會提供一個特殊的RPC函數(shù)(相當(dāng)于上述第二功能函數(shù))供游戲客戶端調(diào)用,其功能在于:在游戲服務(wù)器執(zhí)行一段由游戲客戶端發(fā)送的代碼字符串。
測試工具調(diào)用上述由游戲服務(wù)器提供的RPC函數(shù)向游戲服務(wù)器發(fā)送服務(wù)端測試環(huán)境初始化代碼(相當(dāng)于上述第二測試環(huán)境初始化信息)。游戲服務(wù)器在執(zhí)行服務(wù)端測試環(huán)境初始化代碼后,可以為客戶端創(chuàng)建一個可調(diào)用RPC函數(shù)(相當(dāng)于上述第三功能函數(shù)),其參數(shù)是一個數(shù)據(jù)唯一標(biāo)識和一段代碼字符串。測試工具可以通過客戶端調(diào)用該接口發(fā)送一段代碼到服務(wù)端環(huán)境中執(zhí)行,其執(zhí)行結(jié)果會通過上述已經(jīng)建立的rpyc連接發(fā)送至測試工具對應(yīng)的接收函數(shù),從而實現(xiàn)服務(wù)端數(shù)據(jù)通過客戶端中轉(zhuǎn)傳輸?shù)綔y試工具。
通過上述步驟,可以實現(xiàn)先由測試工具發(fā)送代碼到客戶端,再由客戶端將該段代碼轉(zhuǎn)發(fā)至服務(wù)端,并在服務(wù)端執(zhí)行完畢后向客戶端返回執(zhí)行結(jié)果,最終由客戶端將執(zhí)行結(jié)果再進一步返回給測試工具,由此達到測試工具、客戶端以及服務(wù)端三者之間互聯(lián)互通的目的。
圖4是根據(jù)本發(fā)明優(yōu)選實施例的測試工具、客戶端以及服務(wù)端三者之間協(xié)同工作的數(shù)據(jù)交互示意圖,如圖4所示,通過測試工具不僅可以調(diào)用客戶端與服務(wù)端的接口和返回值,獲取客戶端、服務(wù)端在運行過程中所需要使用的數(shù)據(jù)以及可以在客戶端與服務(wù)端執(zhí)行自定義代碼;通過測試工具還可以同時控制多個客戶端和服務(wù)端執(zhí)行相關(guān)操作。由此解決了測試工具、客戶端以及服務(wù)端之間網(wǎng)絡(luò)連接和數(shù)據(jù)傳輸問題,進而可以在測試工具上運行測試代碼實現(xiàn)客戶端與服務(wù)端的協(xié)同工作來完成測試需求,同時通過單個測試工具便可同時對多個客戶端進行測試操作,由此極大地提高了測試效率。另外,通過客戶端完成測試工具與服務(wù)端之間的數(shù)據(jù)交互,可以有效地避免直接登錄與操作服務(wù)端所帶來的安全風(fēng)險。
圖5是根據(jù)本發(fā)明優(yōu)選實施例的測試工具、客戶端以及服務(wù)端三者之間協(xié)同工作過程的流程圖,如圖5所示,該過程可以包括以下處理步驟:
步驟S502:游戲客戶端1開始啟動,創(chuàng)建rpyc server,監(jiān)聽指定端口(默認(rèn)為18812,如果當(dāng)前存在多個客戶端同時運行或者該端口已經(jīng)被占用,則需要向后尋找可以使用的端口,例如:18813、18814)。
步驟S504:游戲客戶端1進行角色登錄操作,并與服務(wù)端建立連接。在通常情況下,游戲邏輯中會提供一個服務(wù)端函數(shù)gm_sqc供客戶端調(diào)用,其功能在于:允許游戲客戶端發(fā)送一段代碼段在服務(wù)端執(zhí)行。
步驟S506:游戲客戶端2開始啟動,創(chuàng)建rpyc server,監(jiān)聽指定端口。如果當(dāng)前端口被占用,則向后尋找可以使用的端口。
步驟S508:游戲客戶端2進行角色登錄操作,并與服務(wù)端建立連接。
步驟S510:在PC上開啟測試工具,該測試工具會創(chuàng)建rpyc server,監(jiān)聽指定端口(默認(rèn)端口號從28812開始,與游戲客戶端rpyc server監(jiān)聽的端口號不同)。
步驟S512:測試工具自動獲取當(dāng)前PC上已經(jīng)開啟rpyc server的游戲客戶端1并與游戲客戶端1建立連接。如果是手機、平板等移動設(shè)備,則可以通過提供設(shè)備標(biāo)識(例如:互聯(lián)網(wǎng)協(xié)議(IP)地址,端口)的方式來建立測試工具與移動設(shè)備上游戲客戶端之間的連接。
步驟S514-步驟S516:測試工具向游戲客戶端1發(fā)送游戲客戶端測試環(huán)境初始化代碼。游戲客戶端1在執(zhí)行游戲客戶端測試環(huán)境初始化代碼后,可以創(chuàng)建游戲客戶端1與測試工具之間的rpyc連接,并且還可以在游戲客戶端1創(chuàng)建特定功能函數(shù),用于接收來自于游戲服務(wù)端1的數(shù)據(jù),并將該數(shù)據(jù)通過已經(jīng)建立的rpyc連接發(fā)送至測試工具對應(yīng)的接收函數(shù),從而實現(xiàn)服務(wù)端數(shù)據(jù)通過客戶端中轉(zhuǎn)傳輸?shù)綔y試工具的功能。
步驟S518:測試工具與游戲客戶端1之間的rpyc連接調(diào)用上述游戲原生函數(shù)gm_sqc向游戲服務(wù)端1發(fā)送服務(wù)端測試環(huán)境初始化代碼。
步驟S520:游戲服務(wù)端1在執(zhí)行服務(wù)端測試環(huán)境初始化代碼后,可以為游戲客戶端1創(chuàng)建一個可調(diào)用RPC函數(shù),其參數(shù)是一個數(shù)據(jù)唯一標(biāo)識和一段代碼字符串。測試工具可以通過游戲客戶端1調(diào)用該接口發(fā)送一段代碼到服務(wù)端環(huán)境中執(zhí)行,其執(zhí)行結(jié)果會通過上述已經(jīng)建立的rpyc連接發(fā)送至測試工具對應(yīng)的接收函數(shù),從而實現(xiàn)服務(wù)端數(shù)據(jù)通過游戲客戶端1中轉(zhuǎn)傳輸?shù)綔y試工具。
步驟S522:在PC上開啟測試工具,該測試工具會創(chuàng)建rpyc server,監(jiān)聽指定端口(默認(rèn)端口號從28812開始,與游戲客戶端rpyc server監(jiān)聽的端口號不同)。
步驟S524:測試工具自動獲取當(dāng)前PC上已經(jīng)開啟rpyc server的游戲客戶端2并與這些游戲客戶端2建立連接。如果是手機、平板等移動設(shè)備,則可以通過提供設(shè)備標(biāo)識(例如:互聯(lián)網(wǎng)協(xié)議(IP)地址,端口)的方式來建立測試工具與移動設(shè)備上游戲客戶端之間的連接。
步驟S526-步驟S528:測試工具向游戲客戶端2發(fā)送游戲客戶端測試環(huán)境初始化代碼。游戲客戶端2在執(zhí)行游戲客戶端測試環(huán)境初始化代碼后,可以創(chuàng)建游戲客戶端2與測試工具之間的rpyc連接,并且還可以在游戲客戶端2創(chuàng)建特定功能函數(shù),用于接收來自于游戲服務(wù)端2的數(shù)據(jù),并將該數(shù)據(jù)通過已經(jīng)建立的rpyc連接發(fā)送至測試工具對應(yīng)的接收函數(shù),從而實現(xiàn)服務(wù)端數(shù)據(jù)通過客戶端中轉(zhuǎn)傳輸?shù)綔y試工具的功能。
步驟S530:測試工具與游戲客戶端2之間的rpyc連接調(diào)用上述游戲原生函數(shù)gm_sqc向游戲服務(wù)端2發(fā)送服務(wù)端測試環(huán)境初始化代碼。
步驟S532:游戲服務(wù)端2在執(zhí)行服務(wù)端測試環(huán)境初始化代碼后,可以為游戲客戶端2創(chuàng)建一個可調(diào)用RPC函數(shù),其參數(shù)是一個數(shù)據(jù)唯一標(biāo)識和一段代碼字符串。測試工具可以通過游戲客戶端2調(diào)用該接口發(fā)送一段代碼到服務(wù)端環(huán)境中執(zhí)行,其執(zhí)行結(jié)果會通過上述已經(jīng)建立的rpyc連接發(fā)送至測試工具對應(yīng)的接收函數(shù),從而實現(xiàn)服務(wù)端數(shù)據(jù)通過游戲客戶端2中轉(zhuǎn)傳輸?shù)綔y試工具。
可選地,在步驟S36中,測試單元經(jīng)由第一被測單元向第二被測單元發(fā)送第二待執(zhí)行測試信息可以包括以下執(zhí)行步驟:
步驟S361,測試單元通過網(wǎng)絡(luò)連接向第一被測單元發(fā)送第二待執(zhí)行測試信息,其中,第二待執(zhí)行測試信息包括:待執(zhí)行的測試代碼段和數(shù)據(jù)標(biāo)識,數(shù)據(jù)標(biāo)識用于確定待執(zhí)行的測試代碼段對應(yīng)的測試結(jié)果的返回順序;
步驟S362,測試單元觸發(fā)第一被測單元調(diào)用第三功能函數(shù)將第二待執(zhí)行測試信息發(fā)送至第二被測單元。
測試工具可以通過與游戲客戶端之間的rpyc連接來調(diào)用上述新創(chuàng)建的RPC函數(shù),從而完成測試工具向服務(wù)端發(fā)送代碼并接收服務(wù)端返回的執(zhí)行結(jié)果的交互過程。上述函數(shù)中參數(shù)采用數(shù)據(jù)唯一標(biāo)識的原因在于:考慮到代碼執(zhí)行為異步過程,通過該唯一標(biāo)識可以確保連續(xù)地調(diào)用會獲取到對應(yīng)的執(zhí)行結(jié)果,即確保在多段測試代碼同時執(zhí)行時,能夠準(zhǔn)確、有序地返回執(zhí)行結(jié)果。
可選地,在步驟S36中,測試單元經(jīng)由第一被測單元接收第二被測單元返回的第二測試結(jié)果可以包括以下執(zhí)行步驟:
步驟S363,測試單元通過網(wǎng)絡(luò)連接接收第一被測單元返回的第二測試結(jié)果,其中,第二測試結(jié)果是在第二被測單元將第二待執(zhí)行測試信息執(zhí)行完畢后,通過調(diào)用第三功能函數(shù)將該第二測試結(jié)果返回至第一被測單元,再由第一被測單元調(diào)用第一功能函數(shù)進行轉(zhuǎn)發(fā)后得到的。
圖6是根據(jù)本發(fā)明優(yōu)選實施例的采用測試工具進行客戶端測試與服務(wù)器端測試過程的流程圖,如圖6所示,該流程可以包括以下處理步驟:
步驟S602:測試工具向游戲客戶端1發(fā)送測試代碼。
步驟S604:游戲客戶端1執(zhí)行從測試工具獲取到的測試代碼。
步驟S606:游戲客戶端1向測試工具返回測試結(jié)果。
步驟S608:測試工具經(jīng)由游戲客戶端2向該游戲客戶端2的角色所在的游戲服務(wù)端2發(fā)送測試代碼T1,同時還需要發(fā)送唯一的數(shù)據(jù)標(biāo)識NET_DATA_KEY_1。
步驟S610:游戲客戶端2將測試代碼T1和數(shù)據(jù)標(biāo)識NET_DATA_KEY_1轉(zhuǎn)發(fā)給游戲服務(wù)端2。
步驟S612:游戲服務(wù)端2開始執(zhí)行測試代碼T1。
步驟S614:測試工具經(jīng)由游戲客戶端1向該游戲客戶端1的角色所在的游戲服務(wù)端1發(fā)送測試代碼T2,同時還需要發(fā)送唯一的數(shù)據(jù)標(biāo)識NET_DATA_KEY_2。
步驟S616:游戲客戶端1將測試代碼T2和數(shù)據(jù)標(biāo)識NET_DATA_KEY_2轉(zhuǎn)發(fā)給游戲服務(wù)端1。
步驟S618:游戲服務(wù)端1執(zhí)行測試代碼T2。
步驟S620:在測試代碼T2執(zhí)行完畢后,游戲服務(wù)端1將測試結(jié)果返回給游戲客戶端1。
步驟S622:游戲客戶端1將測試代碼T2的測試結(jié)果返回給測試工具。
步驟S624:測試工具經(jīng)由游戲客戶端2向該游戲客戶端2的角色所在的游戲服務(wù)端2發(fā)送測試代碼T3,同時還需要發(fā)送唯一的數(shù)據(jù)標(biāo)識NET_DATA_KEY_3。
步驟S626:游戲客戶端2將測試代碼T3和數(shù)據(jù)標(biāo)識NET_DATA_KEY_3轉(zhuǎn)發(fā)給服務(wù)端2。
步驟S628:游戲服務(wù)端2執(zhí)行測試代碼T3。
步驟S630:在測試代碼T3執(zhí)行完畢后,游戲服務(wù)端2將測試結(jié)果返回給游戲客戶端2。
步驟S632:游戲客戶端2將測試代碼T3的測試結(jié)果返回給測試工具。
步驟S634:在上述已經(jīng)開始執(zhí)行的測試代碼T1執(zhí)行完畢后,游戲服務(wù)端2可以將測試結(jié)果返回給游戲客戶端2。
步驟S636:游戲客戶端2將測試代碼T1的測試結(jié)果返回給測試工具。
需要說明的是,在該優(yōu)選實施例中,并不需要限制測試代碼T1、T2以及T3的先后執(zhí)行次序。
根據(jù)本發(fā)明實施例,還提供了一種測試裝置的實施例,圖7是根據(jù)本發(fā)明實施例的測試裝置的結(jié)構(gòu)框圖,如圖7所示,該裝置包括:初始化模塊10,用于分別對第一被測單元以及與第一被測單元關(guān)聯(lián)的第二被測單元執(zhí)行測試環(huán)境初始化操作;測試模塊20,用于向第一被測單元發(fā)送第一待執(zhí)行測試信息,并接收第一被測單元返回的第一測試結(jié)果;測試模塊,還用于經(jīng)由第一被測單元向第二被測單元發(fā)送第二待執(zhí)行測試信息,并經(jīng)由第一被測單元接收第二被測單元返回的第二測試結(jié)果。
可選地,第一被測單元為客戶端,第二被測單元為服務(wù)器端,客戶端為N個,服務(wù)器端為M個,其中,N和M均為大于或等于1的整數(shù),一個客戶端與對應(yīng)的一個服務(wù)器端相關(guān)聯(lián),或者,多個客戶端與對應(yīng)的一個服務(wù)器端相關(guān)聯(lián),測試單元經(jīng)由多個客戶端中的部分或全部客戶端向?qū)?yīng)的服務(wù)器端發(fā)送第二待執(zhí)行測試信息,并經(jīng)由部分或全部客戶端接收對應(yīng)的服務(wù)器端返回的第二測試結(jié)果。
可選地,第一被測單元為服務(wù)器端,第二被測單元為客戶端,服務(wù)器端為N個,客戶端為M個,其中,N和M均為大于或等于1的整數(shù),一個服務(wù)器端與對應(yīng)的一個或多個的客戶端相關(guān)聯(lián)。
可選地,初始化模塊10可以包括:第一處理單元(圖中未示出),用于在所述第一被測單元創(chuàng)建并開啟支持遠程過程調(diào)用協(xié)議的第一服務(wù)之后,所述測試單元創(chuàng)建支持遠程過程調(diào)用協(xié)議的第二服務(wù),并通過對指定端口進行監(jiān)聽查找到所述第一被測單元;第一發(fā)送單元(圖中未示出),用于向第一被測單元發(fā)送第一測試環(huán)境初始化信息,其中,第一測試環(huán)境初始化信息用于指示第一被測單元創(chuàng)建支持遠程過程調(diào)用協(xié)議的網(wǎng)絡(luò)連接以及創(chuàng)建第一功能函數(shù),第一功能函數(shù)用于接收來自于第二被測單元的數(shù)據(jù)并對接收到的數(shù)據(jù)進行轉(zhuǎn)發(fā)。
可選地,初始化模塊10可以包括:第二處理單元(圖中未示出),用于在第二被測單元創(chuàng)建第二功能函數(shù)之后,向第一被測單元發(fā)送第二測試環(huán)境初始化信息并觸發(fā)第一被測單元調(diào)用第二功能函數(shù)將第二測試環(huán)境初始化信息發(fā)送至第二被測單元,其中,第二功能函數(shù)是供第一被測單元調(diào)用的,以使第一被測單元向第二被測單元發(fā)送可供第二被測單元執(zhí)行的數(shù)據(jù),第二測試環(huán)境初始化信息用于指示第二被測單元創(chuàng)建第三功能函數(shù),第三功能函數(shù)用于接收第一被測單元發(fā)送的可供第二被測單元執(zhí)行的數(shù)據(jù)以及將執(zhí)行結(jié)果返回至第一被測單元。
可選地,測試模塊20可以包括:第二發(fā)送單元(圖中未示出),用于通過網(wǎng)絡(luò)連接向第一被測單元發(fā)送第二待執(zhí)行測試信息,其中,第二待執(zhí)行測試信息包括:待執(zhí)行的測試代碼段和數(shù)據(jù)標(biāo)識,數(shù)據(jù)標(biāo)識用于確定待執(zhí)行的測試代碼段對應(yīng)的測試結(jié)果的返回順序;觸發(fā)單元(圖中未示出),用于觸發(fā)第一被測單元調(diào)用第三功能函數(shù)將第二待執(zhí)行測試信息發(fā)送至第二被測單元。
可選地,測試模塊20可以包括:接收單元(圖中未示出),用于通過網(wǎng)絡(luò)連接接收第一被測單元返回的第二測試結(jié)果,其中,第二測試結(jié)果是在第二被測單元將第二待執(zhí)行測試信息執(zhí)行完畢后,通過調(diào)用第三功能函數(shù)將該第二測試結(jié)果返回至第一被測單元,再由第一被測單元調(diào)用第一功能函數(shù)進行轉(zhuǎn)發(fā)后得到的。
可選地,上述裝置應(yīng)用于游戲測試,第一被測單元是游戲客戶端,第二被測單元是游戲服務(wù)器,測試單元與第一被測單元在同一個終端上。
上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
在本發(fā)明的上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關(guān)描述。
在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實現(xiàn)。其中,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可為個人計算機、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。