申明一下,只是在這里拋磚引玉,各位如果有好的方法和建議,歡迎指正。
首先,據我了解,國內的游戲(MMORPG)行業(國外的我不知道哈),幾乎還沒有比較成功的游戲自動化測試體系,或許是我孤陋寡聞吧!有少數公司在做,但是效果都不很明顯,結合我自己的做的一些經歷和實際操作,小小的說說自己的想法。
1.目前市面上的一些測試工具如:lr,wr,qtp什么的不適合做游戲自動化測試,至少我沒找到合適方法。個人理解是因為這個工具實際是通過簡單錄制或定制一些行為來實現自動化測試的,做游戲自動化測試,這些工具有幾個重大缺點:
部署成本高:
自動化體系在server端很難部署,定制行為的時候幾乎不能調用到游戲的接口,無法獲得游戲實際運行的信息,預期結果不方便定制。如果是通過簡單錄制回放的話,效率不如手動操作好,對一些繁瑣的行為,幾乎是不現實的,而且這些工具對tcp/ip協議支持不如http協議好,有興趣的同學可以去研究研究。
效果差強人意:
我之前用lr做了一下游戲自動化,不到一周我就放棄了,后來招了一個lr的新人,我在百般勸說下,他都沒放棄游戲lr的自動化測試,結果3天不到,他也放棄了!游戲自動化測試本質目的是提高測試效率,用lr反而降低了測試效率,那么我們還用lr來干什么呢?這里我也不多說原因了,到后面我會提一下另一種方法的,主要說另一種方法的優勢,而這種方法的優勢恰好是這些工具的劣勢。
2.幾乎所有的游戲在前期架構設計上就沒考慮到游戲自動化測試的需求,所以在游戲后期介入自動化測試幾乎是不現實的。
3.公司沒有足夠的人力物力,或者說項目組就沒有意識到自動化測試的意義,所以也無法開展。
4.測試自身的能力,很多(現在不是幾乎了,有的游戲公司的測試還是很nb的)測試自身能力不足,或者接觸不到游戲代碼或其他需求無法滿足,導致無法進行自動化測試。
接著,我主要說說游戲自動化測試對游戲架構的需求:
首先,如果在一款成熟運營的游戲中,試圖讓測試自動化起來,幾乎是不大現實的。原因不外有二:
1.我要想在游戲世界里刷出一個怪或要取得一個player的信息,如果我們的開發人員沒有暴露接口出來,請問,我們該怎么辦?
2.我們要做一個自動化體系,是我們自己再去開發一個新的系統呢?還是用原來的系統?如果開發一個新系統,那么我可以告訴你,國內幾乎沒有那個項目老大允許你這么做,運營期的游戲,最重要是一個持續穩定,如果你插入你的開發量進去,我可以明確的告訴你,你會完全打亂你老大的計劃。那好,那我們在原來的系統上改吧?對這一點,我相信有經驗的同學都知道,去改別人的代碼的效率遠遠低于自己開發的效率(如果是小改動,可能是達不到自動化的效果的)。
這2個原因是阻礙游戲自動化的主要因素,當然還有其他因素,比如對項目組對測試認識方面等等的問題,這些我不在這里討論,這里只說說技術上的需求。
這一篇,我將會從游戲架構設計上大概談談,游戲自動化對架構的需求,下一篇會說說,成熟運營的游戲自動化可以做些什么。
在項目風格基本確定后,就是程序架構的設計了,如果在這個時候不考慮到測試的一些需求的話,那后期做起來就會很難。
一般來說,游戲設計分3大塊:1.數據庫設計。2游戲邏輯server。3 游戲的邏輯client。這里的server是廣義的server,不同公司的設計是不一樣的,不細分。游戲client就是指平時我們運行的,可以實際“玩”的游戲,運行在我們玩家的pc機上的可執行程序。
對于我們測試來說,其實可以把數據庫獨立出來,數據庫和游戲的交互無非就是存取修改操作。在不考慮的性能情況下,自動化測試可以不考慮數據庫,當然對于數據安全性等的操作其實屬于策略問題。
其實我們實際做的自動化測試主要是游戲server的實際運行和與client的交互。這里再強調一下,自動化的本質是為了提高測試效率,所以我們只讓計算機做他適合做的事情,而不是把所有的測試都交給計算機,那可能就本末倒置了,反而是為了自動化而自動化,沒意義。
原文轉自:http://www.anti-gravitydesign.com