如圖4所示,是本發(fā)明實(shí)施例提供的一種測(cè)試用例文件的樹狀結(jié)構(gòu)圖。圖中的裝備培養(yǎng)測(cè)試用例文件包含有多個(gè)模塊,如裝備賜名模塊、裝備開光模塊、裝備重鑄模塊、裝備重?zé)捘K和測(cè)試模塊,每一個(gè)模塊下還可以連接多個(gè)節(jié)點(diǎn),為各種功能的測(cè)試用例文件。用戶可以對(duì)用例樹狀圖的節(jié)點(diǎn)進(jìn)行編輯和運(yùn)行操作(可以查看和執(zhí)行每一個(gè)模塊,同樣,也可以查看和執(zhí)行各個(gè)節(jié)點(diǎn)的測(cè)試用例),如可選擇裝備賜名模塊或者正常賜名用例,右鍵選擇編輯或者運(yùn)行操作;編輯操作可以顯示節(jié)點(diǎn)對(duì)應(yīng)的測(cè)試用例腳本,可以對(duì)腳本進(jìn)行在線編輯并保存到后臺(tái)數(shù)據(jù)庫(kù)中。由于附圖中無法表示顏色,圖4中采用了對(duì)測(cè)試節(jié)點(diǎn)的填充樣式、線條粗細(xì)來區(qū)分各個(gè)節(jié)點(diǎn)的顏色差別以表明該節(jié)點(diǎn)是否被自動(dòng)化覆蓋,在具體實(shí)施時(shí),用戶可以通過節(jié)點(diǎn)填充顏色和/或節(jié)點(diǎn)線條顏色來顯示其是否具有測(cè)試用例腳本。
[0093]如圖5所示,是本發(fā)明實(shí)施例提供的一個(gè)測(cè)試節(jié)點(diǎn)展開的測(cè)試用例腳本的示意圖。
[0094]運(yùn)行操作可執(zhí)行測(cè)試節(jié)點(diǎn)可展開其所對(duì)應(yīng)的測(cè)試用例腳本,從而一鍵啟動(dòng)自動(dòng)化測(cè)試。
[0095]步驟S102:所述前端客戶端通過選中所述樹狀圖的測(cè)試節(jié)點(diǎn)運(yùn)行對(duì)應(yīng)的測(cè)試用例腳本,向web測(cè)試平臺(tái)發(fā)送測(cè)試請(qǐng)求。
[0096]在測(cè)試用例管理和一鍵自動(dòng)化測(cè)試中都用到了 SVG樹狀圖,本發(fā)明實(shí)施例以一鍵自動(dòng)化測(cè)試的解析過程來說明其具體的實(shí)現(xiàn)細(xì)節(jié)。
[0097]步驟S103:所述web測(cè)試平臺(tái)對(duì)與所述測(cè)試請(qǐng)求相對(duì)應(yīng)的后臺(tái)測(cè)試用例進(jìn)行解析,產(chǎn)生測(cè)試任務(wù)發(fā)送給測(cè)試機(jī),并控制所述測(cè)試機(jī)執(zhí)行所述測(cè)試任務(wù)。
[0098]web測(cè)試平臺(tái)提供樹狀圖形式的一鍵自動(dòng)化測(cè)試。在測(cè)試請(qǐng)求發(fā)送與響應(yīng)過程中,用戶通過前端客戶端發(fā)出測(cè)試請(qǐng)求,平臺(tái)服務(wù)端響應(yīng)請(qǐng)求并將測(cè)試任務(wù)發(fā)送到測(cè)試機(jī)上執(zhí)行。具體實(shí)施時(shí),測(cè)試請(qǐng)求的響應(yīng)包括測(cè)試任務(wù)的生成、任務(wù)隊(duì)列管理和長(zhǎng)輪詢鏈接的建立。
[0099]步驟S104:所述web測(cè)試平臺(tái)獲取所述測(cè)試機(jī)返回的測(cè)試結(jié)果,并對(duì)所述測(cè)試結(jié)果進(jìn)行解析,生成測(cè)試報(bào)告反饋給所述前端客戶端。
[0100]如圖6所示,是本發(fā)明實(shí)施例提供的產(chǎn)生并執(zhí)行測(cè)試任務(wù)的一種實(shí)現(xiàn)方式的步驟流程圖。
[0101]在一種可實(shí)現(xiàn)的方式中,所述步驟S103,包括步驟S601?步驟S604:
[0102]步驟S601:所述web測(cè)試平臺(tái)對(duì)所述測(cè)試請(qǐng)求進(jìn)行分析,獲取所述測(cè)試請(qǐng)求所對(duì)應(yīng)的測(cè)試節(jié)點(diǎn)的路徑信息,并根據(jù)所述路徑信息查找到所述測(cè)試節(jié)點(diǎn)所對(duì)應(yīng)的測(cè)試用例。
[0103]步驟S602:所述web測(cè)試平臺(tái)根據(jù)所述測(cè)試用例獲取測(cè)試用例腳本,向非阻塞式web服務(wù)器發(fā)送測(cè)試初始數(shù)據(jù);所述非阻塞式web服務(wù)器根據(jù)所述測(cè)試初始數(shù)據(jù)生成測(cè)試任務(wù)并形成測(cè)試任務(wù)隊(duì)列;用戶將所要執(zhí)行測(cè)試節(jié)點(diǎn)的路徑信息傳給web服務(wù)端,服務(wù)端讀取通過該信息找到對(duì)應(yīng)的測(cè)試腳本生成測(cè)試任務(wù)。
[0104]步驟S603:所述非阻塞式web服務(wù)器通過RPC協(xié)議將每個(gè)測(cè)試任務(wù)調(diào)度至相應(yīng)的測(cè)試機(jī)。
[0105]步驟S604:所述測(cè)試機(jī)啟動(dòng)執(zhí)行接收到的測(cè)試任務(wù),實(shí)現(xiàn)腳本注入和數(shù)據(jù)收集。
[0106]優(yōu)選地,所述非阻塞式web服務(wù)器為Tornado Web服務(wù)器。Tornado Web服務(wù)器米用Python Tornado Web框架,用于測(cè)試任務(wù)的收集和調(diào)度、測(cè)試任務(wù)狀態(tài)的查詢和人工調(diào)整以及長(zhǎng)輪詢鏈接的建立和測(cè)試結(jié)果的實(shí)時(shí)推送。非阻塞式web服務(wù)器的數(shù)據(jù)處理速度相當(dāng)快,因而能獲得較佳的實(shí)時(shí)處理效果。
[0107]參看圖7,是本發(fā)明實(shí)施例提供的生成測(cè)試任務(wù)隊(duì)列的一種示意圖。
[0108]針對(duì)多個(gè)測(cè)試機(jī)(N臺(tái),N彡I),web測(cè)試平臺(tái)的任務(wù)調(diào)度服務(wù)端為每臺(tái)接入的測(cè)試機(jī)維護(hù)一個(gè)測(cè)試任務(wù)隊(duì)列(假設(shè)每個(gè)測(cè)試任務(wù)隊(duì)列中含有M個(gè)測(cè)試任務(wù),1),每臺(tái)測(cè)試機(jī)根據(jù)測(cè)試隊(duì)列依次執(zhí)行每個(gè)測(cè)試任務(wù)。進(jìn)一步地,所述web測(cè)試平臺(tái)對(duì)與所述測(cè)試請(qǐng)求相對(duì)應(yīng)的后臺(tái)測(cè)試用例進(jìn)行解析,產(chǎn)生測(cè)試任務(wù)發(fā)送給測(cè)試機(jī),并控制所述測(cè)試機(jī)執(zhí)行所述測(cè)試任務(wù),還包括:所述測(cè)試機(jī)經(jīng)由所述非阻塞式web服務(wù)器并通過任務(wù)列表與所述前端客戶端建立長(zhǎng)輪詢鏈接;當(dāng)有測(cè)試任務(wù)完成且生成測(cè)試結(jié)果時(shí),所述非阻塞式web服務(wù)器執(zhí)行回調(diào)函數(shù)實(shí)時(shí)向所述前端客戶端推送所述測(cè)試結(jié)果。即,web測(cè)試平臺(tái)在前端客戶端與測(cè)試機(jī)之間還為每個(gè)任務(wù)建立一個(gè)長(zhǎng)輪詢鏈接并綁定回調(diào)函數(shù),當(dāng)測(cè)試任務(wù)執(zhí)行完畢后會(huì)執(zhí)行回調(diào)函數(shù)對(duì)前端客戶端進(jìn)行數(shù)據(jù)更新。
[0109]在測(cè)試任務(wù)調(diào)度框架中,web測(cè)試平臺(tái)的服務(wù)端根據(jù)用戶的測(cè)試請(qǐng)求,向TornadoWeb服務(wù)器發(fā)送測(cè)試初始數(shù)據(jù),通過平臺(tái)中的任務(wù)調(diào)度服務(wù)端生成測(cè)試任務(wù)并放入任務(wù)隊(duì)列。優(yōu)選地,每臺(tái)所述測(cè)試機(jī)上分別部署有代理服務(wù)器(Agent)和測(cè)試客戶端(如,游戲客戶端);每個(gè)測(cè)試任務(wù)通過RPC(Remote Procedure Call,遠(yuǎn)程過程調(diào)用)協(xié)議對(duì)各臺(tái)測(cè)試機(jī)上部署的代理服務(wù)器進(jìn)行控制,各臺(tái)所述測(cè)試機(jī)上的代理服務(wù)器通過超文本傳輸協(xié)議(http協(xié)議)與相應(yīng)的測(cè)試客戶端通信連接。
[0110]則進(jìn)一步地,如圖8所示,本發(fā)明實(shí)施例提供了一種執(zhí)行測(cè)試任務(wù)的方法步驟流程圖。
[0111]在所述步驟S604中,所述測(cè)試機(jī)啟動(dòng)執(zhí)行接收到的測(cè)試任務(wù),實(shí)現(xiàn)腳本注入和數(shù)據(jù)收集,包括步驟S801?S804:
[0112]步驟S801:所述代理服務(wù)器通過超文本傳輸協(xié)議將所述測(cè)試用例腳本傳遞給測(cè)試客戶端,并對(duì)測(cè)試環(huán)境進(jìn)行部署;所述測(cè)試用例腳本包括測(cè)試指令、初始參數(shù)、預(yù)期結(jié)果和待測(cè)試功能模塊。
[0113]步驟S802:所述web測(cè)試平臺(tái)通過所述代理服務(wù)器啟動(dòng)或更新所述測(cè)試客戶端。
[0114]步驟S803:所述測(cè)試客戶端對(duì)測(cè)試所需參數(shù)進(jìn)行初始化,并通過執(zhí)行所述測(cè)試用例腳本啟動(dòng)相應(yīng)的客戶端接口腳本;所述客戶端接口腳本預(yù)先配置在所述測(cè)試客戶端中。
[0115]步驟S804:所述測(cè)試客戶端根據(jù)所述客戶端接口腳本執(zhí)行自動(dòng)化測(cè)試的邏輯,通過所述邏輯模擬用戶在所述測(cè)試客戶端上的操作。
[0116]本實(shí)施例采用數(shù)據(jù)驅(qū)動(dòng)模式,通過所述測(cè)試用例腳本調(diào)用所述測(cè)試客戶端的客戶端接口腳本,傳入測(cè)試參數(shù)從而啟動(dòng)自動(dòng)化測(cè)試。在自動(dòng)化測(cè)試框架中,測(cè)試任務(wù)被提交以后,就會(huì)交給web測(cè)試平臺(tái)的底層的自動(dòng)化測(cè)試框架來執(zhí)行。作為web測(cè)試平臺(tái)的核心部分,平臺(tái)底層的自動(dòng)化測(cè)試框架采用數(shù)據(jù)驅(qū)動(dòng)模式。該模式下所調(diào)用的腳本文件主要包括測(cè)試用例腳本和客戶端接口腳本。具體實(shí)施時(shí),所述測(cè)試用例腳本包括但不限于軟件操作指令、初始數(shù)據(jù)和預(yù)期結(jié)果。用于在所述測(cè)試客戶端中針對(duì)不同的數(shù)據(jù)定義統(tǒng)一的通用操作流程。其中,測(cè)試用例腳本作為數(shù)據(jù)驅(qū)動(dòng)的源頭設(shè)置于web服務(wù)器端(Tornado Web服務(wù)器)??蛻舳私涌谀_本定義了游戲中某一模塊或者功能的通用操作,針對(duì)不同的數(shù)據(jù)采用統(tǒng)一的操作流程,它位于測(cè)試機(jī)中測(cè)試客戶端的可加載目錄,通過程序等待遠(yuǎn)程調(diào)用。
[0117]具體實(shí)施時(shí),可視化自動(dòng)測(cè)試系統(tǒng)中在遠(yuǎn)端還部署有測(cè)試服務(wù)器;則在本實(shí)施例中的可視化自動(dòng)測(cè)試方法中,所述步驟S604中還包括步驟S805?S806:
[0118]步驟S805:通過所述客戶端接口腳本驅(qū)動(dòng)遠(yuǎn)端的測(cè)試服務(wù)器與所述測(cè)試客戶端的邏輯交互,并且設(shè)置與驗(yàn)證測(cè)試進(jìn)程中的測(cè)試點(diǎn);
[0119]步驟S806:所述測(cè)試客戶端在與測(cè)試服務(wù)器的邏輯交互中進(jìn)行事件同步檢驗(yàn),確保所述測(cè)試客戶端與所述測(cè)試服務(wù)器在測(cè)試進(jìn)程中的同步。
[0120]具體地,在游戲自動(dòng)化測(cè)試領(lǐng)域中,所述web測(cè)試平臺(tái)優(yōu)選為游戲測(cè)試平臺(tái),所述測(cè)試機(jī)為游戲測(cè)試機(jī)。相應(yīng)地,所述測(cè)試機(jī)中的測(cè)試客戶端優(yōu)選為游戲客戶端;所述測(cè)試服務(wù)器優(yōu)選為游戲服務(wù)器。
[0121]客戶端接口腳本通過調(diào)用游戲客戶端中的游戲服務(wù)器接口函數(shù),從而模擬游戲玩家的操作,并在關(guān)鍵進(jìn)程點(diǎn)上設(shè)置測(cè)試點(diǎn),通過讀取游戲?qū)崟r(shí)數(shù)據(jù)和預(yù)期值進(jìn)行對(duì)比,或者通過代理服務(wù)器回調(diào)游戲客戶端的函數(shù)獲得同步事件來判定測(cè)試點(diǎn)是否通過測(cè)試。
[0122]參看圖9,是本發(fā)明實(shí)施例提供的數(shù)據(jù)驅(qū)動(dòng)模式的自動(dòng)化測(cè)試過程示意圖。測(cè)試機(jī)中配置有代理服務(wù)器901、測(cè)試客戶端902,并且,可視化自動(dòng)測(cè)試系統(tǒng)中還包括遠(yuǎn)端的測(cè)試服務(wù)器。其中,代理服務(wù)器901從web測(cè)試平臺(tái)中接收測(cè)試用例腳本,并將測(cè)試用例腳本傳遞至測(cè)試客戶端902 ;測(cè)試客戶端902根據(jù)測(cè)試用例腳本驅(qū)動(dòng)其內(nèi)部預(yù)置的客戶端接口腳本,進(jìn)行初始化設(shè)定,設(shè)置一個(gè)或多個(gè)測(cè)試主流程以及一個(gè)或多個(gè)測(cè)試點(diǎn),在測(cè)試過程中與測(cè)試服務(wù)器進(jìn)行邏輯交互,模擬用戶的操作。具體實(shí)施時(shí),測(cè)試用例腳本通過XML-RPC服務(wù)器作為代理服務(wù)器向測(cè)試客戶端(優(yōu)選為游戲客戶端)傳遞測(cè)試用例腳本,從而在測(cè)試客戶端中通過啟動(dòng)客戶端接口腳本和進(jìn)行參數(shù)初始化從而啟動(dòng)自動(dòng)化測(cè)試。XML-RPC是使用http協(xié)議作為傳輸協(xié)議的RPC機(jī)制,使用xml文本的方式傳輸命令和數(shù)據(jù)。一個(gè)RPC系統(tǒng)必然包括兩個(gè)部分:客戶端和服務(wù)端。其中,客戶端用來向RPC服務(wù)器調(diào)用方法并接收方法的返回?cái)?shù)據(jù);服務(wù)端用于響應(yīng)客戶端的請(qǐng)求,執(zhí)行方法并回送方法執(zhí)行結(jié)果。
[0123]具體實(shí)施時(shí),每個(gè)測(cè)試任務(wù)通過RPC協(xié)議控制測(cè)試機(jī)上部署的代理服務(wù)器Agent,Agent負(fù)責(zé)控制測(cè)試客戶端(游戲客戶端)基本操作,如更新、開啟、關(guān)閉,及游戲客戶端的消息轉(zhuǎn)發(fā),實(shí)現(xiàn)腳本注入及數(shù)據(jù)收集等;同時(shí)前端客戶端通過任務(wù)列表與測(cè)試機(jī)建立長(zhǎng)輪詢鏈接,當(dāng)有任務(wù)完成且有數(shù)據(jù)更新時(shí)Tornado Web服務(wù)器向前端推送數(shù)據(jù),前端客戶端對(duì)測(cè)試結(jié)果數(shù)據(jù)進(jìn)行解析生成報(bào)告并在前端進(jìn)行實(shí)時(shí)展示。
[0124]在本實(shí)施例中,可以采用任務(wù)調(diào)度模塊用于測(cè)試任務(wù)的調(diào)度和人工管理。TornadoWeb服務(wù)器記錄每個(gè)接入的測(cè)試機(jī)的工作狀態(tài)(空閑或者執(zhí)行任務(wù)中),當(dāng)接到來自前端客戶端(web前端)發(fā)來的測(cè)試任務(wù)請(qǐng)時(shí),將測(cè)試任務(wù)放入任務(wù)數(shù)最小的測(cè)試任務(wù)隊(duì)列;是任務(wù)隊(duì)列是一個(gè)數(shù)據(jù)結(jié)構(gòu)的表示,可通過web端顯示,并由人工任意調(diào)整隊(duì)列中各個(gè)任務(wù)的順序。所有測(cè)試任務(wù)隊(duì)列都會(huì)周期性輪詢對(duì)應(yīng)的測(cè)試機(jī)的狀態(tài),若測(cè)試機(jī)空閑,則立刻將測(cè)試任務(wù)發(fā)送到測(cè)試機(jī)執(zhí)行。
[0125]在進(jìn)行游戲測(cè)試時(shí),代理服務(wù)器Agent用于實(shí)現(xiàn)對(duì)游戲客戶端的各項(xiàng)控制功能,通過測(cè)試機(jī)的操作系統(tǒng)的API接口,優(yōu)選為視窗操作系統(tǒng)應(yīng)用程序接口(Windows API)實(shí)現(xiàn)游戲客戶端的更新、啟動(dòng)與關(guān)閉等操作,通過測(cè)試版游戲客戶端預(yù)留通信端口向