《戰艦世界》發布官方紀錄片「熱修正檔」,QA團隊談測試和修復錯誤

自從遊戲行業出現以來,這種錯誤就一直煩擾著玩家。我們已經習慣了它們,並給它們起了一個不太友善的綽號——「BUG」(臭蟲)。程序錯誤隨處可見,《戰艦世界》也不例外。開發團隊於今日公布了官方紀錄片,講述了 QA 團隊如何發現和修復遊戲中的程序錯誤。

《戰艦世界》發布官方紀錄片「熱修正檔」,QA團隊談測試和修復錯誤

Wargaming Group 表示,他們的項目包括數百萬行不斷更新的代碼、大量的內容以及玩家電腦與伺服器之間復雜的交互系統。所有這些都創造了大量可能發生錯誤的關系。在本期紀錄片中,玩家將了解團隊如何減少出現在主伺服器中的程序錯誤數量,以及如何修復那些被忽視的程序錯誤。

什麼是程序錯誤?

「程序錯誤」一詞可能為大多數玩家所熟悉。程序錯誤是導致程序運行的實際結果與預期不符的錯誤。在遊戲的早期,團隊將程序錯誤分為兩個主要類型:遊戲內容中的程序錯誤和代碼中的程序錯誤。現在,還有很多其他類型。

測試是如何進行的?

質量保證(QA)團隊負責發現和修復《戰艦世界》中的程序錯誤。《戰艦世界》大多數的開發團隊中都有QA部門。例如:

  • 內容:檢查模型、聲音、視覺效果等。
  • 遊戲邏輯:檢查遊戲機制是否可以正確運行。
  • 伺服器核心:檢查遊戲伺服器是否可以正確運行。
  • 《戰艦世界》發布官方紀錄片「熱修正檔」,QA團隊談測試和修復錯誤

    QA的工作是理解如何將特定事物在遊戲中實現。為此,他們需要研究文檔並與開發人員溝通。之後,他們會制定測試流程和方案,用於檢查程序是否符合預期行為。測試程序時,同時進行負面和正面測試:

  • 正面測試使用的場景與程序的正常預期行為一致。例如,檢查用戶在輸入正確密碼後是否可以進入遊戲客戶端。
  • 負面測試則需要故意執行「錯誤」的操作(異常場景)。例如,檢查是否可以通過輸入錯誤的密碼或不輸入密碼來登錄遊戲客戶端。
  • 如有必要,團隊也會執行其它類型的檢測:性能測試、用戶體驗測試等。在《戰艦世界》中,測試可以簡化為幾個主要階段。

  • 內部測試 在創建功能的所有階段進行的各種功能測試,例如:構思、設計、、開發
  • 集成測試,或檢查遊戲的各個單獨部分在被放在一起並添加到主遊戲代碼中後,是否可以正常運行。
  • 在開放外部測試之前測試軟體構建是否存在明顯缺陷。
  • 《戰艦世界》發布官方紀錄片「熱修正檔」,QA團隊談測試和修復錯誤

    構建是遊戲客戶端的某個版本,可用於測試。像《戰艦世界》這樣的大型項目,即使是最大規模的QA團隊,也不可能完全跟蹤所有關系及其結果。因此,在內部測試進入最後階段時,團隊會開放外部測試:

  • 由少數志願者(超級測試和軍團測試)測試預發布的遊戲構建。
  • 公開測試則對所有人開放。
  • 外部測試還能讓團隊檢查遊戲在各種各樣的計算機和軟體配置上的運行狀況《戰艦世界》開發團隊也會參與外部測試。工作室中有一個「紅綠燈」機制。這是一個特殊頁面,由所有團隊在公共測試服上遊戲後進行填寫。在這個頁面上,工作人員可以針對測試版本中的新功能給予反饋,並對其進行評估。之後在總結測試結果時會將所有評估納入考量。

    基於外部測試的結果,團隊對會在當前遊戲構建中修復最後一批被識別出的錯誤。如果無法修復錯誤,團隊甚至需要從即將到來的版本更新中移除某些功能。0.10.9版本中的非對稱戰鬥就是這種情況。在公開測試期間,測試者發現了一個導致模式無法正確運行的程序錯誤,這需要額外時間進行修復。因此,該版本更新移除了此模式。

    程序錯誤的產生

    為什麼正式服上會出現程序錯誤?程序錯誤的出現有多種原因,並且發生在不同的開發階段。從程序代碼和人為因素中常見的錯誤到為新版本創建設計文檔階段產生的不明顯的交互和錯誤。

    《戰艦世界》發布官方紀錄片「熱修正檔」,QA團隊談測試和修復錯誤

    一個存在於構思階段的錯誤,仍將被視為程序錯誤。例如,航空母艦中隊在攻擊後會立即開啟暫時不受傷害的機制也可以歸因於程序錯誤。這個機制之前被用於突破敵人的防空區域。在航空母艦更新的設計階段,團隊未能預見該機制的這種用法,所以只能在後來對其進行修復。

    為了避免類似的情況,團隊嘗試在討論新的想法時就盡早開始測試。此外,單獨運行時表現完美的遊戲元素也可能在與其它遊戲元素結合時,由於各種相互聯系和衝突而「出錯」。例如,在排位戰更新的一個內部測試中,團隊發現它們會導致軍團戰的運行發生錯誤——由於匹配時間是無限長的,玩家無法開始戰鬥。造成這種情況的原因並不是最明顯的關系,但幸運的是它被發現了,並且沒有進入正式服。

    《戰艦世界》發布官方紀錄片「熱修正檔」,QA團隊談測試和修復錯誤

    導致程序錯誤的另一個原因是用戶的計算機配置種類繁多,加上復雜的客戶端-伺服器體系結構,可能導致特定計算機上遊戲代碼的意外行為。這類程序錯誤很難被發現。例如,在一次版本更新中,由於日本的日期格式與歐洲或美國使用的格式不同,遊戲代碼無法處理這些信息,從而導致一些玩家的戰後統計數據無法顯示。

    玩家認為是程序錯誤的程序行為有時可能並不是程序錯誤,而是預期結果。在這種情況下,團隊必須分析玩家的反饋,也可能做出一些改動。相反的情況也可能發生——程序錯誤有時會成為遊戲的一部分,在這種情況下,團隊可能會決定故意不修復它。

    例如, 敷島號開炮時的獨特聲效在聽覺范圍設置中有一個錯誤(可以在比預期更大的范圍內聽到)。這個錯誤後來被修復。但是,玩家們認為這個修復使此聲效失去了其獨特性,因此團隊讓此「錯誤」重歸了遊戲。

    程序錯誤也可以暫且歸因於數據中心或網際網路提供商的技術問題。遺憾的是,在這種情況下團隊幾乎無能為力。團隊並不是每次都能幫到玩家,不管他們是否知道問題的根源。希望各位玩家能理解,要找出所有的程序錯誤是不可能的。QA團隊的工作成果是新功能可以按預期運行,沒有嚴重的程序錯誤和缺陷,並且可以在正式服上發布。

    修復

    為什麼有些程序錯誤需要這麼長時間才能修復?糾正特定錯誤所需的時間主要取決於其性質。有些缺陷在錯誤分析階段就需要投入大量時間。要糾正錯誤,團隊需要准確地再現錯誤,並理解錯誤發生的原因。

    例如,最近的一個程序錯誤導致戰艦在轉向時無法正確發射魚雷。這是一個遊戲邏輯上錯誤,而對遊戲邏輯的任何更改和修復都具有極大的風險,因為它們會影響所有玩家和遊戲的根基——遊戲玩法。

    《戰艦世界》發布官方紀錄片「熱修正檔」,QA團隊談測試和修復錯誤

    因此,要修復此類錯誤,團隊必須准確分析玩家的投訴和各種報告,找出問題的原因,並制定和驗證解決方案。在某些特殊情況下,可能需要重寫遊戲代碼以修復程序錯誤或使用新技術對其進行優化。這個過程被稱為重構。盡管從玩家的視角看,似乎沒有任何變化,但這個過程實際上需要相當長的時間。

    此外,糾正錯誤的時間范圍取決於程序修復交付給玩家的方式。例如:

  • 有些程序錯誤比較容易處理,團隊只需對遊戲的伺服器端進行一些細微修復就行了,大多數玩家甚至不會察覺。
  • 當錯誤還影響到玩家的客戶端或需要對伺服器進行維護以修復錯誤時,情況就更為復雜。在這種情況下,團隊需要准備一個小修正檔並在伺服器上花一些額外的功夫。在此期間,伺服器將對玩家關閉。
  • 修復某些程序錯誤需要對代碼進行大量更改並安排額外測試,所以只有在下一次大型遊戲版本更新發布時才能發布修復。
  • 關於如何交付每個修復以及修復程序錯誤的優先級取決於許多因素:

    《戰艦世界》發布官方紀錄片「熱修正檔」,QA團隊談測試和修復錯誤

  • 程序錯誤的嚴重程度:無法運行的隨機戰應當盡快修復,而戰艦特性中的錯別字可以稍後修復。
  • 影響范圍:一些錯誤影響所有玩家;另一些錯誤只會對1000名玩家中的1名產生影響。
  • 風險和必要的修復測試:如上所述,對遊戲邏輯進行草率的修復只會讓事情變得更糟。
  • 伺服器維護時長和更新大小:要修復錯誤,團隊需要關閉伺服器幾個小時,而玩家需要下載相當大的修正檔。在這種情況下,團隊需要再次考量某個錯誤是否真的需要立即修復,因為這將導致大量玩家很長時間無法進入遊戲。
  • 遺憾的是,盡管團隊都希望修復所有可能的程序錯誤,但是《戰艦世界》的團隊資源是有限的,所以團隊專注於修復最關鍵和最常見的程序錯誤。

    如何報告程序錯誤

    玩家可以隨時通過以下渠道,報告自己發現的任何錯誤:

  • 玩家支持
  • 遊戲論壇
  • 《戰艦世界》官方Discord伺服器
  • 為了更快更有效地修復錯誤,請在報告中添加以下內容:

  • 錯誤描述。
  • 截屏、視頻、回放或其它任何能目測出錯誤的材料。若您附上了戰鬥回放,請標明錯誤發生的時間。
  • WGCheck文件。
  • 《戰艦世界》發布官方紀錄片「熱修正檔」,QA團隊談測試和修復錯誤

    在今日的文章中,團隊盡最大努力以最易懂的方式為玩家介紹了他們與程序錯誤的鬥爭,以及那「隱形的前線」。開發團隊表示,由衷感謝玩家報告程序錯誤、提供反饋、參與測試以及遊玩《戰艦世界》。沒有各位的貢獻,他們不可能快速發現並糾正遊戲中出現的各種錯誤。

    來源:機核