移動終端游戲自動測試方法和裝置的制造方法
【專利摘要】本發明提供一種移動終端游戲自動測試方法和裝置,一種移動終端游戲自動測試方法包括:測試終端通過RPC調用移動終端上游戲進程的UI接口,獲取所述游戲進程UI控件代碼層的信息;所述測試終端按照預設測試腳本,根據所述UI控件代碼層的信息控制所述移動終端在屏幕界面進行模擬觸碰操作。本發明提供的移動終端游戲自動測試方法,提高了對移動終端游戲進行自動測試的精度,適用于對復雜游戲的測試。
【專利說明】
移動終端游戲自動測試方法和裝置
技術領域
[0001]本發明實施例涉及互聯網技術領域,尤其涉及一種移動終端游戲自動測試方法和
目.0
【背景技術】
[0002]隨著移動通信技術的發展,移動終端已經成為人們不可獲取的工具。人們不僅可以通過移動終端進行通信,還可以使用移動終端上網、辦公、娛樂等。其中,由于移動終端具有便攜性,移動終端上的游戲可以隨時隨地游玩,因此移動終端上的游戲已經有取代傳統的PC端游戲的趨勢,成為人們休閑娛樂的首選。
[0003]在移動終端游戲的開發過程中,需要對移動終端游戲進行各方面的測試。測試分為人工測試和自動測試兩種方式,由于人工測試效率不高,因此移動終端游戲的開發商都致力于研究移動終端游戲的自動測試方法以提高測試效率。目前移動終端游戲的自動測試方法有幾種,一種是依靠操作系統的廠商官方工具提供的UI控件及腳本邏輯接口,編寫測試腳本調取接口獲取UI控件實現自動測試;另一種是通過圖像匹配識別用戶界面(UserInterface,UI)控件位置,并通過調用控件所在坐標接口的方式自行編寫測試用例腳本實現自動測試;再有就是移動終端調試工具包模擬人工方式對移動終端界面進行觸碰操作實現自動測試。
[0004]但是目前的上述幾種自動測試方法中,依靠操作系統的廠商官方工具提供的UI控件編寫的測試用例僅能調取官方工具自帶的UI控件類型,而一般游戲都不是使用官方工具提供的UI控件開發的,因此這種方法應用范圍有限;基于圖像匹配識別的自動測試方法受限于圖像受干擾程度和識別準確度的限制,存在測試失敗的情況,而且移動終端游戲的開發中UI迭代頻率大,自動測試用例需要隨著UI迭代更新維護匹配圖像,測試用例的維護成本較高;而基于圖像匹配識別的自動測試方法和采用移動終端調試工具包模擬人工方式對移動終端界面進行觸碰操作的方法,都是基于屏幕的坐標信息實現自動測試的,難以滿足邏輯較為復雜的游戲的自動測試。
[0005]綜上所述,對于移動終端游戲的UI越來越豐富,游戲邏輯越來越復雜的發展趨勢而言,目前的游戲自動測試方法已經不能滿足自動測試的需求,如何完成移動終端設備游戲的自動測試,是目前亟待解決的問題。
【發明內容】
[0006]本發明實施例提供一種移動終端游戲自動測試方法和裝置,用于在進行移動終端游戲的自動測試時,提高對移動終端上游戲進行自動測試的精度。
[0007]本發明實施例提供一種移動終端游戲自動測試方法和裝置,包括:
[0008]測試終端通過RPC調用移動終端上游戲進程的UI接口,獲取所述游戲進程UI控件代碼層的信息;
[0009]所述測試終端按照預設測試腳本,根據所述UI控件代碼層的信息控制所述移動終端在屏幕界面進行模擬觸碰操作;
[0010]所述測試終端通過RPC獲取所述游戲進程在運行過程中的測試數據。
[0011]本發明實施例還提供一種移動終端游戲自動測試裝置,包括:
[0012]RPC調用模塊,用于通過RPC調用移動終端上游戲進程的UI接口,獲取所述游戲進程UI控件代碼層的信息;
[0013]測試執行模塊,用于所述測試終端按照預設測試腳本,根據所述UI控件代碼層的信息控制所述移動終端在屏幕界面進行模擬觸碰操作;
[0014]所述RPC調用模塊還用于通過RPC獲取所述游戲進程在運行過程中的測試數據。
[0015]本發明實施例提供的移動終端游戲自動測試方法和裝置中,測試終端通過RPC調用移動終端上游戲進程的UI接口,獲取游戲進程UI控件代碼層的信息,并按照預設測試腳本,根據UI控件代碼層的信息控制移動終端在屏幕界面進行模擬觸碰操作,從而可以通過RPC獲取游戲進程在運行過程中的測試數據,完成對移動終端上游戲的自動測試,由于測試終端控制移動終端在屏幕界面上進行模擬操作的UI控件信息是通過RPC獲取的UI控件代碼層信息,因此本實施例提供的移動終端游戲自動測試方法可以精確地對移動終端進行模擬觸碰操作,從而提高對移動終端上游戲進行自動測試的精度,能夠適應移動終端上游戲UI越來越復雜的發展趨勢。
【附圖說明】
[0016]圖1為本發明實施例提供的移動終端游戲自動測試方法實施例一的流程圖;
[0017]圖2為本發明實施例提供的移動終端游戲自動測試方法實施例二的流程圖;
[0018]圖3為本發明實施例提供的移動終端游戲自動測試方法實施例三的流程圖;
[0019]圖4為本實施例提供的移動終端游戲自動測試方法的系統拓撲結構示意圖;
[0020]圖5為同步RPC調用的流程圖;
[0021]圖6為異步RPC調用的流程圖;
[0022]圖7為本發明實施例提供的移動終端游戲自動測試裝置實施例一的結構示意圖;
[0023]圖8為本發明實施例提供的移動終端游戲自動測試裝置實施例二的結構示意圖。
【具體實施方式】
[0024]為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其它實施例,都屬于本發明保護的范圍。
[0025]在對移動終端上游戲進行自動測試時,需要將移動終端與一臺用于測試的測試終端連接,在測試終端上安裝與移動終端相匹配的測試工具,并按照所需測試的游戲性能編寫相應的測試用例,通過與移動終端相匹配的測試工具完成測試用例中需要測試的各操作,并在測試終端上獲取移動終端上游戲進程運行時的各種測試數據。
[0026]目前在對移動終端上游戲進行自動測試時,測試用例是按照游戲當前開發的UI編寫的,測試終端通過測試工具對游戲進程進行的操作也都是根據測試用例中描述的UI控件的位置,測試終端通過圖像匹配識別的方式識別游戲進程中UI控件的位置,并對移動終端的觸控屏幕進行模擬觸碰操作。但是在游戲開發過程中,UI迭代頻率很大,為了保證游戲的新鮮度,在游戲的版本更新過程中,UI也會發生迭代更新。而一旦游戲的UI發生了變化,上述自動測試方法中的測試用例則需要重新編寫,導致測試用例的維護成本很高,也影響開發進度。
[0027]為了解決對移動終端上游戲的自動測試中存在的問題,本發明實施例提供一種移動終端游戲自動測試方法、裝置和系統,通過在移動終端和測試終端之間建立連接,測試終端通過遠程過程調用協議(Remote Procedure Call Protocol,RPC)獲取移動終端上的游戲進程的UI代碼層信息,并根據獲取到的UI代碼層信息對移動終端的游戲進程進行操作,測試終端在此過程中獲取游戲進程在運行過程中的相關數據,從而完成對移動終端上游戲的測試。避免對測試用例的頻繁維護。
[0028]在本發明實施例中,測試終端可以為臺式電腦、筆記本電腦等,移動終端可以為手機、平板電腦等便攜式移動終端。
[0029]圖1為本發明實施例提供的移動終端游戲自動測試方法實施例一的流程圖,如圖1所示,本實施例的方法包括:
[0030]步驟SlOl,測試終端通過RPC調用移動終端上游戲進程的UI接口,獲取游戲進程UI控件代碼層的信息。
[0031]具體地,本實施例提供的移動終端游戲自動測試方法中,在測試終端和移動終端之間建立一個用于進行RPC調用的連接,測試終端可以通過RPC調用移動終端上游戲進程的UI接口,通過該UI接口,測試終端可以獲取游戲進程UI控件代碼層的信息。通過UI代碼層的信息確定UI控件的位置相比于通過圖像匹配的方式確定UI控件的位置更加準確和穩定。
[0032]該游戲進程UI控件代碼層的信息例如是游戲進程的UI控件的位置、大小、類型、控件標識、名稱、所屬界面等信息。
[0033]步驟S102,測試終端按照預設測試移動終端游戲自動測試方法中腳本,根據UI控件代碼層的信息控制移動終端在屏幕界面進行模擬觸碰操作。
[0034]具體地,在測試終端中,需要事先編寫好對移動終端上游戲的自動測試用例腳本,測試終端在獲取到游戲進程UI代碼層信息后,即可根據自動測試用例腳本中描述的各項操作,控制移動終端在屏幕界面上進行模擬觸碰操作,從而實現對移動終端上游戲的自動測試。該模擬觸碰操作例如可以是點擊、拖曳、圖像截屏等操作。
[0035]由于通過UI代碼層的信息確定的UI控件的位置相比于通過圖像匹配的方式確定的UI控件的位置更加準確和穩定,因此通過UI代碼層的信息控制移動終端在屏幕界面上進行模擬觸碰操作也更加準確。在移動終端游戲畫面越來越豐富的情況下,通過上述方法將能夠完成對移動終端上游戲的更精確測試。
[0036]步驟S103,測試終端通過RPC獲取游戲進程在運行過程中的測試數據。
[0037]具體地,在測試終端控制移動終端在屏幕上進行模擬觸碰操作后,移動終端上的游戲進程將進行相應的反應,此時,測試終端可以在測試終端和移動終端之間用于進行RPC調用的連接上,通過RPC獲取游戲進程在運行過程中的相應測試數據。
[0038]在實施通過RPC獲取游戲進程UI控件代碼層的信息,并依次執行測試終端中預設的自動測試方法中腳本的步驟后,測試終端通過RPC獲取的所有測試數據即為本次自動測試的測試結果。通過分析這些測試數據即可得到移動終端上游戲的性能。
[0039]本實施例提供的移動終端游戲自動測試方法中,測試終端通過RPC調用移動終端上游戲進程的UI接口,獲取游戲進程UI控件代碼層的信息,并按照預設測試腳本,根據UI控件代碼層的信息控制移動終端在屏幕界面進行模擬觸碰操作,從而可以通過RPC獲取游戲進程在運行過程中的測試數據,完成對移動終端上游戲的自動測試,由于測試終端控制移動終端在屏幕界面上進行模擬操作的UI控件信息是通過RPC獲取的UI控件代碼層信息,因此本實施例提供的移動終端游戲自動測試方法可以精確地對移動終端進行模擬觸碰操作,從而提高對移動終端上游戲進行自動測試的精度,能夠適應移動終端上游戲UI越來越復雜的發展趨勢。
[0040]圖2為本發明實施例提供的移動終端游戲自動測試方法實施例二的流程圖,如圖2所示,本實施例的方法包括:
[0041]步驟S201,測試終端通過RPC調用移動終端上游戲進程的UI接口,獲取游戲進程UI控件代碼層的信息;所述測試終端按照預設測試移動終端游戲自動測試方法中腳本,根據UI控件代碼層的信息控制移動終端在屏幕界面進行模擬觸碰操作。
[0042]步驟S202,測試終端通過RPC調用移動終端上游戲進程的調試接口,控制游戲進程執行測試腳本中的測試邏輯指令。
[0043]步驟S203,測試終端通過RPC獲取游戲進程在運行過程中的測試數據。
[0044]在圖1所示實施例中,測試終端可以通過RPC調用,獲取移動終端上游戲進程UI控件代碼層的信息,并通過模擬觸碰操作的方式對游戲進程進行控制。但這種方式僅能模擬用戶在移動終端上對游戲的操作,對游戲進程進行簡單測試。而移動終端上的游戲內容越來越豐富,游戲的操作越來越復雜,僅依靠模擬觸碰操作的方式可能無法對游戲進行全面的測試。例如在三維(3Dimens1ns,3d)即時戰斗游戲中,需要控制游戲中的角色進入副本關卡,再移動到有怪物的地方,然后通過點擊屏幕來控制游戲中的角色進行戰斗。對這樣復雜的測試而言,僅通通過模擬觸碰方式在移動終端的屏幕界面上進行操作是難以完成的。
[0045]因此,本實施例提供的移動終端游戲自動測試方法在圖1所示實施例的基礎上,進一步地,測試終端還可以通過RPC調用移動終端上游戲進程的調試接口,通過該調試接口向游戲進程發送測試邏輯指令,使游戲進程完成相應的邏輯處理。其中,測試終端是向游戲進程發送的測試邏輯指令是測試終端中的測試腳本中預設好的。通過游戲進程的調試接口,可以直接對游戲進程進行邏輯控制,使游戲進程完成一些很難通過觸碰操作完成的功能,或者是無法通過觸碰操作完成的功能。這樣就可以豐富對游戲進行自動測試的測試內容,能夠完成對多重度游戲復雜的自動測試需求。
[0046]具體而言,在不同的游戲類型中,測試終端控制游戲進程執行的測試邏輯指令,可以為不同內容。例如在角色扮演類游戲中,測試終端可以通過調用游戲調試接口調用修改游戲內主角的各種屬性,包括等級、經驗值、金錢等;在闖關類游戲中,測試終端可以通過調用游戲調試接口調用開啟任意條件類型的戰斗關卡、在關卡內創建所需怪物類型的怪物等。再結合圖1所示實施例中所示的通過RPC調用移動終端上游戲進程的UI接口,獲取游戲進程UI控件代碼層的信息,并根據UI控件代碼層的信息控制移動終端在屏幕界面進行模擬觸碰操作。從而可以在通過測試邏輯指令調用修改后的游戲進程中完成模擬用戶觸碰操作的測試。
[0047]而目前針對移動終端游戲的各種自動測試方案中,僅能基于屏幕的坐標信息實現模擬觸碰操作完成自動測試。對于一些復雜的測試需求,例如測試游戲中角色與特定怪物的對戰結果,目前基于屏幕坐標信息模擬觸碰操作的自動測試方案需要控制游戲中角色耗費較長時間在游戲中尋找特定怪物,才能完成該測試,而一般對于這種對戰結果的測試需要重復執行多次,那么基于屏幕坐標信息模擬觸碰操作的自動測試方案需要耗費較多時間在尋找特定怪物上,測試效率很低。而通過調試接口向游戲進程發送測試邏輯指令,可以在游戲進程中主動創建所需的特定怪物,從僅需通過模擬觸碰操作控制游戲中角色與該創建的特定怪物對戰,即可得到對戰結果。根據測試需求重復多次創建該特定怪物,那么僅需重復控制游戲角色與該特定怪物對戰即可完成對該對戰結果的測試,這將能夠節約尋找特定怪物的時間,大大提高了測試效率。
[0048]為了實現圖1或圖2所示實施例提供的移動終端游戲自動測試方法,在測試終端和移動終端之間需要建立相應的連接。由于測試終端要通過RPC調用移動終端上游戲進程的UI接口以及獲取游戲進程在運行過程中的測試數據,或者通過RPC調用移動終端上游戲進程的調試接口。因此在測試終端和移動終端之間,需要建立一個支持RPC的連接。另外,測試終端還需要根據UI控件代碼層的信息控制移動終端在屏幕界面進行模擬觸碰操作,而通過RPC是無法完成控制移動終端進行模擬觸碰操作的,那么就還需要在測試終端和移動終端之間建立支持控制移動終端在屏幕界面進行模擬觸碰操作的連接。
[0049]在本發明實施例中,在測試終端和移動終端之間建立兩個連接,分別是傳輸控制協議(Transmiss1n Control Protocol,TCP)連接和有線數據連接。其中由于在測試過程中,測試終端和移動終端之間需要通過RPC頻繁交互數據,因此需要測試終端和移動終端之間的連接可靠。而TCP連接在建立后,可以一直保持連接狀態,在測試過程中通過TCP連接傳輸數據可以保證數據不丟失。因此在本實施例中,測試終端和移動終端之間的RPC調用都可以在TCP連接上進行。
[0050]而在測試終端和移動終端之間建立有線數據連接是由于目前的移動終端操作系統開發商都提供了相應的調試工具包,例如蘋果公司的1s系統采用開源工具appium,谷歌公司的Android系統采用官方工具adb。測試終端可以通過測試終端和移動終端之間的有線數據連接對移動終端的屏幕界面進行模擬觸碰操作。一般地,該有線數據連接為通用串行數據總線(Universal Serial Bus,USB)連接,本發明下述各實施例中也以有線數據連接為USB連接為例進行說明。因此在測試終端和移動終端之間建立有線數據連接后,并在測試終端上安裝與移動終端的操作系統相對應的調試工具包,測試終端即可實現根據UI控件代碼層的信息控制移動終端在屏幕界面進行模擬觸碰操作。需要說明的是,測試終端上進行自動測試所使用的測試腳本也需要根據移動終端操作系統對應的調試工具包編寫。
[0051]再考慮到TCP連接是基于固定IP的連接,而測試終端和移動終端的IP地址是通過其連接的路由器獲取的。但在通過TCP連接進行RPC調用時,需要測試終端和移動終端都具有固定的IP地址,因此在建立測試終端和移動終端之間的TCP連接時,需要在另一臺固定IP地址的服務器上搭建一個TCP網絡服務器模塊。測試終端和移動終端上均配置有TCP網絡客戶端模塊,這樣測試終端和移動終端即可通過服務器上的TCP網絡服務器模塊實現TCP連接。固IP地址的TCP網絡服務器管理測試終端和移動終端的網絡連接,管理雙方的通信,并完成對雙方通信網絡包的轉發。
[0052]在圖1或圖2所示實施例中,測試終端在控制移動終端上的游戲進程執行了相應操作后,將通過RPC獲取游戲進程在運行過程中的測試數據。而這個測試數據可以包括:游戲進程在運行過程中的性能參數以及游戲進程在運行過程中的相關信息。
[0053]其中,游戲進程在運行過程中的性能參數包括:游戲進程在運行過程中的幀率、內存占用、游戲渲染面片數、游戲渲染貼圖數、三角面片數。在測試終端的測試腳本中,可以設置一些判斷條件,可根據獲取到的性能參數確定下一步所執行的操作。同時,該性能參數也同時保存至內存中,當測試腳本執行完畢,測試終端將獲取到的性能參數保存至后臺數據庫,以便測試人員在前臺查看相關測試結果。
[0054]游戲進程在運行過程中的相關信息,包括:游戲進程在運行過程中的備份信息和/或游戲進程在運行過程中的截圖。游戲進程在運行過程中產生的備份(dump)信息也可以通過RPC發送給測試終端,測試終端將該備份信息保存至內存中,備份信息是測試的重要參考數據。當測試腳本執行完畢,測試終端將獲取到的備份信息保存至后臺數據庫,以便測試人員在前臺查看相關測試結果。測試過程中測試終端通過移動終端屏幕操作工具提供的調用接口可獲取移動終端的屏幕截圖,測試終端可以將獲取到的屏幕截圖保存到測試中斷本地存儲器。當測試腳本執行完畢,測試終端將獲取到的屏幕截圖保存至后臺數據庫,以便測試人員在前臺查看相關測試結果。
[0055]也就是說,在測試腳本執行完畢后,測試中斷可以將在測試過程中收集到的測試數據,包括性能參數、備份信息、屏幕截圖等均保存至后臺數據庫,那么測試人員可以通前臺查看這些測試結果,從而確定游戲進程測試的結果。測試終端可以通過超文本傳輸協議(HyperText Transfer Protocol,HTTP)請求將測試數據發送至萬維網(web)后臺數據庫,從而使測試人員通過web前臺查看相關測試結果。
[0056]根據測試腳本對游戲進程進行測試的不同測試操作需求,可以將測試腳本的操作分為同步調用操作和異步調用操作。其中同步調用操作是指在該操作執行后,測試終端接收到游戲進程對于該操作的響應消息后,才可執行該操作的后續操作。而異步調用操作是指在該操作執行后,測試終端無需等待接收游戲進程對于該操作的響應消息,而可以繼續執行該操作的后續操作。
[0057]具體地,對于測試終端按照預設測試腳本,根據UI控件代碼層的信息控制移動終端的屏幕界面進行模擬觸碰操作而言。若游戲進程UI控件代碼層的信息對應的腳本操作為同步調用操作,則在測試終端根據UI控件代碼層的信息控制移動終端在屏幕界面進行模擬觸碰操作時,測試終端暫停控制移動終端執行測試腳本中所述同步調用操作后的操作,直到測試終端通過RPC獲取所述同步調用操作的返回消息。若游戲進程UI控件代碼層的信息對應的腳本操作為異步調用操作,則在測試終端根據UI控件代碼層的信息控制移動終端在屏幕界面進行模擬觸碰操作時,測試終端繼續控制移動終端執行測試腳本中所述異步調用操作后的操作。
[0058]對于測試終端通過RPC調用移動終端上游戲進程的調試接口,控制游戲進程執行測試腳本中的測試邏輯指令而言。若測試邏輯指令對應的腳本操作為同步調用操作,則在測試終端控制游戲進程執行測試腳本中的測試邏輯指令時,測試終端暫停控制移動終端執行測試腳本中所述同步調用操作后的操作,直到測試終端通過RPC獲取同步調用操作的返回消息。若測試邏輯指令對應的腳本操作為異步調用操作,則在測試終端控制游戲進程執行測試腳本中的測試邏輯指令時,測試終端繼續控制移動終端執行測試腳本中異步調用操作后的操作。
[0059]上述同步調用操作例如是在闖關類游戲中,測試終端通過RPC調用移動終端上游戲進程的調試接口,開啟游戲中的關卡。而測試終端中的測試腳本中下一步的操作應是對應于游戲角色在開啟后的關卡中的行動,那么測試終端就需要等待游戲進程通過RPC返回關卡開啟成功的響應消息后,才能繼續執行測試腳本中的后續操作,否則測試腳本的執行將出現錯誤。
[0060]上述異步調用操作例如是測試終端需要通過RPC周期性獲取游戲進行運行過程中的性能參數,而在此過程中,測試腳本的后續操作不會由于性能參數未返回而產生影響。那么測試終端就可以繼續執行測試腳本中的后續操作。
[0061]上述各實施例對本發明提供的移動終端游戲自動測試方法進行了概括性說明,下面以一個具體實施例對本發明提供移動終端游戲自動測試方法進行進一步說明。
[0062]圖3為本發明實施例提供的移動終端游戲自動測試方法實施例三的流程圖。
[0063]在執行本實施例所示移動終端游戲自動測試方法之前,需要在測試終端上進行相應配置。首先,需要在測試終端上編寫測試腳本,測試腳本一般以腳本語言實現,例如采用python腳本語言編寫。并且需要在測試終端上配置與需測試移動終端對應的調試工具包。若待測試的移動終端采用Android系統,則需要在測試終端上安裝Android官方提供的調試工具包ADB工具;若待測試的移動終端采用1S系統,那么測試終端的操作系統必須為Mac系統,并安裝好開源調試工具appium。無論是ADB工具還是appium工具,都有相應的python庫可以安裝,并提供調試接口供測試腳本調用。調試工具可實現的主要功能包括:測試終端屏幕的點擊、拖曳、圖像截屏,游戲進程啟動、關閉。
[0064]另外,還需要在固定IP的服務器上搭建一個TCP網絡服務器模塊,該TCP網絡服務器模塊用于為測試終端和移動終端提供TCP連接服務。
[0065]游戲軟件的調試(debug)版都會允許在游戲代碼內加入調試模塊,調試模塊主要是實現一些調試和測試輔助功能邏輯結構。在本實施例中,游戲軟件代碼調試模塊中需要加入一個TCP網絡客戶端(c I i ent)模塊。在游戲軟件啟動時,TCP網絡客戶端模塊就會啟動并與固定IP的服務器上的TCP網絡服務器模塊建立連接。
[0066]另外,還需要將測試終端與移動終端通過USB接口連接。
[0067]圖4為本實施例提供的移動終端游戲自動測試方法的系統拓撲結構示意圖。如圖所示,測試用例41為測試終端上實現自動測試的功能模塊。其中包括測試腳本模塊42、TCP客戶端模塊43和調試工具命令接口庫模塊44。游戲進程45在測試終端上運行,包括調試模塊46、TCP客戶端模塊47和設備消息響應模塊48。測試用例41中的TCP客戶端模塊43和游戲進程45中的TCP客戶端模塊47通過TCP服務器49建立TCP連接。測試用例41中的調試工具命令接口庫模塊44通過測試終端上安裝的調試工具包40與游戲進程中的設備消息響應模塊48建立USB連接。
[0068]如圖所示,本實施例提供的移動終端游戲自動測試方法包括:
[0069]步驟S301,在測試終端和移動終端之間建立USB連接和TCP連接。
[0070]其中,只要測試終端和移動終端之間通過USB接口連接,即可建立USB連接。測試終端和移動終端之間通過固定IP的服務器建立TCP連接。在測試終端上,測試用例41執行兩個進程,一個是用于測試用例41中測試腳本執行的主進程,另一個是測試用例41與游戲進程進行通信的TCP網絡客戶端線程。
[0071 ] 步驟S302,測試終端進行測試腳本初始化工作,啟動TCP客戶端模塊43,通過TCP客戶端模塊43連接TCP服務器49,并通過調試工具包40啟動移動終端上的游戲進程45。
[0072]當移動終端上的游戲進程45啟動后,游戲進程45中的TCP客戶端模塊47就會啟動,并通過TCP客戶端模塊47連接TCP服務器49。
[0073]步驟S303,測試終端和移動終端之間通過TCP服務器綁定通信關系。
[0074]測試用例41中的TCP客戶端模塊43連接上TCP服務器49后,TCP客戶端模塊43發送測試用例41相應的標識給TCP服務器49標識此TCP客戶端模塊43為測試用例41,完成在TCP服務器49上的注冊登錄。游戲進程45中的TCP客戶端模塊47連接上TCP服務器49后,TCP客戶端模塊47發送游戲進程45相應的標識給TCP服務器49標識此TCP客戶端模塊47為游戲進程45,發送游戲進程45所在移動終端的唯一標識設備序列號(Unique Device Identifier,UDID)給TCP服務器49,完成在TCP服務器49上的注冊登錄,TCP服務器49建立UDID和TCP客戶端模塊47的字典索引。測試用例41中的TCP客戶端模塊43登錄后周期性向TCP服務器49發送要通信綁定的移動終端的UDID標識,TCP服務器49收到通信綁定請求后通過請求的UDID標識索引游戲進程45中的TCP客戶端模塊47,索引不到則表示游戲進程45中的TCP客戶端模塊47尚未連接上TCP服務器49,回復測試用例41中的TCP客戶端模塊43綁定通信失敗消息。測試用例41中的TCP客戶端模塊43收到綁定失敗消息繼續周期性發送綁定請求。游戲進程45中的TCP客戶端模塊47登錄TCP服務器49后,TCP服務器49收到綁定請求,通過UDID索引到游戲進程45中的TCP客戶端模塊47后,在測試用例41和游戲進程45之間建立通信綁定關系,開通測試用例41中的TCP客戶端模塊43和游戲進程45中的TCP客戶端模塊47間的通信。
[0075]步驟S304,測試終端執行自動測試流程。
[0076]自動測試過程中,測試用例41通過TCP客戶端模塊43周期性向游戲進程45發送RPC請求,請求游戲進程發送游戲進程45運行過程中的關鍵性能參數,包括游戲進程45當前內存占用、運行幀率、貼圖數、三角面片數等性能參數。游戲進程45運行過程中只要檢測到產生dump信息,測試用例41就通過RPC調用相關收集dump信息的接口,測試用例41收集保存dump信息。
[0077]測試腳本模塊42通過TCP客戶端模塊43發送RPC請求給游戲進程45獲取當前UI各控件信息,包括控件位置、大小、類型、控件標識、名稱、所屬界面等。測試腳本模塊42判斷游戲進程45當前UI控件信息,根據測試監本中的測試邏輯執行移動終屏幕上的觸碰操作,觸碰操作的實現通過測試腳本模塊42調用調試工具包40操作移動終端屏幕界面,界面操作包括點擊、拖拽等。調試工具包40還可以截取當前移動終端屏幕圖像,測試腳本模塊42測試過程可以根據需要采集當前游戲屏幕截圖,作為測試參考數據。
[0078]測試腳本模塊42還可通過TCP客戶端模塊43發送RPC請求給游戲進程45調用游戲調試接口,通過讓游戲進程45執行相關調試測試指令邏輯,輔助實現自動測試流程。
[0079]本實施例中所有測試用例41和游戲進程45間的通信全部以RPC的方式調用雙方的函數接口實現。本實施例中RPC調用方式分為兩種:
[0080]一種是同步RPC調用。測試用例41的測試腳本模塊42調用RPC函數請求調用游戲進程45中調試接口,RPC函數接口必須等到游戲進程45返回RPC請求回復后,RPC函數的執行才返回結束,否則在超時時間范圍內測試腳本執行過程被中斷,并一直輪詢等待RPC請求回復,超出超時時間還未收到回復則認為是游戲測試過程發生異常。
[0081 ]圖5為同步RPC調用的流程圖,具體的同步RPC實施步驟包括:
[0082] 步驟S501,測試用例中的測試腳本調用RPC接口,傳入要調用的游戲進程調試接口名和調用參數,發送RPC請求,然后中斷用例執行線程,定時輪詢RPC回復消息。
[0083 ] 步驟S502,RPC調用請求內容通過網絡發包協議處理生成網絡協議包。
[0084]步驟S503,網絡包通過網絡模塊發送給后臺TCP服務器。
[0085]步驟S504,TCP服務器轉發網絡包給游戲進程。
[0086]步驟S505,游戲進程里的網絡模塊將收到的網絡包進行收包協議處理。
[0087]步驟S506,收包處理解析出協議中要調用的游戲進程調用接口和參數,調用相應的調試接口。
[0088]步驟S507,調試接口執行相應的調試內容,并按接口要求返回回復信息。
[0089]步驟S508,回復信息通過網絡發包協議處理生成網絡協議包。
[0090]步驟S509,網絡包通過網絡模塊發送給后臺TCP服務器。
[0091 ]步驟S510,TCP服務器轉發網絡包給測試用例。
[0092]步驟S511,測試用例里的網絡模塊收到網絡包進行收包協議處理。
[0093]步驟S512,收包處理解析出協議中RPC返回消息,RPC調用接口收到返回消息,結束輪詢,恢復線程執行。
[0094]另一種是異步調用。測試用例41的測試腳本模塊42調用RPC函數請求調用游戲進程中調試接口,RPC函數調用游戲進程調試接口后,等待回復事件加入回復等待列表,RPC函數接口馬上結束返回,測試用例41執行線程繼續執行。
[0095]圖6為異步RPC調用的流程圖,具體的異步RPC實施步驟包括:
[0096]步驟S601,發送RPC請求,將本次請求的回復回調事件加入RPC回復等待隊列。
[0097]步驟S602,測試用例中的測試腳本調用RPC接口,傳入要調用的游戲進程調試接口名和調用參數,發送RPC請求,發送完請求,RPC調用接口馬上返回。
[0098]步驟S603?S612與步驟S502?S511步驟內容一致。
[0099]S6013,收包處理解析出協議中RPC返回消息,在消息回復隊列里回調對應的消息回調接口,處理消息回復操作。
[0100]本實施例中常用的同步RPC調用包括:測試用例41中的測試腳本模塊42向游戲進程45查詢當前UI界面信息、游戲內角色數據、當前副本游戲進度、關卡內戰斗勝敗等。本實施例中常用的異步RPC調用包括:測試用例41周期性向游戲進程45請求返回性能參數數據、一些游戲進程45調試接口進行輔助測試的調用等。
[0101 ] 步驟S305,測試用例41中的測試腳本模塊42中的測試腳本執行完后,測試腳本模塊42調用調試工具包40關閉游戲進程接口,關閉游戲進程45。
[0102]游戲進程45結束,測試用例41與游戲進程45斷開網絡通信連接。測試用例41停止收集游戲進程性能參數數據和dump信息。測試用例41整理測試過程收集到的運行日志、性能參數、游戲截圖、dump信息,并通過http請求發送到web后臺服務器數據庫保存,保存完畢即可在web前臺查看到測試數據。
[0103]本發明例提供的移動設備游戲自動測試方法,通過TCP網絡通信方式提供了測試終端上的測試用例和移動終端上的游戲進程所間的RPC相互調用,實現了測試用例和游戲進程之間在游戲邏輯上的信息交互,可以適應更多重度游戲需求復雜的自動測試需求。本發明同時支持傳統的自動測試方法里對游戲界面進行操作的測試方式,并且本發明實施例中的進行界面操作時的參考信息來自RPC請求獲取游戲進行游戲UI界面邏輯信息,相比僅使用圖像匹配方式的UI界面信息獲取方式在測試過程中更準確和穩定。本實施例同時支持在測試過程中通過RPC請求實時獲取游戲進程中性能參數信息和dump信息,能直接從游戲進程獲取重要的測試輔助信息,協助測試結果的判斷。
[0104]圖7為本發明實施例提供的移動終端游戲自動測試裝置實施例一的結構示意圖,如圖7所示,本實施例提供的移動終端游戲自動測試裝置包括:
[0105]RPC調用模塊71,用于通過RPC調用移動終端上游戲進程的UI接口,獲取所述游戲進程UI控件代碼層的信息。
[0106]測試執行模塊72,用于所述測試終端按照預設測試腳本,根據所述UI控件代碼層的信息控制所述移動終端在屏幕界面進行模擬觸碰操作。
[0107]RPC調用模塊71還用于通過RPC獲取所述游戲進程在運行過程中的測試數據。
[0108]本實施例提供的移動終端游戲自動測試裝置用于執行圖1所示實施例的方法步驟,其實現原理和技術效果類似,此處不再贅述。
[0109]進一步地,在圖7所示實施例的基礎上,RPC調用模塊71,還用于通過RPC調用所述移動終端上游戲進程的調試接口,控制所述游戲進程執行所述測試腳本中的測試邏輯指令。
[0110]圖8為本發明實施例提供的移動終端游戲自動測試裝置實施例二的結構示意圖,本實施例提供的移動終端游戲自動測試裝置在圖7的基礎上,還包括連接建立模塊73。
[0111]連接建立模塊73,用于與所述移動終端建立TCP連接以及有線數據連接。
[0112]RPC調用模塊71,具體用于在所述TCP連接上通過RPC調用所述移動終端上游戲進程的UI接口 ;在所述TCP連接上通過RPC調用所述移動終端上游戲進程的調試接口 ;
[0113]測試執行模塊72,具體用于按照預設測試腳本,在所述有線數據連接上根據所述UI控件代碼層的信息控制所述移動終端在屏幕界面進行模擬觸碰操作。
[0114]進一步地,在圖8所示實施例的基礎上,連接建立模塊73,具體用于和所述移動終端通過固定IP的服務器建立TCP連接。
[0115]進一步地,在圖7或圖8所示實施例的基礎上,測試執行模塊72,具體用于使用與所述移動終端匹配的調試工具,按照預設測試腳本,根據所述UI控件代碼層的信息控制所述移動終端在屏幕界面進行模擬觸碰操作。
[0116]進一步地,在圖7或圖8所示實施例的基礎上,測試執行模塊72,具體用于若所述游戲進程UI控件代碼層的信息對應的腳本操作為同步調用操作,則在根據所述UI控件代碼層的信息控制所述移動終端在屏幕界面進行模擬觸碰操作時,暫停控制所述移動終端執行所述測試腳本中所述同步調用操作后的操作,直到所述測試終端通過RPC獲取所述同步調用操作的返回消息;若所述游戲進程UI控件代碼層的信息對應的腳本操作為異步調用操作,則在根據所述UI控件代碼層的信息控制所述移動終端在屏幕界面進行模擬觸碰操作時,繼續控制所述移動終端執行所述測試腳本中所述異步調用操作后的操作。
[0117]進一步地,在圖7或圖8所示實施例的基礎上,測試執行模塊72,具體用于若所述測試邏輯指令對應的腳本操作為同步調用操作,則在控制所述游戲進程執行所述測試腳本中的測試邏輯指令時,暫停控制所述移動終端執行所述測試腳本中所述同步調用操作后的操作,直到所述測試終端通過RPC獲取所述同步調用操作的返回消息;若所述測試邏輯指令對應的腳本操作為異步調用操作,則在控制所述游戲進程執行所述測試腳本中的測試邏輯指令時,繼續控制所述移動終端執行所述測試腳本中所述異步調用操作后的操作。
[0118]進一步地,在圖7或圖8所示實施例的基礎上,所述游戲進程在運行過程中的測試數據,包括:所述測試終端通過RPC獲取所述游戲進程在運行過程中的性能參數和/或所述游戲進程在運行過程中的相關信息。
[0119]進一步地,在圖7或圖8所示實施例的基礎上,所述游戲進程在運行過程中的性能參數,包括:所述游戲進程在運行過程中的幀率、內存占用、游戲渲染面片數、游戲渲染貼圖數、三角面片數。所述游戲進程在運行過程中的相關信息,包括:所述游戲進程在運行過程中的備份信息和/或所述游戲進程在運行過程中的截圖。
[0120]進一步地,在圖7或圖8所示實施例的基礎上,所述UI控件代碼層的信息包括:所述游戲進程的UI控件的位置、大小、類型、控件標識、名稱、所屬界面。
[0121 ]進一步地,在圖7或圖8所示實施例的基礎上,本實施例提供的移動終端游戲自動測試裝置還可以包括數據發送模塊,用于將所述游戲進程在運行過程中的測試數據發送至后臺數據庫,所述后臺數據庫用于保存從前臺查看的測試數據。數據發送模塊與RPC調用模塊71和測試執行模塊72,分別連接。
[0122]最后應說明的是:以上各實施例僅用以說明本發明的技術方案,而非對其限制;盡管參照前述各實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的范圍。
【主權項】
1.一種移動終端游戲自動測試方法,其特征在于,包括: 測試終端通過遠程過程調用協議RPC調用移動終端上游戲進程的用戶界面UI接口,獲取所述游戲進程UI控件代碼層的信息;所述測試終端按照預設測試腳本,根據所述UI控件代碼層的信息控制所述移動終端在屏幕界面進行模擬觸碰操作;所述測試終端通過RPC獲取所述游戲進程在運行過程中的測試數據。2.根據權利要求1所述的方法,其特征在于,還包括: 所述測試終端通過RPC調用所述移動終端上游戲進程的調試接口,控制所述游戲進程執行所述測試腳本中的測試邏輯指令。3.根據權利要求1或2所述的方法,其特征在于,所述測試終端通過RPC調用移動終端上游戲進程的UI接口之前,還包括: 所述測試終端與所述移動終端建立傳輸控制協議TCP連接以及有線數據連接; 所述測試終端通過RPC調用移動終端上游戲進程的UI接口,包括: 所述測試終端在所述TCP連接上通過RPC調用所述移動終端上游戲進程的UI接口; 所述測試終端通過RPC調用移動終端上游戲進程的調試接口,包括: 所述測試終端在所述TCP連接上通過RPC調用所述移動終端上游戲進程的調試接口;所述測試終端按照預設測試腳本,根據所述UI控件代碼層的信息控制所述移動終端在屏幕界面進行模擬觸碰操作,包括: 所述測試終端按照預設測試腳本,在所述有線數據連接上根據所述UI控件代碼層的信息控制所述移動終端在屏幕界面進行模擬觸碰操作。4.根據權利要求3所述的方法,其特征在于,所述測試終端與所述移動終端建立TCP連接,包括: 所述測試終端和所述移動終端通過固定IP的服務器建立TCP連接。5.根據權利要求1所述的方法,其特征在于,所述測試終端按照預設測試腳本,根據所述UI控件代碼層的信息對所述移動終端屏幕界面進行模擬觸碰操作,包括: 所述測試終端使用與所述移動終端匹配的調試工具,按照預設測試腳本,根據所述UI控件代碼層的信息控制所述移動終端在屏幕界面進行模擬觸碰操作。6.根據權利要求1所述的方法,其特征在于,所述測試終端按照預設測試腳本,根據所述UI控件代碼層的信息控制所述移動終端的屏幕界面進行模擬觸碰操作,包括: 若所述游戲進程UI控件代碼層的信息對應的腳本操作為同步調用操作,則在所述測試終端根據所述UI控件代碼層的信息控制所述移動終端在屏幕界面進行模擬觸碰操作時,所述測試終端暫停控制所述移動終端執行所述測試腳本中所述同步調用操作后的操作,直到所述測試終端通過RPC獲取所述同步調用操作的返回消息; 若所述游戲進程UI控件代碼層的信息對應的腳本操作為異步調用操作,則在所述測試終端根據所述UI控件代碼層的信息控制所述移動終端在屏幕界面進行模擬觸碰操作時,所述測試終端繼續控制所述移動終端執行所述測試腳本中所述異步調用操作后的操作。7.根據權利要求2所述的方法,其特征在于,所述測試終端通過RPC調用移動終端上游戲進程的調試接口,控制所述游戲進程執行所述測試腳本中的測試邏輯指令,包括: 若所述測試邏輯指令對應的腳本操作為同步調用操作,則在所述測試終端控制所述游戲進程執行所述測試腳本中的測試邏輯指令時,所述測試終端暫停控制所述移動終端執行所述測試腳本中所述同步調用操作后的操作,直到所述測試終端通過RPC獲取所述同步調用操作的返回消息; 若所述測試邏輯指令對應的腳本操作為異步調用操作,則在所述測試終端控制所述游戲進程執行所述測試腳本中的測試邏輯指令時,所述測試終端繼續控制所述移動終端執行所述測試腳本中所述異步調用操作后的操作。8.根據權利要求1?7任一項所述的方法,其特征在于,所述游戲進程在運行過程中的測試數據,包括:所述測試終端通過RPC獲取所述游戲進程在運行過程中的性能參數和/或所述游戲進程在運行過程中的相關信息。9.根據權利要求8所述的方法,其特征在于,所述游戲進程在運行過程中的性能參數,包括:所述游戲進程在運行過程中的幀率、內存占用、游戲渲染面片數、游戲渲染貼圖數、三角面片數; 所述游戲進程在運行過程中的相關信息,包括:所述游戲進程在運行過程中的備份信息和/或所述游戲進程在運行過程中的截圖。10.根據權利要求1?7任一項所述的方法,其特征在于,所述UI控件代碼層的信息包括:所述游戲進程的UI控件的位置、大小、類型、控件標識、名稱、所屬界面。11.根據權利要求1?7任一項所述的方法,其特征在于,還包括:所述測試終端將所述游戲進程在運行過程中的測試數據發送至后臺數據庫,所述后臺數據庫用于保存從前臺查看的測試數據。12.一種移動終端游戲自動測試裝置,其特征在于,包括: 遠程過程調用協議RPC調用模塊,用于通過RPC調用移動終端上游戲進程的用戶界面UI接口,獲取所述游戲進程UI控件代碼層的信息; 測試執行模塊,用于所述測試終端按照預設測試腳本,根據所述UI控件代碼層的信息控制所述移動終端在屏幕界面進行模擬觸碰操作; 所述RPC調用模塊還用于通過RPC獲取所述游戲進程在運行過程中的測試數據。13.根據權利要求12所述的裝置,其特征在于,所述RPC調用模塊還用于通過RPC調用所述移動終端上游戲進程的調試接口,控制所述游戲進程執行所述測試腳本中的測試邏輯指令。14.根據權利要求13所述的裝置,其特征在于,還包括:連接建立模塊,用于與所述移動終端建立傳輸控制協議TCP連接以及有線數據連接; 所述RPC調用模塊,具體用于在所述TCP連接上通過RPC調用所述移動終端上游戲進程的UI接口 ;在所述TCP連接上通過RPC調用所述移動終端上游戲進程的調試接口 ; 所述測試執行模塊,具體用于按照預設測試腳本,在所述有線數據連接上根據所述UI控件代碼層的信息控制所述移動終端在屏幕界面進行模擬觸碰操作。15.根據權利要求14所述的裝置,其特征在于,所述連接建立模塊,具體用于和所述移動終端通過固定IP的服務器建立TCP連接。16.根據權利要求12所述的裝置,其特征在于,所述測試執行模塊,具體用于使用與所述移動終端匹配的調試工具,按照預設測試腳本,根據所述UI控件代碼層的信息控制所述移動終端在屏幕界面進行模擬觸碰操作。17.根據權利要求12所述的裝置,其特征在于,所述測試執行模塊,具體用于若所述游戲進程UI控件代碼層的信息對應的腳本操作為同步調用操作,則在根據所述UI控件代碼層的信息控制所述移動終端在屏幕界面進行模擬觸碰操作時,暫停控制所述移動終端執行所述測試腳本中所述同步調用操作后的操作,直到所述測試終端通過RPC獲取所述同步調用操作的返回消息;若所述游戲進程UI控件代碼層的信息對應的腳本操作為異步調用操作,則在根據所述UI控件代碼層的信息控制所述移動終端在屏幕界面進行模擬觸碰操作時,繼續控制所述移動終端執行所述測試腳本中所述異步調用操作后的操作。18.根據權利要求13所述的裝置,其特征在于,所述測試執行模塊,具體用于若所述測試邏輯指令對應的腳本操作為同步調用操作,則在控制所述游戲進程執行所述測試腳本中的測試邏輯指令時,暫停控制所述移動終端執行所述測試腳本中所述同步調用操作后的操作,直到所述測試終端通過RPC獲取所述同步調用操作的返回消息;若所述測試邏輯指令對應的腳本操作為異步調用操作,則在控制所述游戲進程執行所述測試腳本中的測試邏輯指令時,繼續控制所述移動終端執行所述測試腳本中所述異步調用操作后的操作。19.根據權利要求12?18任一項所述的裝置,其特征在于,所述游戲進程在運行過程中的測試數據,包括:所述測試終端通過RPC獲取所述游戲進程在運行過程中的性能參數和/或所述游戲進程在運行過程中的相關信息。20.根據權利要求19所述的裝置,其特征在于,所述游戲進程在運行過程中的性能參數,包括:所述游戲進程在運行過程中的幀率、內存占用、游戲渲染面片數、游戲渲染貼圖數、三角面片數; 所述游戲進程在運行過程中的相關信息,包括:所述游戲進程在運行過程中的備份信息和/或所述游戲進程在運行過程中的截圖。21.根據權利要求12?18任一項所述的裝置,其特征在于,所述UI控件代碼層的信息包括:所述游戲進程的UI控件的位置、大小、類型、控件標識、名稱、所屬界面。22.根據權利要求12?18任一項所述的裝置,其特征在于,還包括:數據發送模塊,用于將所述游戲進程在運行過程中的測試數據發送至后臺數據庫,所述后臺數據庫用于保存從前臺查看的測試數據。
【文檔編號】G06F11/36GK105868111SQ201610186545
【公開日】2016年8月17日
【申請日】2016年3月29日
【發明人】吳煒峰
【申請人】網易(杭州)網絡有限公司