国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      游戲自動化測試方法及相關(guān)裝置與流程

      文檔序號:11590182閱讀:314來源:國知局
      本發(fā)明涉及計算機(jī)應(yīng)用
      技術(shù)領(lǐng)域
      ,具體涉及游戲自動化測試方法及相關(guān)裝置。
      背景技術(shù)
      :目前市場上終端(例如pc機(jī)、智能終端)的種類非常之多,以安裝有安卓操作系統(tǒng)的智能手機(jī)為例,其機(jī)型多達(dá)上千款,由于不同機(jī)型使用的硬件和軟件都不一樣,所以游戲在開發(fā)過程中以及上市之前都需要在主流機(jī)型上進(jìn)行游戲兼容性測試,以驗(yàn)證其能否正常運(yùn)行。傳統(tǒng)的游戲自動化測試是基于錄制回放工具通過錄制坐標(biāo)序列然后回放來操作游戲,以達(dá)到自動化測試的目的。其做法是:錄制過程:記錄測試人員在智能終端上操作游戲的測試過程。具體的,由于人對游戲中ui控件的操作,實(shí)際是對顯示屏上的坐標(biāo)的操作,例如,點(diǎn)擊某個ui控件,其實(shí)是點(diǎn)擊了與該ui控件對應(yīng)的坐標(biāo)點(diǎn)。因此,錄制回放工具會記錄測試人員因觸摸智能終端屏幕而產(chǎn)生的各種begin、move和up輸入事件對應(yīng)的坐標(biāo)信息,生成錄制記錄?;胤胚^程:測試裝置遵循時間順序(也即輸入事件的發(fā)生順序)來依次按錄制記錄中的坐標(biāo)信息模擬人對被測智能終端的屏幕的操作。傳統(tǒng)的游戲自動化測試的缺點(diǎn)是明顯的:在現(xiàn)有自動化測試過程中,若出現(xiàn)異常情況,例如錄制過程中出現(xiàn)的界面在回放過程中并未出現(xiàn),則后續(xù)的操作將可能完全錯亂:假定在錄制過程中,彈出一個廣告界面,測試人員點(diǎn)擊關(guān)閉了該廣告界面,關(guān)閉廣告界面的相關(guān)輸入事件會被錄制下來(假定關(guān)閉廣告界面共對應(yīng)3個輸入事件,其操作序列號是10-12)。而在回放過程時,在執(zhí)行完操作序列號為9的輸入事件后,廣告界面并未彈出。盡管廣告界面未彈出,現(xiàn)有自動化測試方式還是會回放關(guān)閉廣告界面的相關(guān)輸入事件,從而導(dǎo)致操作錯亂,進(jìn)而可能影響后續(xù)的回放。因此,傳統(tǒng)的游戲自動化測試存在優(yōu)化空間。技術(shù)實(shí)現(xiàn)要素:有鑒于此,本發(fā)明實(shí)施例提供一種游戲自動化測試方法及相關(guān)裝置,以優(yōu)化游戲自動化測試。為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供如下技術(shù)方案:一種游戲自動化測試方法,包括:獲取錄制文件;所述錄制文件包括多條錄制記錄,每一條錄制記錄包括:第一操作事件、與所述第一操作事件相關(guān)聯(lián)的操作對象、場景信息和操作序列號;所述操作對象包括ui控件標(biāo)識;根據(jù)所述錄制文件,執(zhí)行至少一次回放操作;其中:所述回放操作包括:獲取測試終端的當(dāng)前游戲場景信息和當(dāng)前ui控件列表;所述當(dāng)前ui控件列表包括與所述測試終端的當(dāng)前游戲界面相關(guān)聯(lián)的所有ui控件標(biāo)識;根據(jù)所述當(dāng)前游戲場景信息、當(dāng)前ui控件列表以及上一次所采用的錄制記錄中的操作序列號,在所述錄制文件中查找匹配的錄制記錄作為目標(biāo)錄制記錄;在所述測試終端上回放所述目標(biāo)錄制記錄。一種游戲自動化測試裝置,包括:獲取模塊,用于獲取錄制文件;所述錄制文件包括多條錄制記錄,每一條錄制記錄包括:第一操作事件、與所述第一操作事件相關(guān)聯(lián)的操作對象、場景信息和操作序列號;所述操作對象包括ui控件標(biāo)識;回放模塊,用于根據(jù)所述錄制文件,執(zhí)行至少一次回放操作;其中:所述回放操作包括:獲取測試終端的當(dāng)前游戲場景信息和當(dāng)前ui控件列表;所述當(dāng)前ui控件列表包括與所述測試終端的當(dāng)前游戲界面相關(guān)聯(lián)的所有ui控件標(biāo)識;根據(jù)所述當(dāng)前游戲場景信息、當(dāng)前ui控件列表以及上一次所采用的錄制記錄中的操作序列號,在所述錄制文件中查找匹配的錄制記錄作為目標(biāo)錄制記錄;在所述測試終端上回放所述目標(biāo)錄制記錄??梢?,在本實(shí)施例中,是根據(jù)當(dāng)前游戲場景信息、當(dāng)前ui控件列表以及操作序列號來查找匹配的錄制記錄。舉例來講,假定在錄制過程中,彈出一個廣告p,測試人員點(diǎn)擊關(guān)閉了廣告p,則錄制文件中將存在關(guān)閉廣告p對應(yīng)的錄制記錄。假設(shè)關(guān)閉廣告p對應(yīng)的錄制記錄包括第一操作事件a,與之關(guān)聯(lián)的ui控件b、場景信息c和操作序列號12。而在回放過程中,在測試終端上回放操作序列號為11的錄制記錄后,廣告p并未彈出,當(dāng)前游戲場景信息為場景信息c1、當(dāng)前ui控件列表包括ui控件b1,b2,b3。則根據(jù)本申請?zhí)峁┑姆桨?,操作序列?2對應(yīng)的錄制記錄(包括ui控件b、場景信息c)與當(dāng)前游戲場景信息和當(dāng)前ui控件列表不匹配,不會被作為目標(biāo)錄制記錄進(jìn)行回放。也即,在“錄制過程中出現(xiàn)的界面在回放過程中并未出現(xiàn)”的情況下,本申請?zhí)峁┑姆桨缚梢蕴^相應(yīng)的錄制記錄不進(jìn)行回放,從而不會導(dǎo)致操作錯亂??梢姡緦?shí)施例所提供的技術(shù)方案強(qiáng)壯了回放過程,優(yōu)化了游戲自動化測試。附圖說明為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。圖1a和圖1b為本發(fā)明實(shí)施例提供的應(yīng)用場景示意圖;圖2為本發(fā)明實(shí)施例提供的服務(wù)器或終端的計算機(jī)架構(gòu)示例圖;圖3為本發(fā)明實(shí)施例提供的游戲當(dāng)前界面及ui控件樹示意圖;圖4-8,10為本發(fā)明實(shí)施例提供的游戲自動化測試方法示例性流程圖;圖9為本發(fā)明實(shí)施例提供的回放報告示例圖;圖11為本發(fā)明實(shí)施例提供的游戲自動化測試裝置或服務(wù)器的示例性結(jié)構(gòu)圖;圖12為本發(fā)明實(shí)施例提供的測試終端的示例性結(jié)構(gòu)圖。具體實(shí)施方式本發(fā)明可能使用的技術(shù)名詞、簡寫或縮寫如下:手游:手機(jī)游戲,相對于運(yùn)行在pc機(jī)上的游戲而言,主要是指運(yùn)行在終端及平臺上的游戲;游戲兼容性測試:由于市場上終端的種類非常之多,以安裝有安卓操作系統(tǒng)的智能手機(jī)為例,其機(jī)型多達(dá)上千款,由于不同機(jī)型使用的硬件和軟件都不一樣,所以游戲在開發(fā)過程中以及上市之前都需要在主流機(jī)型上進(jìn)行兼容性測試,以驗(yàn)證其能否正常運(yùn)行,這便是游戲兼容性測試;unity引擎:unity引擎是用于創(chuàng)建三維游戲、建筑可視化等類型互動內(nèi)容的多平臺的綜合型游戲開發(fā)工具,是一個全面整合的專業(yè)游戲引擎。目前市面上100%的游戲使用unity引擎制作;ui:用戶界面;ui控件:用戶界面控件,例如,請參見圖3,圖3左側(cè)為一游戲界面,在該界面上有兩個ui控件,即“與微信好友玩”按鈕和“與qq好友玩”按鈕。實(shí)際上,ui控件是與圖右所示的ui控件樹上的某一gameobject(節(jié)點(diǎn))相對應(yīng)。每一ui控件對應(yīng)ui控件樹上的一個節(jié)點(diǎn)。ui控件對應(yīng)的gameobject的名稱即為ui控件的控件名稱。例如,“與qq好友玩”按鈕對應(yīng)的節(jié)點(diǎn)的路徑為:"/bootobj/cuimanager/form_login/logincontainer/pnlmobilelogin/btngroup/btnqq"。其中,“與qq好友玩”的控件名稱是tnqq,其父親節(jié)點(diǎn)名稱為btngroup,而btngroup的父親節(jié)點(diǎn)是pnlmobilelogin,以此類推。ngui:next-genuikit,ngui是unity引擎上一套功能強(qiáng)大的ui和事件傳遞框架;ugui:與ngui類似,ugui是unity官方出品的一套u(yù)i和事件傳遞框架??捎糜趧?chuàng)建按鈕、滑動欄等ui控件,處理按鈕對應(yīng)的點(diǎn)擊事件等;wetest平臺:云端手機(jī)管理系統(tǒng),管理實(shí)驗(yàn)室?guī)装倥_手機(jī)。通過wetest平臺能夠獲取某一部手機(jī)的屏幕轉(zhuǎn)向、長寬、截圖等服務(wù);wetest平臺可包括多個云端服務(wù)器。sdk:軟件開發(fā)包;adb:androiddebugbridge,google提供,android開發(fā)工具之一。主要的作用是,提供電腦和智能終端之間交互服務(wù)。通過usb線,電腦上的軟件能夠直接訪問智能終端,連接智能終端。本發(fā)明提供游戲自動化測試方法、應(yīng)用于服務(wù)器的游戲自動化測試裝置、測試終端及游戲自動化測試系統(tǒng)。上述服務(wù)器具體可為本地服務(wù)器(例如普通的個人計算機(jī))或云端服務(wù)器。本地服務(wù)器可連接一臺被測試的終端(簡單為測試終端),而云端服務(wù)器可連接多臺測試終端。測試終端可為pc端,也可為智能終端,例如手機(jī)、ipad等。在測試終端中安裝有待測試的游戲(簡稱為測試游戲)。圖1a和圖1b示出了上述游戲自動化測試系統(tǒng)的一種示例性結(jié)構(gòu),該系統(tǒng)至少包括服務(wù)器和智能終端(測試終端)。需要說明的是,雖然圖1a和圖1b示出的游戲自動化測試系統(tǒng)僅包含了一臺終端和一臺本地服務(wù)器,但不應(yīng)理解為游戲自動化測試系統(tǒng)僅限于包含一臺測試終端和一臺服務(wù)器。游戲自動化測試系統(tǒng)可包含多個云端服務(wù)器,每一云端服務(wù)器可連接多臺測試終端。服務(wù)器中包含自動化測試裝置(或自動化測試模塊),自動化測試裝置可進(jìn)一步劃分為錄制工具和回放工具。錄制工具可安裝在服務(wù)器上,也可直接安裝在測試終端上,而回放工具則可安裝在服務(wù)器上。在一個示例中,服務(wù)器中存儲有python腳本(游戲自動化測試腳本),通過運(yùn)行python腳本,可實(shí)現(xiàn)自動化測試裝置/模塊的功能,執(zhí)行上述游戲自動化測試方法。對于云端服務(wù)器,前述介紹了可連接多臺終端。一臺終端對應(yīng)一個wetest服務(wù)進(jìn)程,對應(yīng)運(yùn)行一次腳本。舉例來講,云端服務(wù)器連接10臺終端,則有10個wetest服務(wù)進(jìn)程,腳本會運(yùn)行10次。在另一個示例中,自動化測試裝置可以硬件的形式安裝于服務(wù)器中。測試終端中安裝有測試游戲,為了配合服務(wù)器完成游戲自動化測試,上述測試游戲嵌入了wetestsdk。其中:wetestsdk可視為游戲的組件,可提供游戲控件(特別是ui控件)id查詢、控件位置查詢、交互操作等(例如點(diǎn)擊、長按、滑動等)。在游戲啟動時,wetestsdk隨之啟動,并會開啟一個socket服務(wù),監(jiān)聽來自python腳本的請求。當(dāng)然,wetestsdk是在自動化測試過程中安裝在游戲中的。真正發(fā)行的游戲版本中不包含wetestsdk。手游的ui控件可由unity引擎的ngui或ugui開發(fā)。因此,wetestsdk可有兩個版本,一個針對ngui,一個針對ugui。python腳本:可通過adb與wetestsdk通信。其功能可包含檢查游戲當(dāng)前界面,決定操作行為,判定執(zhí)行結(jié)果等。uiautomator:可用于查看安卓系統(tǒng)標(biāo)準(zhǔn)ui控件。錄制工具:可通過與wetestsdk通訊完成錄制過程;回放工具:可通過與wetestsdk通訊完成回放過程。圖2示出了上述游戲自動化測試裝置的一種通用計算機(jī)系統(tǒng)結(jié)構(gòu)。上述計算機(jī)系統(tǒng)可包括總線、處理器1、存儲器2、通信接口3。在一個示例中,上述計算機(jī)系統(tǒng)還可包括輸入設(shè)備4和輸出設(shè)備5。上述處理器1、存儲器2、通信接口3、輸入設(shè)備4和輸出設(shè)備5通過總線相互連接。其中:總線可包括一通路,在計算機(jī)系統(tǒng)各個部件之間傳送信息。處理器1可以是通用處理器,例如通用中央處理器(cpu)、網(wǎng)絡(luò)處理器(networkprocessor,簡稱np)、微處理器等,也可以是特定應(yīng)用集成電路(application-specificintegratedcircuit,asic),或一個或多個用于控制本發(fā)明方案程序執(zhí)行的集成電路。還可以是數(shù)字信號處理器(dsp)、專用集成電路(asic)、現(xiàn)成可編程門陣列(fpga)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件。處理器1可包括主處理器,在一個示例中,還可包括顯卡、基帶芯片、調(diào)制解調(diào)器等。存儲器2中保存有執(zhí)行本發(fā)明技術(shù)方案的程序或腳本,還可以保存有操作系統(tǒng)和其他關(guān)鍵業(yè)務(wù)。具體地,程序可以包括程序代碼,程序代碼包括計算機(jī)操作指令。腳本則通常以文本(如ascii)保存,只在被調(diào)用時進(jìn)行解釋或編譯。更具體的,存儲器2可以包括只讀存儲器(read-onlymemory,rom)、可存儲靜態(tài)信息和指令的其他類型的靜態(tài)存儲設(shè)備、隨機(jī)存取存儲器(randomaccessmemory,ram)、可存儲信息和指令的其他類型的動態(tài)存儲設(shè)備、磁盤存儲器、flash等等。輸入設(shè)備4可包括接收用戶輸入的數(shù)據(jù)和信息的裝置,例如鍵盤、鼠標(biāo)、攝像頭、掃描儀、光筆、語音輸入裝置、觸摸屏、計步器或重力感應(yīng)器等。輸出設(shè)備5可包括允許輸出信息給用戶的裝置,例如顯示屏、打印機(jī)、揚(yáng)聲器等。通信接口3可包括使用任何收發(fā)器一類的裝置,以便與其他設(shè)備或通信網(wǎng)絡(luò)通信,如以太網(wǎng),無線接入網(wǎng)(ran),無線局域網(wǎng)(wlan)等。處理器1執(zhí)行存儲器2中所存放的程序,以及調(diào)用其他設(shè)備,可用于實(shí)現(xiàn)下述圖4-8,10所示實(shí)施例提供的游戲自動化測試方法。此外,上述服務(wù)器或測試終端也可采用圖1所示的通用計算機(jī)系統(tǒng)結(jié)構(gòu)。下面將基于上面所述的本發(fā)明涉及的共性方面,對本發(fā)明實(shí)施例進(jìn)一步詳細(xì)說明。本發(fā)明的技術(shù)方案的實(shí)施基于錄制過程中生成的不同于現(xiàn)有錄制記錄的錄制記錄。為便于理解,先介紹錄制過程。圖4示出了上述錄制過程的一種示例性流程。圖4所示的方法應(yīng)用于上述圖1a或圖1b提及的應(yīng)用場景中,在硬件上,由圖4所示的服務(wù)器與測試終端交互完成。請參見圖4,錄制過程示例性得可包括:在401部分:參考終端確定發(fā)生的每一第一操作事件,以及與之關(guān)聯(lián)的操作對象、場景信息及操作序列號;參考終端為錄制過程中測試者使用的終端,一般為某種型號的手機(jī)。參考終端中也安裝了測試游戲。在一個示例中,可由該測試游戲中的wetestsdk來確定第一操作事件及與之關(guān)聯(lián)的操作對象、場景信息及操作序列號。需說明的是,在后續(xù)的回放過程中,也會出現(xiàn)操作事件,為了區(qū)分,將錄制過程中出現(xiàn)的操作事件稱為第一操作事件。與第一操作事件相關(guān)聯(lián)的操作對象是指,第一操作事件所操作的響應(yīng)類ui控件的標(biāo)識(簡稱為ui控件標(biāo)識)。ui控件標(biāo)識具體可為上述響應(yīng)類ui控件對應(yīng)的gameobject的路徑。舉例來講,假定測試者點(diǎn)擊了圖3中的“與qq好友玩”按鈕,而“與qq好友玩”按鈕對應(yīng)的路徑是:"/bootobj/cuimanager/form_login/logincontainer/pnlmobilelogin/btngroup/btnqq"。則可使用上述路徑作為ui控件標(biāo)識。需要指出的是,第一操作事件可能有相應(yīng)的操作對象。舉例來講,測試者點(diǎn)擊一塊石頭的ui控件,該ui控件并不會響應(yīng)點(diǎn)擊操作,則石頭對應(yīng)的ui控件標(biāo)識不能作為操作對象。在諸如此類的情況下,第一操作事件并不對應(yīng)操作對象。場景信息用于表征游戲當(dāng)前場景,場景信息是unity里特有的。更具體的,場景信息可包括unity當(dāng)前游戲界面歸屬的scene名稱。舉例來講,當(dāng)前游戲界面為登錄界面,則其歸屬的scene名稱為login。操作序列號則用于表征某一第一操作事件在錄制過程中的執(zhí)行順序。例如,第一個第一操作事件的操作序列號為1,第二個第一操作事件的操作序列號為2,第三個第一操作事件的操作序列號為3等等,以此類推,不作贅述。需要說明的是,在pc機(jī)上,人可通過鼠標(biāo)、鍵盤等輸入設(shè)備進(jìn)行點(diǎn)擊、長按或滑動等操作,當(dāng)然若pc機(jī)上的屏幕為觸摸屏,也可通過觸摸屏進(jìn)行點(diǎn)擊、長按或滑動等操作。而在移動設(shè)備(智能終端)上,人一般通過觸摸屏進(jìn)行點(diǎn)擊、長按或滑動等操作。上述點(diǎn)擊、長按或滑動等操作方式或操作類型,會對應(yīng)有操作位置(顯示屏坐標(biāo)系下的坐標(biāo))。例如,測試者點(diǎn)擊了某一ui控件,點(diǎn)擊位置為(x=300y=400)。則相應(yīng)的第一操作事件可表示為click:x=300y=400。實(shí)際中,測試者的一個操作與下一操作之間是有停頓的。為了在回放過程中可以模擬測試者的真實(shí)操作,則需要記錄某一操作事件與下一操作事件之間的時間間隔(以sleep表示)。因此,第一操作事件具體可包括第一操作方式、在參考終端的顯示屏坐標(biāo)系下的第一操作位置,以及與下一第一操作事件的時間間隔;其中,第一操作方式可包括點(diǎn)擊(click)、長按(press)、滑動(swipe);第一操作位置指在參考終端的顯示屏坐標(biāo)系下的操作位置。本文后續(xù)還會對第一操作事件進(jìn)行具體的介紹。在402部分:參考終端根據(jù)上述第一操作事件以及與之關(guān)聯(lián)的操作對象、場景信息及操作序列號生成一條錄制記錄,并保存至錄制文件。在一個示例中,可由測試游戲中的wetestsdk生成錄制記錄,發(fā)送給錄制工具,錄制工具將其保存至錄制文件。在另一個示例中,也可由測試游戲中的wetestsdk在生成錄制記錄后,保存至本地的錄制文件。最后錄制結(jié)束時,將本地保存的錄制文件輸出給錄制工具。其中,每一條錄制記錄可包括:第一操作事件、與之相關(guān)聯(lián)的操作對象、場景信息和操作序列號。在一個示例中,錄制記錄的格式可如下表1所示:sceneindexelementaction表1其中,scene表示場景信息(場景名稱);index表示操作序列號;element表示操作對象(ui控件標(biāo)識),element可能為空;actions表示第一操作事件?;蛘?,在另一個示例中,錄制記錄的格式可如下所示:(第一條錄制記錄)login,1,/root/login/qqbutton,(clickx=300y=400sleep=3秒);(第二條錄制記錄)gamestart,2,/root/game/attack,(pressx=300y=400press=2秒,sleep=1秒);(第三條錄制記錄)gamestart,3,/root/game/attack,/root/game/attack,(swipestart_x=300start_y=400move=[(250,220)]end_x=150end_y=50duration=2秒,sleep=1秒);在第一條錄制記錄中,login是場景名稱(即場景信息),后面的1是操作序列號,“/root/login/qqbutton”是ui控件的標(biāo)識(以路徑作為標(biāo)識),而(clickx=300y=400sleep=3秒)表示第一操作事件。其中,click表示第一操作方式,“x=300y=400”表示第一操作位置,而sleep=3秒表示本操作事件與下一操作事件之間的時間間隔為3秒。在第二條錄制記錄的第一操作事件中,第一操作方式則包括了press以及press=2秒,其中的“press”表示操作類型為長按,press=2秒表示長按的持續(xù)時長為2秒;而在第三條錄制記錄的第一操作事件中,第一操作方式包括了swipe以及duration=2秒,其中,“swipe”表示操作類型為滑動,duration=2秒表示滑動的持續(xù)時長為2秒;而第一操作位置則包括“start_x=300start_y=400move=[(250,220)]end_x=150end_y=50”。需要說明的是,在滑動過程中,測試者會將手指放在屏幕上,然后手指在屏幕上滑動一段時間(距離)后抬起手指。在此過程中,會產(chǎn)生begin輸入事件(對應(yīng)手指放在屏幕上),up輸入事件(對應(yīng)手指抬起),在begin輸入事件與up輸入事件之間,還會產(chǎn)生move輸入事件。在本申請中,是將begin、up和move三類輸入事件合并為一個(第一)操作事件。在第三條錄制記錄中的“start_x=300start_y=400”對應(yīng)的是手指放在屏幕上時在參考終端的顯示屏坐標(biāo)系下的位置,“end_x=150end_y=50”對應(yīng)的是手指抬起時在參考終端的顯示屏坐標(biāo)系下的位置,move=[(250,220)]表示move輸入事件在參考終端的顯示屏坐標(biāo)系下的位置。還需要說明的是,第三條錄制記錄中包括兩個ui控件的標(biāo)識,上述兩個ui控件的標(biāo)識可能相同,也可能不同。其中,第一個ui控件的標(biāo)識與“start_x=300start_y=400”相關(guān)聯(lián),表征的是手指放在屏幕上時所操作的響應(yīng)類ui控件,第二個ui控件的標(biāo)識與“end_x=150end_y=50”相關(guān)聯(lián),表征的是手指抬起時所操作的響應(yīng)類ui控件。此外,錄制記錄中還可包括回放次數(shù)。用于表征該條錄制記錄在回放過程中被回放的次數(shù)。需要指出的是,在現(xiàn)有的錄制記錄中,僅包括了操作序列號和操作位置。這就決定了,現(xiàn)有的回放方式僅可嚴(yán)格按時間順序依次執(zhí)行錄制記錄。而在本實(shí)施例中,錄制記錄中還包括了操作對象、場景信息,操作對象和場景信息在后續(xù)的回放過程中,起到了重要的作用。本文后續(xù)將進(jìn)行介紹。下面,將更詳細(xì)得介紹如何生成錄制文件。圖5示出了上述錄制過程的另一種示例性流程,可包括:在500部分:測試者啟動測試游戲開啟錄制工具。例如,測試者點(diǎn)開游戲的app,然后開啟錄制工具。理論上講,可在任意時間點(diǎn)開啟錄制工具進(jìn)行錄制,但為了完整得測試游戲,一般會選擇在開啟測試游戲之后就開啟錄制工具。在501部分:錄制工具或wetestsdk判斷錄制是否結(jié)束,若是,進(jìn)入509部分,否則進(jìn)入502部分。當(dāng)游戲結(jié)束,或測試者手動結(jié)束錄制(例如點(diǎn)擊了錄制工具的結(jié)束按鈕)時,都可導(dǎo)致錄制結(jié)束。無論哪種情況,都會造成wetestsdk與錄制工具之間斷開通訊,因此,錄制工具或wetestsdk可通過判斷是否與對方斷開通訊,來判斷錄制是否結(jié)束。在502部分:wetestsdk等待用戶操作游戲(監(jiān)聽)。在503部分:wetestsdk獲取測試者觸摸上述參考終端的顯示屏而產(chǎn)生的輸入事件,判斷輸入事件的類型(階段)。若上述輸入事件為begin輸入事件,進(jìn)入504部分,若輸入事件的類型為up或move輸入事件,進(jìn)入505部分;輸入事件類型可為begin、move、up。也即,某一輸入事件具體可為begin輸入事件、move輸入事件或up輸入事件。以點(diǎn)擊操作為例,測試者會將手指放在屏幕上進(jìn)行短暫的按壓,然后抬起手指。在此過程中,會產(chǎn)生begin輸入事件(對應(yīng)手指放在屏幕上),up輸入事件(對應(yīng)手指抬起)。在begin輸入事件與up輸入事件之間,還可能產(chǎn)生move輸入事件。尤其在滑動操作過程中,測試者在將手指放在屏幕上后,還會在屏幕上滑動一段距離再抬起手指。因此,在滑動操作對應(yīng)的begin輸入事件與up輸入事件之間,會有多個move輸入事件。在504部分:wetestsdk查找begin輸入事件對應(yīng)的當(dāng)前操作ui控件(響應(yīng)類ui控件)的標(biāo)識;那么,如何確認(rèn)begin輸入事件對應(yīng)的ui控件是否為響應(yīng)類控件呢?請參見圖6,對于ngui開發(fā)的控件,wetestsdk可通過反射調(diào)用uicamera.raycast方法,獲取當(dāng)前坐標(biāo)下對應(yīng)的gameobject。如果查找到的gameobject中包含有uibutton、uitoggle、uiinput、uieventlistenser等組件,則表示該gameobject對應(yīng)的ui控件為響應(yīng)類控件或當(dāng)前操作控件,該gameobject的路徑將作為該begin輸入事件對應(yīng)的當(dāng)前操作ui控件的標(biāo)識;而如果不包括上述組件,則表示該gameobject對應(yīng)的ui控件為非響應(yīng)類控件,后續(xù)也不會將該gameobject的路徑作為該begin輸入事件對應(yīng)的當(dāng)前操作ui控件的標(biāo)識。對于ugui開發(fā)的控件,wetestsdk可通過eventsystem.current.raycastall()方法,獲取當(dāng)前坐標(biāo)下的所有g(shù)ameobject。如果raycastall返回多個gameobject,則查找第一個gameobject及其父節(jié)點(diǎn)中是否包含有ieventsystemhandler組件,如果是,表示該gameobject對應(yīng)的ui控件為響應(yīng)類控件或當(dāng)前操作控件。否則,表示該gameobject對應(yīng)的ui控件為非響應(yīng)類控件,后續(xù)也不會將該gameobject的路徑作為錄制記錄的ui控件標(biāo)識。此外,也可采用類似的方式來查找up輸入事件對應(yīng)的當(dāng)前操作ui控件(響應(yīng)類ui控件)的標(biāo)識,在此不作贅述。在505部分:wetestsdk記錄該輸入事件。輸入事件可包括發(fā)生時刻、顯示屏坐標(biāo)和類型。在506部分:若輸入事件為up輸入事件,wetestsdk將該up輸入事件、該up輸入事件之前的begin輸入事件,以及二者之間的move輸入事件,合并為一個第一操作事件。需要說明的是,在現(xiàn)有方式中,是直接記錄了輸入事件對應(yīng)的錄制記錄,并未對輸入事件進(jìn)行合并。而在本實(shí)施例中,則對輸入事件進(jìn)行合并,這樣可減少wetestsdk與錄制工具之間的傳輸流量。更具體的,可將begin輸入事件、up輸入事件,以及二者之間的move輸入事件,合并為click、press或swipe操作事件。如何合并將在后續(xù)說明。在507部分:wetestsdk獲取與第一操作事件相關(guān)聯(lián)的場景信息及操作序列號。場景信息及操作序列號相關(guān)內(nèi)容請參見前述的401部分的介紹,在此不作贅述。在508部分:wetestsdk根據(jù)上述第一操作事件以及與之關(guān)聯(lián)的操作對象、場景信息及操作序列號生成一條錄制記錄,并發(fā)送至錄制工具。相關(guān)內(nèi)容請參見前述的402部分,在此不作贅述。錄制工具會將接收到的錄制記錄保存至錄制文件。此外,錄制工具或wetestsdk還會根據(jù)與第i個第一操作事件相關(guān)聯(lián)的begin輸入事件的發(fā)生時刻,以及與第i-1個第一操作事件相關(guān)聯(lián)的up輸入事件的發(fā)生時刻,計算得到第i-1個第一操作事件的時間間隔(sleep)。舉例來講,假定與第0個第一操作事件關(guān)聯(lián)的up輸入事件的發(fā)生時刻為12:00,而與第1個第一操作事件相關(guān)聯(lián)的begin輸入事件的發(fā)生時刻12:05,則第0個操作事件的sleep=5秒。在509部分:錄制結(jié)束。下面將介紹將輸入事件合并為第一操作事件的具體方式。請考慮以下三種情況:情況一(第一條件):up輸入事件與之前(請注意指的是發(fā)生時刻位于up輸入事件之前)的begin輸入事件間的時間差小于預(yù)設(shè)時長,同時,二者距離小于預(yù)設(shè)距離。在此情況下,將begin輸入事件、up輸入事件,以及二者間的move輸入事件,合并成操作方式為點(diǎn)擊(click)的第一操作事件。在一個示例中,預(yù)設(shè)時長可取200ms,預(yù)設(shè)距離可取50pix(像素)。舉例來講,若begin輸入事件與up輸入事件的時間差在200ms以內(nèi),且begin輸入事件的坐標(biāo)與up輸入事件的坐標(biāo)的距離在50pix以內(nèi),則將該begin輸入事件、up輸入事件,以及二者間的move輸入事件,合并為一個click事件?;蛘?,也可在begin輸入事件與up輸入事件的時間差在200ms以內(nèi),并且up輸入事件、begin輸入事件以及中間的move輸入事件,兩兩間距均小于預(yù)設(shè)距離時,將begin輸入事件、up輸入事件,以及中間的move輸入事件,合并成操作方式為點(diǎn)擊(click)的第一操作事件。情況二(第二條件):up輸入事件與之前的begin輸入事件間的時間差大于上述預(yù)設(shè)時長,同時,二者距離小于上述預(yù)設(shè)距離?;蛘?,也可在up輸入事件與之前的begin輸入事件間的時間差大于預(yù)設(shè)時長,并且,up輸入事件、begin輸入事件以及中間的move輸入事件,兩兩間距均小于預(yù)設(shè)距離時,將begin輸入事件、up輸入事件,以及中間的move輸入事件,合并成操作方式為一個press事件。其他情況下,將begin輸入事件、up輸入事件,以及二者間的move輸入事件,合并成操作方式為滑動的第一操作事件。舉例來講,若begin輸入事件與up輸入事件的時間差大于200ms,begin輸入事件與up輸入事件的坐標(biāo)間的距離也大于50pix則將該begin輸入事件、up輸入事件,以及二者間的move輸入事件,合并為一個swipe事件。此外,在一個示例中,還可對begin輸入事件與up輸入事件之間的move輸入事件進(jìn)行采樣,即抽取部分move輸入事件,以減少move輸入事件的數(shù)量;然后,將begin輸入事件、up輸入事件,以及抽取的部分move輸入事件,合并為一個swipe事件。舉例來講,假定在begin輸入事件與up輸入事件之間有100個move輸入事件,可抽取其中的20個move輸入事件,將這20個move輸入事件與begin輸入事件和up輸入事件合并為一個swipe事件。對move輸入事件采樣,可進(jìn)一步減少wetestsdk與錄制工具之間的傳輸流量。在介紹完錄制過程后,本文后續(xù)將介紹回放過程。圖7示出了上述錄制過程的另一種示例性流程。圖7所示的方法應(yīng)用于上述圖1a或圖1b提及的應(yīng)用場景中,在硬件上,由圖7所示的服務(wù)器與測試終端交互完成。在700部分:服務(wù)器在測試終端上安裝、啟動測試游戲;在一個示例中,可由服務(wù)器的回放工具(python腳本實(shí)現(xiàn))自動在測試終端上安裝、啟動測試游戲。在701部分:服務(wù)器獲取錄制文件。在一個示例中,可由服務(wù)器的回放工具獲取錄制文件。上述錄制文件包括多條錄制記錄。錄制記錄的相應(yīng)描述可參見前述402部分的介紹,在此不作贅述。在702部分:服務(wù)器判斷是否滿足回放結(jié)束條件,若否,進(jìn)入703部分以執(zhí)行一次回放操作,若是,進(jìn)入回放結(jié)束步驟。在一個示例中,可由服務(wù)器上的回放工具執(zhí)行702部分?;胤沤Y(jié)束條件可包括游戲退出,或者,回放到最后一條錄制記錄,或者,回放率達(dá)到閥值(例如80%)。后續(xù)將介紹如何計算回放率。其中,游戲退出與否,可通過判斷與wetestsdk之間的通訊是否中斷來實(shí)現(xiàn)。在703部分:服務(wù)器獲取測試終端的當(dāng)前游戲場景信息和當(dāng)前ui控件列表。當(dāng)前場景信息可為unity當(dāng)前游戲界面歸屬的scene名稱。舉例來講,當(dāng)前游戲界面為登錄界面,則其歸屬的scene名稱為login。當(dāng)前ui控件列表包括與當(dāng)前游戲界面相關(guān)聯(lián)的所有ui控件標(biāo)識。更具體的,當(dāng)前ui控件列表包括的是與當(dāng)前游戲界面相關(guān)聯(lián)的所有響應(yīng)類ui控件的標(biāo)識。舉例來講,當(dāng)前游戲界面關(guān)聯(lián)了石頭的控件,但該控件并不響應(yīng)點(diǎn)擊、長按、滑動等操作,則石頭的控件標(biāo)識不會出現(xiàn)在當(dāng)前ui控件列表中。在一個示例中,服務(wù)器中的回放工具可向游戲中的wetestsdk發(fā)送當(dāng)前ui控件列表請求消息,wetestsdk則將查找出的、與當(dāng)前游戲界面關(guān)聯(lián)的所有響應(yīng)類ui控件的標(biāo)識反饋給回放工具。在704部分:服務(wù)器根據(jù)上述當(dāng)前游戲場景信息、當(dāng)前ui控件列表,以及上一次所采用的錄制記錄中的操作序列號,在錄制文件中查找匹配的錄制記錄,如查找出匹配的錄制記錄,進(jìn)入705部分,否則,進(jìn)入706部分。在一個示例中,可在錄制文件中查找與上述當(dāng)前游戲場景信息、當(dāng)前ui控件列表以及上一次回放操作所采用的錄制記錄中的操作序列號均匹配的錄制記錄作為匹配的錄制記錄;當(dāng)前游戲場景信息、當(dāng)前ui控件列表和操作序列號相關(guān)描述請參見前述記載,在此不作贅述。舉例來講,假定當(dāng)前場景名稱為01,ui控件列表包括ui控件a-e,上一次采用的錄制記錄的操作序列號為005;而在錄制文件中,在場景名稱01下有五條錄制記錄,示例性得為:場景名稱01,ui標(biāo)識a,第一操作事件(click),操作序列號006;場景名稱01,ui標(biāo)識a,第一操作事件(press),操作序列號010;場景名稱01,ui標(biāo)識b,第一操作事件(press),操作序列號100;場景名稱01,ui標(biāo)識b,第一操作事件(swipe),操作序列號101;場景名稱01,ui標(biāo)識f,第一操作事件(swipe),操作序列號120。則操作序列號006的錄制記錄與當(dāng)前游戲場景信息、當(dāng)前ui控件列表以及上一次回放操作所采用的錄制記錄中的操作序列號(006緊鄰005,在執(zhí)行時序上是銜接的)均匹配,則006對應(yīng)的錄制記錄(最優(yōu)匹配錄制記錄)即為匹配的錄制記錄。若未查找出與上述當(dāng)前游戲場景信息、當(dāng)前ui控件列表以及上一次回放操作所采用的錄制記錄中的操作序列號均匹配的錄制記錄時,可將與當(dāng)前游戲場景信息和當(dāng)前ui控件列表相匹配的錄制記錄(次優(yōu)匹配錄制記錄)作為匹配的錄制記錄??梢?,在本申請中,在沒有最優(yōu)匹配錄制記錄情況下,可使用相對接近的次優(yōu)匹配錄制記錄繼續(xù)進(jìn)行回放,回放過程更加健壯。而若既未查找到與上述當(dāng)前游戲場景信息、當(dāng)前ui控件列表以及上一次回放操作所采用的錄制記錄中的操作序列號均匹配的錄制記錄,也未查找到與當(dāng)前游戲場景信息和當(dāng)前ui控件列表相匹配的錄制記錄,則確定未查找到出匹配的錄制記錄。在705部分:服務(wù)器在上述測試終端上回放上述目標(biāo)錄制記錄(即查找出的匹配的錄制記錄)。除回放目標(biāo)錄制記錄外,服務(wù)器中的游戲自動化測試裝置/模塊還可執(zhí)行性能數(shù)據(jù)采集、終端日志采集、crash檢測等。在本發(fā)明其他實(shí)施例中,還可記錄目標(biāo)錄制記錄的回放次數(shù)。需要說明的是,705部分需要服務(wù)器中的回放工具與wetestsdk之間交互才能實(shí)現(xiàn)??蓪⒛繕?biāo)錄制記錄中的第一操作事件稱為目標(biāo)第一操作事件,將目標(biāo)錄制記錄中的ui控件標(biāo)識所表征的控件稱為目標(biāo)ui控件。在一個示例中時,服務(wù)器中的回放工具可根據(jù)上述目標(biāo)第一操作事件,確定針對目標(biāo)ui控件的第二操作事件,并通知測試終端(中的wetestsdk)執(zhí)行確定出的第二操作事件(可將指示測試終端執(zhí)行第二操作事件的通知稱為第一通知)。第二操作事件包括第二操作方式,在測試終端的顯示屏坐標(biāo)系下的第二操作位置,以及,預(yù)設(shè)等待時長。本文后續(xù)將進(jìn)行詳細(xì)介紹如何根據(jù)目標(biāo)第一操作事件,確定針對目標(biāo)ui控件的第二操作事件。需要強(qiáng)調(diào)的是,在本實(shí)施例中,是根據(jù)當(dāng)前游戲場景信息、當(dāng)前ui控件列表以及操作序列號來查找匹配的錄制記錄。舉例來講,假定在錄制過程中,彈出一個廣告p,測試人員點(diǎn)擊關(guān)閉了廣告p,則錄制文件中將存在關(guān)閉廣告p對應(yīng)的錄制記錄。可假設(shè)關(guān)閉廣告p對應(yīng)的錄制記錄包括第一操作事件a,與之關(guān)聯(lián)的ui控件b、場景信息c和操作序列號12。而在回放過程中,在測試終端上回放操作序列號為11的錄制記錄后,廣告p并未彈出,假設(shè)當(dāng)前游戲場景信息為場景信息c1、當(dāng)前ui控件列表包括ui控件b1,b2,b3。則根據(jù)本申請?zhí)峁┑姆桨?,操作序列?2對應(yīng)的錄制記錄(包括ui控件b、場景信息c)與當(dāng)前游戲場景信息和當(dāng)前ui控件列表不匹配,不會被作為目標(biāo)錄制記錄進(jìn)行回放。也即,在“錄制過程中出現(xiàn)的界面在回放過程中并未出現(xiàn)”的情況下,本申請?zhí)峁┑姆桨缚梢蕴^相應(yīng)的錄制記錄不進(jìn)行回放,從而不會導(dǎo)致操作錯亂??梢?,本實(shí)施例所提供的技術(shù)方案強(qiáng)壯了回放過程,優(yōu)化了游戲自動化測試。在706部分:根據(jù)上述當(dāng)前ui控件列表確定出隨機(jī)操作事件,并通知測試終端執(zhí)行上述隨機(jī)操作事件??蓪⒅甘緶y試終端執(zhí)行隨機(jī)操作事件的通知稱為第二通知。在一個示例中,隨機(jī)操作事件可實(shí)現(xiàn):在當(dāng)前ui控件列表不為空時,從當(dāng)前ui控件列表中隨機(jī)選擇一個ui控件進(jìn)行點(diǎn)擊。在當(dāng)前ui列表為空時,在測試終端的屏幕上隨機(jī)點(diǎn)擊。更具體的,與第一操作事件相類似,上述隨機(jī)操作事件可包括第三操作方式,在測試終端的顯示屏坐標(biāo)系下的第三操作位置,以及,默認(rèn)等待時長(可為零,或者1秒等)。其中,第三操作方式可為點(diǎn)擊、長按和滑動。默認(rèn)等待時長可為零秒、1秒等,本領(lǐng)域技術(shù)人員可根據(jù)實(shí)際需要進(jìn)行靈活設(shè)計,在此不作贅述。至于第三操作位置,具體可通過如下方式確定:在上述當(dāng)前ui控件列表不為空時,從上述當(dāng)前ui控件列表中隨機(jī)選擇一個ui控件標(biāo)識;可將隨機(jī)選擇出的ui控件標(biāo)識所表征的ui控件稱為隨機(jī)ui控件;確定該隨機(jī)ui控件在所述測試終端的顯示屏坐標(biāo)系下的當(dāng)前頂點(diǎn)位置以及覆蓋區(qū)域;根據(jù)該隨機(jī)ui控件的覆蓋區(qū)域和當(dāng)前頂點(diǎn)位置,確定第三操作位置;或者,在上述當(dāng)前ui控件列表為空時,在所述測試終端的顯示屏坐標(biāo)系下隨機(jī)選擇一個坐標(biāo)作為第三操作位置。706部分可解決現(xiàn)有回放方式存在的另一問題:在錄制過程中未出現(xiàn)的界面在回放過程中出現(xiàn)了。這同樣可導(dǎo)致現(xiàn)有自動化測試過程的操作錯亂。例如在錄制過程中并未彈出廣告界面,但在回放過程中彈出了廣告界面,如嚴(yán)格按照時間順序執(zhí)行錄制記錄,那么后續(xù)操作將可能完全錯亂。而在本申請實(shí)施例中,可在當(dāng)前ui控件列表不為空時,從當(dāng)前ui控件列表中隨機(jī)選擇一個ui控件進(jìn)行點(diǎn)擊。或者,在當(dāng)前ui列表為空時,在測試終端的屏幕上隨機(jī)點(diǎn)擊。在一次或多次隨機(jī)點(diǎn)擊操作后,廣告界面可能會被關(guān)閉。被關(guān)閉后,可根據(jù)廣告界面關(guān)閉后的當(dāng)前游戲場景信息、當(dāng)前ui控件列表,以及上一次所采用的錄制記錄中的操作序列號,在錄制文件中查找匹配的錄制記錄作為目標(biāo)錄制記錄進(jìn)行回放,而不會發(fā)生錯亂。在本發(fā)明其他實(shí)施例中,仍請參見圖7,在705部分或706部分之后,還可包括:707部分:服務(wù)器生成本次回放操作對應(yīng)的回放記錄保存至回放報告。在其他實(shí)施例中,也可由wetestsdk生成回放記錄,并返回服務(wù)器,由服務(wù)器將回放記錄保存至回放報告?;胤庞涗浥c前述錄制記錄的格式相類似。在一個示例中,若查找到匹配的錄制記錄,那么回放該匹配的錄制記錄后對應(yīng)的回放記錄可包括第二操作事件,與第二操作事件關(guān)聯(lián)的操作對象、場景信息、回放序列號等。回放序列號用于表征第二操作事件(或本次回放操作)在回放過程中的執(zhí)行順序。在若未查找到匹配的錄制記錄,而是執(zhí)行的隨機(jī)操作事件,則相應(yīng)的回放記錄可包括隨機(jī)操作事件,與隨機(jī)操作事件相關(guān)聯(lián)的操作對象、場景信息、截圖,以及,表征該隨機(jī)操作事件在回放過程中的執(zhí)行順序的回放序列號。本文后續(xù)還將對回放記錄進(jìn)行介紹。在708部分:服務(wù)器根據(jù)所有回放記錄統(tǒng)計得到的回放率。需要說明的是,回放率是每進(jìn)行一次回放操作就計算一次。因?yàn)樵谙乱淮位胤挪僮髦?,還需要根據(jù)回放率來判斷是否滿足回放結(jié)束條件?;胤怕士赏ㄟ^下述方式計算:匹配的錄制記錄的條數(shù)/最大的回放序列號(回放操作執(zhí)行次數(shù))。舉例來講,假定回放報告中最大回放序列號為4,也即進(jìn)行了四次回放操作,其中,執(zhí)行了一次隨機(jī)操作事件,匹配的錄制記錄的條數(shù)為3,則回放率為75%。此外,還可統(tǒng)計隨機(jī)操作事件的數(shù)量?;胤怕屎碗S機(jī)操作事件的數(shù)量可屬于回放報告的一部分,因此,707部分和708部分的操作,都可視為對回放報告的更新。下面,將介紹如何在上述測試終端上回放目標(biāo)錄制記錄的具體方式。圖8示出了回放目標(biāo)錄制記錄的一種示例性流程。圖8所示的方法應(yīng)用于上述圖1a或圖1b提及的應(yīng)用場景中,在硬件上,由圖8所示的服務(wù)器與測試終端交互完成。上述回放目標(biāo)錄制記錄的示例性流程包括:在800部分:服務(wù)器向測試終端發(fā)送位置查詢請求,位置查詢請求中攜帶了目標(biāo)ui控件標(biāo)識(也即目標(biāo)ui控件對應(yīng)的gameobeject節(jié)點(diǎn)的路徑)。在801部分:測試終端(wetestsdk)獲取并返回目標(biāo)ui控件標(biāo)識的實(shí)時位置信息。上述實(shí)時位置信息可包括目標(biāo)ui控件在測試終端的顯示屏坐標(biāo)系下的當(dāng)前頂點(diǎn)位置,以及,目標(biāo)ui控件在測試終端的顯示屏上的覆蓋區(qū)域。在一個示例中,上述當(dāng)前頂點(diǎn)位置具體可為目標(biāo)ui控件的左上角坐標(biāo)或右下角坐標(biāo),而覆蓋區(qū)域具體為目標(biāo)ui控件的長和寬。需要說明的是,雖然ui控件在前臺可被渲染成各種形狀,例如圓形、橢圓等。但在后臺,ui控件的形狀均為矩形。所以每一ui控件均有左上角。而對于一個矩形的目標(biāo)ui控件來說,在知道其左上角坐標(biāo)及覆蓋區(qū)域的情況下,可唯一的確定目標(biāo)ui控件實(shí)時、真正的位置所在。當(dāng)前頂點(diǎn)位置和ui控件在終端顯示屏上的覆蓋區(qū)域可由wetestsdk計算得到。此外,前述提及的隨機(jī)ui控件,其在所述測試終端的顯示屏坐標(biāo)系下的當(dāng)前頂點(diǎn)位置以及覆蓋區(qū)域,也可通過類似801部分的操作而確定。在802部分:服務(wù)器根據(jù)上述覆蓋區(qū)域、當(dāng)前頂點(diǎn)位置確定第二操作事件的第二操作位置。以人進(jìn)行點(diǎn)擊或長按為例,人一般是會點(diǎn)擊或長按ui控件的中心部位。對于滑動ui控件也是如此。而在801部分獲取到的是ui控件左上角的坐標(biāo),因此,需要計算第二操作位置。此外,前述提及的根據(jù)隨機(jī)ui控件的覆蓋區(qū)域和當(dāng)前頂點(diǎn)位置確定第三操作位置,也可采用類似802部分的操作而實(shí)現(xiàn)。需要說明的是,在目標(biāo)錄制記錄中的操作對象不為空時,可采用800-802來確定第二操作事件的第二操作位置。在此過程中,不需要使用目標(biāo)錄制記錄中的第一操作位置。而若目標(biāo)錄制記錄中的操作對象為空時(想象一下用戶點(diǎn)擊了石頭控件),則可根據(jù)參考終端和測試終端的屏幕分辨率,將目標(biāo)第一操作事件對應(yīng)的第一操作位置轉(zhuǎn)換為第二操作位置。在803部分:服務(wù)器將目標(biāo)第一操作事件的第一操作方式作為上述第二操作方式,將上述目標(biāo)第一操作事件的時間間隔作為上述預(yù)設(shè)等待時長t。舉例來講,假定目標(biāo)錄制記錄包括:login,1,/root/login/qqbutton,(clickx=300y=400sleep=3秒)。其中,目標(biāo)錄制記錄中的目標(biāo)ui控件為“/root/login/qqbutton”,不為空。假定根據(jù)目標(biāo)ui控件的覆蓋區(qū)域和當(dāng)前頂點(diǎn)位置,確定出第二操作位置為x=500y=400,則第二操作事件為:clickx=500y=400t=3秒。后續(xù)wetestsdk將在測試終端顯示屏的x=500y=400位置上進(jìn)行點(diǎn)擊。在804部分:對測試終端的當(dāng)前游戲界面進(jìn)行截圖,并在截圖上標(biāo)記第二操作位置(例如在截圖上標(biāo)記紅點(diǎn))。后續(xù)生成的回放記錄中將包含上述截圖。這樣,通過重播截圖序列,可對應(yīng)查看錄制記錄的執(zhí)行過程。在805部分:服務(wù)器通知測試終端采用803部分得到的第二操作方式對第二操作位置進(jìn)行操作(通知第二操作事件),以實(shí)現(xiàn)對目標(biāo)ui控件采用上述第二操作方式進(jìn)行操作。請同時參見圖1a和圖1b,在一個示例中,可由服務(wù)器通過adb向游戲中的wetestsdk發(fā)送通知。則終端根據(jù)通知,執(zhí)行上述第二操作事件,以實(shí)現(xiàn)對與第二操作位置對應(yīng)的ui控件、采用第二操作方式進(jìn)行操作。仍沿用前例,假定第二操作事件為:clickx=500y=400t=3秒。則wetestsdk將在測試終端顯示屏的x=500y=400位置上進(jìn)行點(diǎn)擊。在806部分:服務(wù)器等待上述預(yù)設(shè)等待時長t。在807部分:服務(wù)器生成本次回放操作對應(yīng)的回放記錄,并更新回放報告?;胤艌蟾娴氖纠愿袷秸垍⒁妶D9。在圖9中,非匹配回放記錄是對應(yīng)隨機(jī)操作事件的,圖9中的片段是由操作序列號連續(xù)的錄制記錄所對應(yīng)的回放記錄構(gòu)成的。更新回放報告的其他相關(guān)描述請參見前述實(shí)施例707部分和708部分的記載,在此不作贅述。下面將重點(diǎn)介紹如何從錄制文件中查找匹配的錄制記錄。圖10示出了查找匹配的錄制記錄的一種示例性流程。圖10所示的方法應(yīng)用于上述圖1a或圖1b提及的應(yīng)用場景中,在硬件上,由圖10所示的服務(wù)器與測試終端交互完成。上述示例性流程可包括:在1000部分:服務(wù)器獲取測試終端的當(dāng)前界面對應(yīng)的應(yīng)用程序唯一標(biāo)識,并判斷上述應(yīng)用程序唯一標(biāo)識是否是測試游戲的唯一標(biāo)識或與測試游戲相關(guān)聯(lián)的應(yīng)用程序的唯一標(biāo)識;若是,進(jìn)入1001部分,否則,啟動上述測試游戲。換種說法,可判斷應(yīng)用程序唯一標(biāo)識是否表征了測試游戲或與測試游戲相關(guān)聯(lián)的應(yīng)用程序。應(yīng)用程序唯一標(biāo)識為包名。在一個示例中,服務(wù)器中的回放工具可通過uiautomator或者其他工具確定手機(jī)當(dāng)前界面的包名(應(yīng)用程序唯一標(biāo)識),以確定進(jìn)程。在回放過程中,可能因各種原因,其他應(yīng)用程序(即非測試游戲)的界面會成為當(dāng)前界面,考慮下述兩種情況:情況一:與測試游戲相關(guān)聯(lián)的應(yīng)用程序的操作界面成為當(dāng)前界面。舉例來講,如測試游戲可通過微信賬號或qq賬號登錄,微信應(yīng)用程序或qq應(yīng)用程序就是與測試游戲相關(guān)聯(lián)的應(yīng)用程序。在嘗試登錄的過程,微信應(yīng)用程序或qq應(yīng)用程序的操作界面可能成為當(dāng)前界面;情況二,與測試游戲無關(guān)聯(lián)的應(yīng)用程序(未知程序)的操作界面成為當(dāng)前界面。在這種情況下,就要嘗試啟動測試游戲,否則可能無法完成回放。在1001部分:服務(wù)器獲取測試終端的當(dāng)前游戲場景信息和當(dāng)前ui控件列表。1001部分與前述實(shí)施例的703部分相同,在此不作贅述。1001部分未在圖10中示出。在1002部分:從上述錄制文件中查找滿足第一匹配條件的錄制記錄。若未查找到,進(jìn)入1003部分,若查找到,進(jìn)入1004部分。其中,第一匹配條件包括場景信息與當(dāng)前游戲場景信息相匹配。例如,當(dāng)前游戲場景的名稱為login,則查找所有游戲場景信息為login的錄制記錄??蓪M足第一匹配條件的錄制記錄稱為第一候選錄制記錄。在1003部分:根據(jù)上述當(dāng)前ui控件列表確定出隨機(jī)操作事件,并通知測試終端執(zhí)行上述隨機(jī)操作事件。1003部分與前述的706部分相同,在此不作贅述。在1004部分:在上述第一候選錄制記錄中查找滿足第二匹配條件的錄制記錄。若查找到,進(jìn)入1005部分,否則,進(jìn)入1006部分。其中第二匹配條件可包括:操作序列號與上一次所采用的錄制記錄中的操作序列號相接續(xù)。舉例來講,上一次所采用的錄制記錄中的操作序列號是3,而第一候選錄制記錄中有操作序列號為4的錄制記錄,則認(rèn)為相接續(xù)??蓪M足第二匹配條件的錄制記錄稱為第二候選錄制記錄,第二候選錄制記錄同時滿足第一匹配條件和第二匹配條件。在1005部分:在上述第二候選錄制記錄中查找滿足第三匹配條件的錄制記錄;若查找到進(jìn)入1006部分,否則進(jìn)入1007部分。上述第三匹配條件包括:ui控件標(biāo)識與上述當(dāng)前ui控件列表相匹配。滿足第三匹配條件的錄制記錄,亦同時滿足第一匹配條件和第二匹配條件,是最優(yōu)選錄制記錄。最優(yōu)選錄制記錄將作為匹配的錄制記錄(即目標(biāo)錄制記錄),后續(xù)將在測試終端上回放該最優(yōu)選錄制記錄。舉例來講,假定當(dāng)前場景名稱為01,ui控件列表包括ui控件標(biāo)識a-e,上一次回放操作對應(yīng)的操作序列號為005;而在錄制文件中,與場景名稱01匹配的錄制記錄有五條,分別:場景名稱01,ui標(biāo)識a,第一操作事件click,操作序列號006;場景名稱01,ui標(biāo)識a,第一操作事件press,操作序列號010;場景名稱01,ui標(biāo)識b,第一操作事件press,操作序列號100;場景名稱01,ui標(biāo)識b,第一操作事件swipe,操作序列號101;場景名稱01,ui標(biāo)識f,第一操作事件swipe,操作序列號120。則選擇操作序列號006的錄制記錄。因?yàn)?06緊鄰005,在執(zhí)行時序上是銜接的,并且ui標(biāo)識a在當(dāng)前ui控件列表中。在1006部分:在上述第一候選錄制記錄中查找出滿足第四匹配條件的錄制記錄,若查找到進(jìn)入1007部分,否則進(jìn)入1008部分。上述第四匹配條件可包括:ui控件標(biāo)識與所述當(dāng)前ui控件列表相匹配。舉例來講,假定當(dāng)前場景名稱為01,ui控件列表包括ui控件標(biāo)識a-e,上一次回放操作對應(yīng)的操作序列號為005;而在錄制文件中,與場景名稱01匹配的錄制記錄有五條,分別:場景名稱01,ui標(biāo)識a,第一操作事件click,操作序列號007,回放次數(shù)1;場景名稱01,ui標(biāo)識a,第一操作事件press,操作序列號010,回放次數(shù)0;場景名稱01,ui標(biāo)識b,第一操作事件press,操作序列號100,回放次數(shù)5;場景名稱01,ui標(biāo)識b,第一操作事件swipe,操作序列號101,回放次數(shù)2;場景名稱01,ui標(biāo)識f,第一操作事件swipe,操作序列號120,回放次數(shù)8。則標(biāo)下劃線的錄制記錄均為滿足第四匹配條件的第三錄制記錄。在1007部分:從第三候選錄制記錄中選擇回放次數(shù)最少或操作序列號最小的錄制記錄作為上述匹配的錄制記錄進(jìn)入回放。仍沿用前例,可選擇“場景名稱01,ui標(biāo)識a,第一操作事件click,操作序列號007,回放次數(shù)1”的錄制記錄作為匹配的錄制記錄,也可選擇“場景名稱01,ui標(biāo)識a,第一操作事件press,操作序列號010,回放次數(shù)0”的錄制記錄作為匹配的錄制記錄。在1007部分選擇出的錄制記錄可視為次優(yōu)選錄制記錄。在1008部分:根據(jù)上述當(dāng)前ui控件列表確定出隨機(jī)操作事件,并通知測試終端執(zhí)行上述隨機(jī)操作事件。1008部分與前述的706部分相同,在此不作贅述。圖11示出了上述實(shí)施例中所涉及的游戲自動化測試裝置或服務(wù)器的一種可能的結(jié)構(gòu)示意圖,包括:獲取模塊1101,用于獲取錄制文件;其中,上述錄制文件包括多條錄制記錄,每一條錄制記錄包括:第一操作事件、與上述第一操作事件相關(guān)聯(lián)的操作對象(ui控件標(biāo)識)、場景信息和操作序列號;回放模塊1102,用于根據(jù)上述錄制文件,執(zhí)行至少一次回放操作;其中,回放操作包括:獲取測試終端的當(dāng)前游戲場景信息和當(dāng)前ui控件列表;所述當(dāng)前ui控件列表包括與所述測試終端的當(dāng)前游戲界面相關(guān)聯(lián)的所有ui控件標(biāo)識;根據(jù)所述當(dāng)前游戲場景信息、當(dāng)前ui控件列表以及上一次回放操作所采用的錄制記錄中的操作序列號,在所述錄制文件中查找匹配的錄制記錄;如查找出匹配的錄制記錄,將所述匹配的錄制記錄作為目標(biāo)錄制記錄;在所述測試終端上回放所述目標(biāo)錄制記錄。在本發(fā)明其他實(shí)施例中,上述回放操作還可包括:如未查找出匹配的錄制記錄,根據(jù)上述當(dāng)前ui控件列表確定出隨機(jī)操作事件,并通知測試終端執(zhí)行上述隨機(jī)操作事件。隨機(jī)操作事件可參見前述記載,在此不作贅述。在本發(fā)明其他實(shí)施例中,仍請參見圖11,上述游戲自動化測試裝置或服務(wù)器還可包括:錄制模塊1103,用于在錄制過程中,確定每一第一操作事件,以及與之關(guān)聯(lián)的操作對象、場景信息及操作序列號;使用所述第一操作事件以及與之關(guān)聯(lián)的操作對象、場景信息及操作序列號更新錄制文件。圖12示出了上述實(shí)施例中所涉及的測試終端的一種可能的結(jié)構(gòu)示意圖,包括:接收單元1201,用于接收來自服務(wù)器或游戲自動化測試裝置的第一通知或第二通知;所述第一通知用于指示執(zhí)行第二操作事件,所述第二通知用于指示執(zhí)行隨機(jī)操作事件;執(zhí)行單元1202,用于根據(jù)所述第一通知,執(zhí)行所述第二操作事件,以實(shí)現(xiàn)在所述測試終端上回放目標(biāo)錄制記錄;或者,根據(jù)所述第二通知,執(zhí)行所述隨機(jī)操作事件。具體細(xì)節(jié)請參見本文前述記載,在此不作贅述。在本發(fā)明其他實(shí)施例中,仍請參見圖12,上述測試終端還可包括:錄制單元1203,用于根據(jù)第一操作事件以及與之關(guān)聯(lián)的操作對象、場景信息及操作序列號生成一條錄制記錄并發(fā)送給所述服務(wù)器或游戲自動化測試裝置。錄制單元1203和執(zhí)行單元1202的功能可由sdk實(shí)現(xiàn)。其中,獲取模塊1101可用于執(zhí)行圖7所示的701部分。回放模塊1102可用于執(zhí)行圖7所示實(shí)施例的702-708部分、圖8所示實(shí)施例的800,802-807部分、圖10所示實(shí)施例的1000-1008部分。錄制模塊1103(錄制工具)可通過與測試終端中的錄制單元1202(sdk)通訊,執(zhí)行圖4所示實(shí)施例的401-402部分,圖5所示的實(shí)施例的500-509部分,以及,圖6所示的實(shí)施例。執(zhí)行單元1202可用于執(zhí)行圖8所示實(shí)施例的801部分,及其他sdk執(zhí)行的步驟。接收單元1201可用于執(zhí)行圖8所示實(shí)施例的800部分和805部分。本發(fā)明實(shí)施例還要求保護(hù)游戲自動化測試系統(tǒng),其可包括上述所有實(shí)施例中的測試終端以及上述服務(wù)器,或包括上述所有實(shí)施例中的測試終端及游戲自動化測試裝置。結(jié)合本發(fā)明公開內(nèi)容所描述的方法或者算法的步驟可以硬件的方式來實(shí)現(xiàn),也可以是由處理器執(zhí)行軟件指令的方式來實(shí)現(xiàn)。軟件指令可以由相應(yīng)的軟件模塊組成,軟件模塊可以被存放于ram存儲器、閃存、rom存儲器、eprom存儲器、eeprom存儲器、寄存器、硬盤、移動硬盤、cd-rom或者本領(lǐng)域熟知的任何其它形式的存儲介質(zhì)中。一種示例性的存儲介質(zhì)耦合至處理器,從而使處理器能夠從該存儲介質(zhì)讀取信息,且可向該存儲介質(zhì)寫入信息。當(dāng)然,存儲介質(zhì)也可以是處理器的組成部分。處理器和存儲介質(zhì)可以位于asic中。另外,該asic可以位于用戶設(shè)備中。當(dāng)然,處理器和存儲介質(zhì)也可以作為分立組件存在于用戶設(shè)備中。本領(lǐng)域技術(shù)人員應(yīng)該可以意識到,在上述一個或多個示例中,本發(fā)明所描述的功能可以用硬件、軟件、固件或它們的任意組合來實(shí)現(xiàn)。當(dāng)使用軟件實(shí)現(xiàn)時,可以將這些功能存儲在計算機(jī)可讀介質(zhì)中或者作為計算機(jī)可讀介質(zhì)上的一個或多個指令或代碼進(jìn)行傳輸。計算機(jī)可讀介質(zhì)包括計算機(jī)存儲介質(zhì)和通信介質(zhì),其中通信介質(zhì)包括便于從一個地方向另一個地方傳送計算機(jī)程序的任何介質(zhì)。存儲介質(zhì)可以是通用或?qū)S糜嬎銠C(jī)能夠存取的任何可用介質(zhì)。以上所述的具體實(shí)施方式,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施方式而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的技術(shù)方案的基礎(chǔ)之上,所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包括在本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)前第1頁12
      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1