溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

優(yōu)測(cè)優(yōu)分享 | 游戲的UI自動(dòng)化測(cè)試可以這樣開展

發(fā)布時(shí)間:2020-02-14 11:07:31 來(lái)源:網(wǎng)絡(luò) 閱讀:252 作者:優(yōu)測(cè) 欄目:游戲開發(fā)

優(yōu)測(cè)是專業(yè)的自動(dòng)化測(cè)試平臺(tái),提供自動(dòng)化測(cè)試、兼容性測(cè)試,云真機(jī)-遠(yuǎn)程真機(jī)租用,漏洞分析等多維度的測(cè)試服務(wù),為企業(yè)提供高效能的測(cè)試服務(wù)!


對(duì)于目前的兩大游戲引擎cocos-2dx、unity3D,其UI自動(dòng)化測(cè)試的技術(shù)方案都已經(jīng)實(shí)現(xiàn)??梢垣@取、設(shè)置UI對(duì)象的各個(gè)屬性,并且可以調(diào)用UI對(duì)象及引擎的一些方法接口,實(shí)現(xiàn)基于引擎的UI驅(qū)動(dòng)能力。有了這些能力之后,從技術(shù)上來(lái)說(shuō)已經(jīng)可以實(shí)現(xiàn)基于引擎的游戲UI自動(dòng)化測(cè)試。但是單純的UI驅(qū)動(dòng)能力還不足以實(shí)施一個(gè)游戲的UI自動(dòng)化測(cè)試。

UI自動(dòng)化測(cè)試一般需要滿足幾個(gè)條件:UI相對(duì)穩(wěn)定、操作過(guò)程及結(jié)果可預(yù)期、產(chǎn)品生命周期長(zhǎng)。

UI相對(duì)穩(wěn)定:

是指UI元素及布局在各個(gè)版本間變動(dòng)不大,各個(gè)UI元素的關(guān)鍵屬性(特別是用于唯一標(biāo)識(shí)該UI元素的屬性)保持穩(wěn)定,其他屬性可以根據(jù)需要發(fā)生變化。因?yàn)闇y(cè)試腳本是直接操作這些UI元素的,如果UI不夠穩(wěn)定,測(cè)試腳本就無(wú)法定位UI元素,也無(wú)法有效的操控UI元素。

操作過(guò)程及結(jié)果可預(yù)期:

是指交互的過(guò)程及預(yù)期結(jié)果是明確的,比如以QQ的發(fā)送文本消息功能為例,其交互過(guò)程及預(yù)期結(jié)果都是相對(duì)明確的,即使有操作分支也是有限的,可以很容易遍歷。這樣測(cè)試腳本的設(shè)計(jì)就比較簡(jiǎn)單,基本是線性往下執(zhí)行。如果交互過(guò)程及預(yù)期結(jié)果不明確,有太多的隨機(jī)性,會(huì)大大增加腳本的邏輯復(fù)雜度。過(guò)于復(fù)雜的腳本邏輯對(duì)于測(cè)試人員的能力要求高,而且會(huì)提高測(cè)試腳本的后期維護(hù)成本。

產(chǎn)品生命周期長(zhǎng):

因?yàn)閁I自動(dòng)化測(cè)試腳本的開發(fā)、維護(hù)成本都比較高,如果被測(cè)產(chǎn)品的生命周期太短,或者只發(fā)幾個(gè)版本,就會(huì)導(dǎo)致自動(dòng)化測(cè)試的投入產(chǎn)出比太低。

基于上述UI自動(dòng)化測(cè)試的要求,我們來(lái)看看游戲的情況,一般的游戲往往不具備上述條件,常常是:UI不穩(wěn)定:UI酷炫,各種特效,每個(gè)版本都會(huì)更新UI。

操作過(guò)程及結(jié)果很難預(yù)期:

游戲戰(zhàn)斗過(guò)程充斥著各種隨機(jī)性和玩家操作的不確定性,導(dǎo)致預(yù)期結(jié)果需要復(fù)雜的實(shí)時(shí)計(jì)算才可以得出,無(wú)法提前預(yù)期。

生命周期短:

很多游戲只有短短幾個(gè)月的生命周期。這些因素都導(dǎo)致了游戲的UI自動(dòng)化測(cè)試成本太高。

確實(shí)很多游戲不適合做UI自動(dòng)化測(cè)試,但是對(duì)于一些生命周期長(zhǎng)、收入高的游戲投入人力做UI自動(dòng)化測(cè)試還是很有價(jià)值的。而且隨著測(cè)試人員技能及測(cè)試工具能力的提升,一些普通游戲也可以開展部分UI自動(dòng)化測(cè)試。

下面就如何開展游戲UI自動(dòng)化測(cè)試簡(jiǎn)單談?wù)勔恍﹤€(gè)人的想法。

做任何UI自動(dòng)化測(cè)試都要考慮投入產(chǎn)出比,我們就按投入產(chǎn)出比來(lái)從高到低來(lái)探討下游戲的UI自動(dòng)化測(cè)試如何開展。

1、功能邏輯明確模塊UI自動(dòng)化

游戲中一般只有戰(zhàn)斗模塊的功能邏輯各種不確定,其他輔助模塊的功能邏輯都是比較明確的,比如登錄、商城、背包、設(shè)置、社區(qū)等都跟普通的商業(yè)軟件沒(méi)有什么區(qū)別。

針對(duì)這些模塊可以很方便的實(shí)施UI自動(dòng)化測(cè)試,而且這些輔助模塊占游戲的全部UI功能的比例也很高,實(shí)現(xiàn)UI自動(dòng)化測(cè)試具有很高價(jià)值。

對(duì)于這些相對(duì)功能邏輯明確的UI模塊,實(shí)施自動(dòng)化測(cè)試成本是最低的,幾乎不需要改動(dòng)游戲代碼,只需要在引擎一級(jí)簡(jiǎn)單修改就可以實(shí)現(xiàn)UI自動(dòng)化測(cè)試。

2、簡(jiǎn)單狀態(tài)機(jī)實(shí)現(xiàn)兼容測(cè)試UI自動(dòng)化

目前針對(duì)游戲的兼容性測(cè)試有:簡(jiǎn)單的monkey test、事件錄制回放。但是這兩種方式有明顯的不足:

簡(jiǎn)單的monkey test:

只是隨機(jī)的點(diǎn)擊UI,沒(méi)有UI元素屬性獲取能力,更沒(méi)有UI驅(qū)動(dòng)能力,無(wú)法做邏輯判斷,覆蓋的UI深度是有限的。連簡(jiǎn)單的登錄都登錄不了,更不要說(shuō)更深的UI。

事件錄制回放:

通過(guò)事件錄制、回放來(lái)實(shí)現(xiàn)簡(jiǎn)單hardcode的UI自動(dòng)化,也不具備UI元素屬性獲取能力,只要UI發(fā)生簡(jiǎn)單變化就會(huì)導(dǎo)致自動(dòng)化失敗。

針對(duì)這兩種方式的不足,利用基于引擎的UI驅(qū)動(dòng)能力,可以開啟一個(gè)子線程實(shí)時(shí)檢測(cè)當(dāng)前UI狀態(tài),根據(jù)不同的UI狀態(tài)在主線程中執(zhí)行適用于當(dāng)前狀態(tài)的功能腳本即可實(shí)現(xiàn)相對(duì)穩(wěn)定的UI兼容性測(cè)試。

舉個(gè)簡(jiǎn)單的例子:以UI狀態(tài)來(lái)劃分一般游戲中會(huì)有登錄、公告、主界面、對(duì)局、結(jié)算等UI狀態(tài)。

如果子線程檢測(cè)到當(dāng)前UI是登錄,則主線程執(zhí)行登錄相關(guān)腳本;

如果子線程檢測(cè)到當(dāng)前UI是公告,則主線程執(zhí)行公告相關(guān)腳本;

如果子線程檢測(cè)到當(dāng)前UI是主界面,則執(zhí)行啟動(dòng)對(duì)局相關(guān)腳本;

如果子線程檢測(cè)到當(dāng)前UI是對(duì)局,則執(zhí)行對(duì)局相關(guān)腳本(或monkey test或回放錄制的腳本);

如果子線程檢測(cè)到當(dāng)前UI是結(jié)算,則執(zhí)行結(jié)算相關(guān)腳本。

利用基于引擎的UI驅(qū)動(dòng)能力,可以獲取、操作UI元素,再結(jié)合一定的的邏輯判斷就可以覆蓋更多/更深的UI,非常適合兼容性測(cè)試。

通過(guò)簡(jiǎn)單狀態(tài)級(jí)實(shí)現(xiàn)兼容測(cè)試UI自動(dòng)化也幾乎不需要改動(dòng)游戲代碼,只在引擎一級(jí)簡(jiǎn)單修改就可以實(shí)現(xiàn)。

3、結(jié)合接口實(shí)現(xiàn)實(shí)時(shí)性要求比較低的游戲的UI自動(dòng)化

對(duì)于一些卡牌類游戲或者實(shí)時(shí)性要求不高的游戲,由于UI比較簡(jiǎn)單,戰(zhàn)斗交互不復(fù)雜,實(shí)時(shí)性要求并不高。結(jié)合開發(fā)人員或者測(cè)試人員實(shí)現(xiàn)的一些接口,再加上基于引擎的UI驅(qū)動(dòng)能力就可以實(shí)現(xiàn)功能測(cè)試的UI自動(dòng)化。

如果有了關(guān)卡數(shù)據(jù)獲取接口,通過(guò)該接口在進(jìn)入戰(zhàn)斗前獲取到關(guān)卡數(shù)據(jù),再結(jié)合戰(zhàn)斗過(guò)程中的UI表現(xiàn),通過(guò)一定的邏輯判斷就可以實(shí)現(xiàn)戰(zhàn)斗過(guò)程的UI自動(dòng)化。

如果有了結(jié)算數(shù)據(jù)獲取接口,通過(guò)該接口在戰(zhàn)斗結(jié)束后獲取該局的結(jié)算數(shù)據(jù),再獲取結(jié)算UI顯示數(shù)據(jù)即可以驗(yàn)證結(jié)算結(jié)果UI顯示是否正確。

這種方式只需要游戲提供接口,可能會(huì)需要改動(dòng)游戲代碼,如果通過(guò)協(xié)議截獲的方式對(duì)游戲程序影響最小,那么對(duì)UI的驅(qū)動(dòng)基本不需要改動(dòng)游戲代碼,只在引擎一級(jí)簡(jiǎn)單修改即可實(shí)現(xiàn)。

4、結(jié)合AI實(shí)現(xiàn)實(shí)時(shí)性要求很高的游戲的UI自動(dòng)化

對(duì)于一些復(fù)雜的,對(duì)實(shí)時(shí)性要求很高的動(dòng)作類游戲,比如格斗、射擊類游戲,則建議結(jié)合AI來(lái)實(shí)現(xiàn)UI自動(dòng)化測(cè)試。AI實(shí)現(xiàn)對(duì)實(shí)時(shí)性要求很高的戰(zhàn)斗過(guò)程的自動(dòng)化,并對(duì)外提供接口用以獲取戰(zhàn)斗數(shù)據(jù)。

利用基于引擎的UI驅(qū)動(dòng)能力實(shí)現(xiàn)其他模塊的自動(dòng)化,結(jié)合AI實(shí)現(xiàn)戰(zhàn)斗模塊的自動(dòng)化,從而實(shí)現(xiàn)整個(gè)游戲的UI自動(dòng)化測(cè)試。


可能會(huì)有人認(rèn)為:既然有了AI,就可以完全用AI實(shí)現(xiàn)自動(dòng)化測(cè)試。

但是UI自動(dòng)化測(cè)試不僅僅需要UI驅(qū)動(dòng)能力,還需要自動(dòng)化測(cè)試框架提供調(diào)度、執(zhí)行、統(tǒng)計(jì)、展示等功能,這些功能顯然不適合讓AI來(lái)實(shí)現(xiàn)。AI最適合實(shí)現(xiàn)戰(zhàn)斗的驅(qū)動(dòng)及對(duì)外提供游戲數(shù)據(jù)獲取接口。AI一般集成在游戲內(nèi)部,顯然不適合用來(lái)完成整個(gè)游戲的自動(dòng)化測(cè)試功能。


結(jié)合AI實(shí)現(xiàn)的UI自動(dòng)化成本是最高的,需要開發(fā)AI代碼,好在一般具有一定規(guī)模的游戲開發(fā)團(tuán)隊(duì)也都會(huì)自己開發(fā)AI來(lái)做一些開發(fā)自測(cè)或者作為內(nèi)掛提供游戲托管功能,所以只需要在這些已有的AI上擴(kuò)展一些功能即可,成本也是可控的。

以上就是我對(duì)游戲UI自動(dòng)化測(cè)試的一些想法,各個(gè)游戲可以根據(jù)各自項(xiàng)目的情況有選擇性的實(shí)施投入產(chǎn)出比可控的UI自動(dòng)化測(cè)試。


拋磚引玉,歡迎拍磚!

登錄優(yōu)測(cè)官網(wǎng),體驗(yàn)高效能測(cè)試服務(wù)


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI