揭秘《英雄联盟》客户端更新运行自动化测试
大家好,我是Kisel,我的工作是為英雄聯盟客戶端更新做測試,構建和部署團隊。在這里,我們要談論的是項目的自動化測試。
如果您曾經使用過當前的聯盟客戶端(“AIR“客戶端),您可能已經遇到了一些奇怪的錯誤。即使那些問題是罕見的,你仍然可能會想到“wtf Rito,這怎么可能存在,“你這么做是完全有道理的——因為體驗不符合我們想提供給玩家的質量。之前一篇關于在客戶端更新架構的文章提到了我們在發展原始客戶端時使用AIR的決定——它支持豐富的多媒體效果,但是不可能在HTML中使用。然而,遺憾的是,AIR客戶端自動化測試覆蓋面有限。開發和發布更新是一個緩慢而危險的過程,因為要想變更一些內容就必須要手動測試——這是一個耗時和不連貫的進程。理想情況下,我們會讓機器測試枯燥的,重復的東西,讓人類做更有創意的測試工作(在吉姆最近的文章中有更多的相關內容)。
聯盟客戶端更新的核心目標之一是讓簡單粗暴的測試自動化,那么我們就可以給玩家提供他們應該得到的優質體驗。客戶端更新的架構包括一個基于谷歌瀏覽器的前端和一個C++的后端,這些為進行交流提供了REST api和websockets 。此體系結構為我們提供了兩個方便的自動化接口:對于前端來說,我們可以使用ChromeDriver,這是行業標準Selenium WebDriver協議的具體實施。對于后端來說,我們使用開源的HTTP請求和websocket庫。這些都是地球上最常見的自動化接口,所以我們沒有必要實現自定義的自動化測試驅動程序。我們已經實現了功能測試和運行使用Cucumber.js。
這些都是具有豐富文檔的常見工具,所以,在本文中,我將關注我們的流程和渠道,而不是我們的工具。我希望這將有助于任何想要接近一個類似于自動化挑戰的人。
?
文化
成功的測試自動化在很大程度上是一種文化和心理學。技術在其中只是起到次要的作用。
無論我們有多少技術,我們仍然需要鼓勵正確的人類行為,致使自動化測試成功。每一次測試失敗,人們必須正視它并判斷這個失敗是否是正在測試項目中一個真正的失敗、還是一個行為不端的編寫差的測試,或是某種其他環境或基礎設施問題,比如網絡故障。
傳統的自動化測試策略是先有一個有質量保證的團隊為開發和運行測試來維護負責。這種方法有一定的優點,你最終會得到完全擁有測試系統的主題專家。它通常適合長發布周期的項目,如果你的團隊一周之內對一個新的構建只測試一次,那么即時反饋并不是那么重要。
此外,這對專業的測試工程師有好處,工程師們能花時間設計復雜的測試用例,充分鍛煉每個構建。我讓我們的藝術家來想象這個過程:
?
然而,這也有明顯的缺點。當開發團隊不運行測試,或者只關注結果時,他們就會傾向于采用“各管一攤”的心態。開發者自己失敗的代碼學習反饋循環往往是緩慢的,這并不是可接受的。聯盟客戶端更新動作極快,從早上到晚上,賣QQ賬號基本的開發環境每15分鐘會接受一個新的構建。以那樣的速度,即時反饋是至關重要的。即使測試本身迅速執行,我們也不能等開發人員等待測試工程來解釋結果。團隊效率是我們的核心目標之一,所以傳統的自動化測試就不會為我們工作。我們的方法是這樣的:
我們的信條是使測試和自動化成為整個團隊最關心的問題。每個開發人員都有參與其中。我們的標準項目新員工培訓過程包括詳細的如何編寫文檔和運行測試,我們會讓開發人員弄清楚,我們期望他們完全擁有自己代碼的單元測試、功能測試、性能測試和負載測試。測試、構建和部署團隊專注于建立和維護測試工具和基礎設施,但這個團隊并不自己編寫測試——這是個別特殊團隊的責任。
我們現在能達到一個高度,聯盟客戶端更新測試失敗時團隊能快速反應和調查。然而,很難達到這一點。學習如何應對片狀測試由始至終都是難題。
原來的工作流程是這樣的:
1、注意到一個測試是偶然性失敗;
2、只是偶爾失敗,所以它可能不如其他壞掉的東西緊要,可以忽略它幾個小時或幾天;
3、最終開始調查,如果測試確實是錯了就檢查修復。
結果就是:團隊開始假設,任何失敗都可能只是一個片狀測試,所有的結果將被忽略。如果團隊在測試系統時沒有信心,該系統就是一文不值的。如果你的汽車檢查引擎燈隨機打開時,你可能會開始忽略它。為了防止這種類型的習慣,我們目前的工作流程是立即調查失敗的測試,以確定該測試已經跑偏還是我們發現一個合法的bug。
將被破壞的測試移動到我們階段測試套件,是以盡可能高地保持完整測試套件的信噪比。為了測試,階段套件在正常的構建渠道之外運行。新的或重構的測試被放在某一階段幾天,確保在我們將其放到全套之前它們是健康的,在那里他們可以通知開發人員失敗和block部署。
我們不斷強化通過面對面討論的方式、發布會議公告的方式、或團隊間郵件的方式來保持我們的測試和構建健康的重要性。關于bug或測試的任何討論都是一個宣傳自動化福音的很好的機會(禮貌地)。每一個團隊都會定期地進入“必須停船”的心態,然后開始不重視測試的重要性,這是很自然的,有時會為測試要求感到沮喪。當然,我們必須小心地找到沒有提醒和太多提醒之間的適當平衡,在這兩種極端的情況下,沒有人能得到消息。當有遠程團隊參與其中時這可能需要特別注意。
這些文化的態度并不是放之四海而皆準的。他們必須仔細定制以滿足各種項目和涉及的人員。最重要的部分是沒什么是理所當然的,不做任何假設。總有改進的余地——我們時常留意系統是如何順利工作的,并適當作出調整。
總結
以上是生活随笔為你收集整理的揭秘《英雄联盟》客户端更新运行自动化测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 游戏设计模式实操经验:游戏结算功能实现的
- 下一篇: 技能模块的防外挂机制和同步机制优化