騰訊優測優分享 | 遊戲的UI自動化測試能夠這樣開展

騰訊優測是專業的自動化測試平臺,提供自動化測試-全面兼容性測試,雲真機-遠程真機租用,漏洞分析等多維度的測試服務,讓測試更簡單!框架

對於目前的兩大遊戲引擎cocos-2dx、unity3D,其UI自動化測試的技術方案都已經實現。能夠獲取、設置UI對象的各個屬性,而且能夠調用UI對象及引擎的一些方法接口,實現基於引擎的UI驅動能力。有了這些能力以後,從技術上來講已經能夠實現基於引擎的遊戲UI自動化測試。可是單純的UI驅動能力還不足以實施一個遊戲的UI自動化測試。工具

UI自動化測試通常須要知足幾個條件:UI相對穩定、操做過程及結果可預期、產品生命週期長。佈局

UI相對穩定:

是指UI元素及佈局在各個版本間變更不大,各個UI元素的關鍵屬性(特別是用於惟一標識該UI元素的屬性)保持穩定,其餘屬性能夠根據須要發生變化。由於測試腳本是直接操做這些UI元素的,若是UI不夠穩定,測試腳本就沒法定位UI元素,也沒法有效的操控UI元素。測試

操做過程及結果可預期:線程

是指交互的過程及預期結果是明確的,好比以QQ的發送文本消息功能爲例,其交互過程及預期結果都是相對明確的,即便有操做分支也是有限的,能夠很容易遍歷。這樣測試腳本的設計就比較簡單,基本是線性往下執行。若是交互過程及預期結果不明確,有太多的隨機性,會大大增長腳本的邏輯複雜度。過於複雜的腳本邏輯對於測試人員的能力要求高,並且會提升測試腳本的後期維護成本。設計

產品生命週期長:

由於UI自動化測試腳本的開發、維護成本都比較高,若是被測產品的生命週期過短,或者只發幾個版本,就會致使自動化測試的投入產出比過低。調試

基於上述UI自動化測試的要求,咱們來看看遊戲的狀況,通常的遊戲每每不具有上述條件,經常是:code

UI不穩定:UI酷炫,各類特效,每一個版本都會更新UI。對象

操做過程及結果很難預期:

遊戲戰鬥過程充斥着各類隨機性和玩家操做的不肯定性,致使預期結果須要複雜的實時計算才能夠得出,沒法提早預期。接口

生命週期短:

不少遊戲只有短短几個月的生命週期。這些因素都致使了遊戲的UI自動化測試成本過高。

確實不少遊戲不適合作UI自動化測試,可是對於一些生命週期長、收入高的遊戲投入人力作UI自動化測試仍是頗有價值的。並且隨着測試人員技能及測試工具能力的提高,一些普通遊戲也能夠開展部分UI自動化測試。

下面就如何開展遊戲UI自動化測試簡單談談一些我的的想法。

作任何UI自動化測試都要考慮投入產出比,咱們就按投入產出比來從高到低來探討下游戲的UI自動化測試如何開展。

一、功能邏輯明確模塊UI自動化

遊戲中通常只有戰鬥模塊的功能邏輯各類不肯定,其餘輔助模塊的功能邏輯都是比較明確的,好比登陸、商城、揹包、設置、社區等都跟普通的商業軟件沒有什麼區別。

針對這些模塊能夠很方便的實施UI自動化測試,並且這些輔助模塊佔遊戲的所有UI功能的比例也很高,實現UI自動化測試具備很高價值。

對於這些相對功能邏輯明確的UI模塊,實施自動化測試成本是最低的,幾乎不須要改動遊戲代碼,只須要在引擎一級簡單修改就能夠實現UI自動化測試。

二、簡單狀態機實現兼容測試UI自動化

目前針對遊戲的兼容性測試有:簡單的monkey test、事件錄製回放。可是這兩種方式有明顯的不足:

簡單的monkey test:

只是隨機的點擊UI,沒有UI元素屬性獲取能力,更沒有UI驅動能力,沒法作邏輯判斷,覆蓋的UI深度是有限的。連簡單的登陸都登陸不了,更不要說更深的UI。

事件錄製回放:

經過事件錄製、回放來實現簡單hardcode的UI自動化,也不具有UI元素屬性獲取能力,只要UI發生簡單變化就會致使自動化失敗。

針對這兩種方式的不足,利用基於引擎的UI驅動能力,能夠開啓一個子線程實時檢測當前UI狀態,根據不一樣的UI狀態在主線程中執行適用於當前狀態的功能腳本便可實現相對穩定的UI兼容性測試。

舉個簡單的例子:以UI狀態來劃分通常遊戲中會有登陸、公告、主界面、對局、結算等UI狀態。

若是子線程檢測到當前UI是登陸,則主線程執行登陸相關腳本;

若是子線程檢測到當前UI是公告,則主線程執行公告相關腳本;

若是子線程檢測到當前UI是主界面,則執行啓動對局相關腳本;

若是子線程檢測到當前UI是對局,則執行對局相關腳本(或monkey test或回放錄製的腳本);

若是子線程檢測到當前UI是結算,則執行結算相關腳本。

利用基於引擎的UI驅動能力,能夠獲取、操做UI元素,再結合必定的的邏輯判斷就能夠覆蓋更多/更深的UI,很是適合兼容性測試。

經過簡單狀態級實現兼容測試UI自動化也幾乎不須要改動遊戲代碼,只在引擎一級簡單修改就能夠實現。

三、結合接口實現實時性要求比較低的遊戲的UI自動化

對於一些卡牌類遊戲或者實時性要求不高的遊戲,因爲UI比較簡單,戰鬥交互不復雜,實時性要求並不高。結合開發人員或者測試人員實現的一些接口,再加上基於引擎的UI驅動能力就能夠實現功能測試的UI自動化。

若是有了關卡數據獲取接口,經過該接口在進入戰鬥前獲取到關卡數據,再結合戰鬥過程當中的UI表現,經過必定的邏輯判斷就能夠實現戰鬥過程的UI自動化。

若是有告終算數據獲取接口,經過該接口在戰鬥結束後獲取該局的結算數據,再獲取結算UI顯示數據便可以驗證結算結果UI顯示是否正確。

這種方式只須要遊戲提供接口,可能會須要改動遊戲代碼,若是經過協議截獲的方式對遊戲程序影響最小,那麼對UI的驅動基本不須要改動遊戲代碼,只在引擎一級簡單修改便可實現。

四、結合AI實現實時性要求很高的遊戲的UI自動化

對於一些複雜的,對實時性要求很高的動做類遊戲,好比格鬥、射擊類遊戲,則建議結合AI來實現UI自動化測試。AI實現對實時性要求很高的戰鬥過程的自動化,並對外提供接口用以獲取戰鬥數據。

利用基於引擎的UI驅動能力實現其餘模塊的自動化,結合AI實現戰鬥模塊的自動化,從而實現整個遊戲的UI自動化測試。

可能會有人認爲:既然有了AI,就能夠徹底用AI實現自動化測試。

可是UI自動化測試不只僅須要UI驅動能力,還須要自動化測試框架提供調度、執行、統計、展現等功能,這些功能顯然不適合讓AI來實現。AI最適合實現戰鬥的驅動及對外提供遊戲數據獲取接口。AI通常集成在遊戲內部,顯然不適合用來完成整個遊戲的自動化測試功能。

結合AI實現的UI自動化成本是最高的,須要開發AI代碼,好在通常具備必定規模的遊戲開發團隊也都會本身開發AI來作一些開發自測或者做爲內掛提供遊戲託管功能,因此只須要在這些已有的AI上擴展一些功能便可,成本也是可控的。

以上就是我對遊戲UI自動化測試的一些想法,各個遊戲能夠根據各自項目的狀況有選擇性的實施投入產出比可控的UI自動化測試。

拋磚引玉,歡迎拍磚!

加入騰訊優測官方羣:214483489 與大咖們分享技術與時訊!

文/ 騰訊 方李志
_

騰訊優測是專業的移動雲測試平臺,爲應用、遊戲、H5混合應用的研發團隊提供產品質量檢測與問題解決服務。不只在線上平臺提供自動化兼容性測試、雲手機遠程租用與調試、漏洞分析、自動化測試工具Xtest等多種質量檢測工具,更爲VIP客戶配備了專家團隊提供定製化綜合測試解決方案。

相關文章
相關標籤/搜索