研發實戰:如何對VR遊戲進行自動化測試

Oculus 軟件 虛擬現實 程序員 映維網VR 2019-04-10

查看引用和消息源請點擊:映維網

關於開發自動化測試系統的經驗

映維網 2019年04月08日)Lucky VR是熱門多人遊戲《PokerStars VR》的開發商。日前,這款遊戲的一名軟件開發者Huiyoung Hyun Jung通過Oculus博客分享了關於開發自動化測試系統的經驗。下面是映維網的具體整理:

1. 多人VR測試的挑戰

就虛擬現實而言,由於用戶高度沉浸在遊戲之中,bug會造成非常非常不愉快的體驗。如果不確定問題的根源,你將非常難以解決它們,而確定bug的重現步驟非常膩煩和令人洩氣。多人遊戲尤是如此,因為一些bug只在非常特定的情景中出現。

因為各種各樣的原因,測試VR遊戲雖然測試VR遊戲非常具有挑戰性,而與傳統遊戲相比,測試人員的工作會更加繁重,並且運行多個實例可能非常困難。本文概述了我是如何通過開發自動化測試系統來解決《PokerStars VR》的測試挑戰,以及能夠幫助你簡化測試過程的技巧提示。

附接至虛擬化身的camera可以增加用戶的沉浸感,但在VR中測試時這可能會成為障礙,因為用戶需要佩戴頭顯來感知VR環境。要創建自動化測試,第一步是設置第二個camera,這樣你無需穿戴Rift頭顯就能輕鬆瀏覽相關的情況。

如果系統檢測到未穿戴頭顯,你可以禁用附接至虛擬化身的主camera,並啟用更寬視角的第三人稱camera。你同時可以錄製鏡像屏幕的視頻。如果你決定要在無人監督的情況下運行自動測試,這可能非常有用。對於《PokerStars VR》,我們設置了一個鳥瞰camera,令其圍繞著牌桌轉動。

2. 輸入與追蹤

取決於遊戲的類型,模擬輸入和頭部追蹤可能極具挑戰性。所以,我建議你關注其他可以從自動測試系統中獲益更多的組成要素。例如,你可能會發現某些對象在不同關卡之間切換時未能正確實例化或銷燬。

在多人遊戲中,新加入遊戲的玩家可能無法同步畫面,或者當發生host遷移時,你可能會在運行遊戲數小時後發現內存洩漏。Oculus SDK提供了一個事件委託(事件代理)。當檢測到未穿戴Rift時,系統就會調用這個事件委託。你可以編寫一個根據需要禁用輸入,追蹤及一定虛擬化身組件,並訂閱所述事件的函數。

研發實戰:如何對VR遊戲進行自動化測試

3. 實現測試

實現測試系統的時機已經成熟。最有用的測試場景是人類測試員難以完成,並需要定期完成的測試場景。例如,某些bug需要測試人員執行特定操作,但同時要執行另一個函數以引發衝突。 在現實世界中,網絡意外斷開是常見的事情,並且需要定期測試。確定需要自動化的測試類型。

在實現時,不要改動核心遊戲邏輯,因為這就違背了測試的目的。首先構建類屬基礎系統,然後編寫特定的測試場景。接下來,你可能會發現可以從自動化測試中獲益的其他場景,但可能無法同時執行兩個不同的測試。例如,你可以進行網絡穩定性測試,然後再進行常規的遊戲測試。

4. 日誌記錄

對於日誌記錄的重要性,怎麼強調都不為過。利用自動測試系統,記錄堆棧蹤跡和錯誤異常可以非常好地相互補充。當你運行自動測試系統時,它會創建大量有用的數據,並幫助分析從錄製視頻中發現的錯誤。知曉幕後發生的事情可以幫助定位問題的根源,因此請確保你的日誌文件包含錯誤異常和堆棧蹤跡。當出現錯誤報告但你又不確定原因時,它同樣有助於納入自定義信息。將你認為可疑的信息放入自定義日誌,在運行數小時自動化測試後你有可能會想到更好的點子。

我想分享的另外一點是,納入可以幫助你從日誌文件中定位正確消息的任何幫助。當我第一次收到隔夜自動化測試會話的結果時,我的日誌文件長達數十萬行。定位相應的日誌消息非常具有挑戰性。解決問題的一種方法是,組合日誌消息和時間戳,這樣你就可以立即識別哪條日誌消息匹配你在錄製視頻時發現的bug。設置一個顯示錯誤的開發控制檯,這樣你就能夠在分析錄製視頻時輕鬆發現錯誤。

5. 《PokerStars VR》的自動Host遷移測試

在《PokerStars VR》開發的早期階段,我們在host遷移過程中發現了一系列影響遊戲的問題。有時變量未同步,RPC函數未在其他客戶端調用,或者對象在插值過程中遭遇凍結。要確定bug的重現步驟非常困難。它們要求host在非常具體的時間點斷開連接。有時host遷移必須在不到0.5秒的時間窗口內發生,這是一個非常大的問題,特別是因為它是一款撲克遊戲,所以遊戲的運行必須穩健。

我解決這個問題的方法是,自動host遷移測試。首先,我實現了一個host bot和一個client bot。當host bot位於大廳時,它會創建一個多人撲克室。每個client bot定期從服務器獲取現有房間列表,並搜索標記為自動測試房間的房間列表。當發現測試房間時,client bot加入房間。在進行一段隨機的遊戲時間後,host bot離開房間並返回大廳,這時host遷移出現。

當發生host遷移後,下一個host將重複這一行為。一旦bot返回大廳,它就會重複測試循環。在自動會話期間,如果遊戲狀態在一段時間內沒有任何改變,或者如果一個bot玩家沒有對RPC進行響應,則可以認為遊戲出現bug。如果檢測到這種問題,所有bot都會離開房間並返回大廳。

6. 如何操作

下班後,我們先運行自動化測試,然後再離開辦公室。這一般會持續大約16個小時。當有8個bot在會話期間參與測試時,每次新創建的多人房間都將執行7次host遷移測試。 這允許我們在一夜之間進行數百次host遷移測試。我們會記錄,分析和討論測試會話期間發生的所有事情。

在開始運行自動化測試之後,我們能夠在數週內解決每次host遷移時出現的遊戲問題。另外,測試系統一直是確保我們能夠放心發佈新功能的工具。 藉助自動化系統生成的有用調試數據,《PokerStars VR》已經不再依賴於手動測試和錯誤報告。

7. 總結

自動化測試可為你的遊戲創造巨大價值。QA測試人員可以更快地發現bug再現步驟,並在其他工作流程方面保持高效。它可以找到人工不容易發現的問題。它是定位現有問題的絕佳工具,同時可以確保改動現有代碼不會導致進一步的問題。最重要的是,它不依賴於用戶發送錯誤報告,而是自動生成有價值的測試數據。在VR中進行測試非常有挑戰性,但我希望這篇文章能夠幫助節省更多的時間和精力。

另外,你可以嘗試一下免費的《PokerStars VR》。

---

原文鏈接:https://yivian.com/news/59280.html

相關推薦

推薦中...