轉帖|行業資訊|編輯:龔雪|2016-06-03 10:50:53.000|閱讀 509 次
概述:本文為大家整理一下其中的基礎部分,涵蓋了兩者在手工和自動化測試方面的不同,希望能幫到想從App測試轉到手游測試的朋友們。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
隨著智能設備的普及和移動互聯網的興起,各家互聯網巨頭紛紛在往移動端布局和轉型,同時初創的移動互聯網公司也都盯著這個市場希望分一杯羹。在這個大環境下,互聯網的重心已經慢慢從Web端轉向了移動端,而移動端的軟件測試也變得越來越重要了。
在移動端的軟件里,手游又是其中非常大的一塊。從下面的圖可以看出,智能手機的普及和手游玩家的增長是密切相關的:
加入鵝廠前,筆者曾經從事過手機App的測試開發工作。1年前加入鵝廠后轉行做了手游測試工作,通過摸索實踐,發現兩者在相同的測試理論基礎之上,其實有著非常不同的測試場景和測試需求。下面就為大家整理一下其中的基礎部分,涵蓋了兩者在手工和自動化測試方面的不同,希望能幫到想從App測試轉到手游測試的朋友們。
一、APP自動化測試完全不同于手游自動化測試
手機App和手游的開發技術不同,這導致了兩者的自動化測試技術是截然不同的。
以安卓開發舉例,手機App一般使用Android SDK開發,使用Java編寫。通過Android提供的服務,我們可以獲取App當前窗口的視圖信息,進而查找和操作按鈕等控件,以完成自動化測試,如Uiautomator。這個過程是標準化的,從技術上來說沒有任何難度,因此各個公司各個App自動化測試的方法都大同小異。
但手游的開發卻不是這樣。手游一般使用引擎開發,現在著名的有cocos2d和unity3d。兩者都是使用引擎自帶的語言進行開發,主流的分別是c++和c#,雖然在開發過程中也有按鈕等控件的概念,但當運行時由引擎渲染后就變成了一副簡單的圖片:
圖:游戲中看到的只是一副簡單的圖片,按鈕已經不是控件了
因此,我們就無法通過Android自帶的服務來找出游戲中的按鈕了,也就沒法進行常規的自動化測試。
如果有人說自己的技術是基于Android原生控件識別的,那就一定做不了手游自動化測試。這個問題大家都在探索解決方案,我們現在通過注入引擎SDK到安裝包反射出引擎層控件的方法進行自動化測試,實踐下來具有很好的效果。
二、玩法不同導致功能測試更復雜
1、隨機性
游戲的場景和過程是動態并且伴有隨機要素的,這體現在兩點。
這兩點對自動化測試帶來了極大的挑戰,如果測試腳本寫的不夠靈活,很容易導致上一次運行成功的腳本這一次就無法運行了。我們需要在測試腳本里適當的加入探索和自適應的功能。
App測試就沒有這個問題,大部分App的使用方式都是靜態且可以重復的。因此自動化測試可以完全按照測試腳本進行編寫并執行。
2、探索性
手游和App的第二個玩法不同在于探索性。App一般都是功能性的,好的App需要把它的功能簡單明了地告訴用戶。而游戲重在娛樂性,需要給玩家一定的探索要素。因此在做手游測試的時候,我們需要測試游戲的用戶幫助說明是否清晰,同時后續的游玩和探索過程和前面給出的說明之間是否有合理聯系,規則的指示是否有足夠的提示性。
3、難度測試
App希望做的越簡單,用戶的使用成本越低越好。而手游是有難度設置的。我們在做手游功能測試的時候,會把資源和等級調到最大以方便后期功能的執行,但當所有的功能測試都做完后,我們需要把自己的資源初始化,以“回歸”一個普通玩家的水平,通過普通玩家的視角來查看游戲的難度提升是否合理,資源分配是否均勻。
4、關卡測試
App的使用是功能性的,一個功能的重復使用總是一樣的。而手游具有關卡的概念,即便是同一種玩法,關卡和關卡之間也有細微的差別,前面的關卡測試正確了,并不表示后面的關卡一定是正確的。作者曾經碰到過一個手游的Bug,當游戲進行到某個后期關卡時,游戲一定會崩潰。而導致這個Bug的原因也很簡單:這個關卡的圖片資源在打包客戶端的時候沒有加入。因此當我們玩前面的關卡時并不會觸發這個Bug,但一到后面的關卡就出錯了。
這類Bug雖然原因簡單,但確實非常難測試到。因為各個關卡的玩法雖然都一致,但一個游戲的關卡數卻是非常多。如果我們要遍歷所有的關卡走一遍,那耗費的人力成本將是非常大的。對于這類重復性的關卡測試,建議使用自動化腳本進行遍歷。
5、PvP測試
App的使用普遍是單人的,而手游往往有玩家對戰的PvP模式,好的手游更是具有實時的PvP模式。由于兩個玩家實時進行游戲合作或者對戰,因此網絡延遲的測試就變得非常關鍵了。我們在測試中需要模擬不同的網絡對游戲延遲的影響,觀察兩個玩家的狀態和數據是否一致,同時體驗網絡延遲對游戲手感的影響,這在傳統的App測試中是完全不需要的。
三、手游測試更看重商業類測試
1、支付測試
現在的手機App基本上以廣告收入為主,并不會直接向用戶收取費用。而手游的直接消費群體就是玩家,在游戲過程中伴隨著玩家大量的支付操作。由于這類操作和玩家的金錢密切相關,因此支付類的測試在任何游戲中都要做最高優先級的保證。
我們需要在各種嚴格的環境下保證玩家的支付操作被正確執行或者得到了正確的失敗提醒。例如當網絡狀況很差的時候,用戶在支付界面的多次確認操作必須只能被執行一次。當用戶在支付過程中斷網,未收到貨物時,游戲需要在玩家的網絡恢復后第一時間補發貨物,并作出明顯的提示。另外支付操作需要在大量不同系統、不同型號的手機上進行適配操作,以降低出錯的可能性。
2、安全測試
對于大多數非支付類App來說,安全并不是一個特別大的問題,只需要保證登錄鑒權的安全性即可。App是一個方便用戶的工具,沒有人會在用自己的計算器App時候鎖定內存,或者把加法操作變為乘法操作。
手游在這點上很不一樣,手游與玩家在某種程度上具有“對抗”要素,玩家要戰勝游戲關卡獲得獎勵,而游戲關卡要設置一定的難度阻止玩家。如果游戲的外掛橫行,玩家不需要任何對抗就能獲得勝利,一方面會對游戲的平衡性造成影響,使得某些玩家的資源大大超過別的玩家;另一方面從長遠看會使得這個游戲變得無趣,從而造成玩家的離開。
對游戲進行安全測試的普遍方法為通過鎖定/修改內存來鎖定和修改游戲資源、通過修改游戲內存來改變游戲邏輯簡化游戲流程等。
3、收益測試
一般的手游App沒有付費用戶的概念,所有的用戶都是使用同一個功能。即便有付費用戶,他們和普通用戶的區別也非常明顯:付費用戶可以使用一些額外功能。手游的付費用戶和非付費用戶的界線并沒有這么明顯。手游里根據用戶付費的多少分為非R用戶,小R用戶,大R用戶等。我們需要在策劃的時候就計算好這些付費用戶的投入和回報,并在測試的過程中驗證這些。舉兩個例子,如果一個大R用戶獲得的回報,非R用戶只用很少的時間就能獲得,那大R用戶一定不滿意,這個收費項目的設置就是不合理的;如果兩個購買項的金額相同,而收益明顯不同,那也會造成玩家的不滿。
四、后臺性能不同
雖然我們這里討論App和手游主要是前端客戶端,但其實兩者的后臺性能也有區別。相比一般的App,手游的在線人數明顯更有規律性且更集中,一般在中午12點和晚上8點是兩個明顯的高峰。因此手游的性能測試就要貼合這種用戶模型,能夠處理極值情況下的服務器性能負載。當然,兩者都會受到節假日較大的影響,這個對于App和手游來說是一致的。
也來談下相似之處
除了上面提到的這么多手游測試和App測試的不同點,其實兩者也有很多相似之處,在測試的時候都不能遺忘,例如手機來電、短信的中斷測試,碎片化的兼容性測試(尤其是安卓),客戶端運行在手機上的性能測試,網絡較差或者網絡頻繁切換的弱網絡測試,已經用戶體驗和UI測試等。
原文轉載自:
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn